diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index 29f920f4f..000000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- // Use IntelliSense to learn about possible attributes.
- // Hover to view descriptions of existing attributes.
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
- {
- "type": "node",
- "request": "launch",
- "name": "Launch Program",
- "program": "${workspaceFolder}/www/index.html"
- }
- ]
-}
\ No newline at end of file
diff --git a/Gruntfile.js b/Gruntfile.js
index 7968f2510..9653c99b0 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -11,29 +11,8 @@ module.exports = function(grunt) {
appConfig: {
command: 'node ./util/buildAppConfig.js'
},
- android_studio: {
- command: ' open -a open -a /Applications/Android\\ Studio.app platforms/android',
- },
- build_android_debug: {
- command: 'cordova prepare android && cordova build android --debug',
- },
- build_android_release: {
- command: 'cordova prepare android && cordova build android --release',
- },
- build_ios_debug: {
- command: 'cordova prepare ios && cordova build ios --debug',
- options: {
- maxBuffer: 3200 * 1024
- }
- },
- build_ios_release: {
- command: 'cordova prepare ios && cordova build ios --release',
- options: {
- maxBuffer: 1600 * 1024
- }
- },
- chrome: {
- command: 'make -C chrome-app '
+ externalServices: {
+ command: 'node ./util/buildExternalServices.js'
},
clean: {
command: 'rm -Rf bower_components node_modules'
@@ -41,41 +20,14 @@ module.exports = function(grunt) {
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'
},
- create_dmg_dist: {
- command: 'sh webkitbuilds/create-dmg-dist.sh "<%= pkg.name %>" "<%= pkg.fullVersion %>" "<%= pkg.nameCaseNoSpace %>" "<%= pkg.title %>"'
- },
- create_others_dist: {
- command: 'sh webkitbuilds/create-others-dist.sh "<%= pkg.name %>" "<%= pkg.fullVersion %>" "<%= pkg.nameCaseNoSpace %>" "<%= pkg.title %>"'
- },
- create_pkg_dist: {
- command: 'sh webkitbuilds/create-pkg-dist.sh "<%= pkg.name %>" "<%= pkg.fullVersion %>" "<%= pkg.nameCaseNoSpace %>" "<%= pkg.title %>"'
- },
- externalServices: {
- command: 'node ./util/buildExternalServices.js'
- },
- get_nwjs_for_pkg: {
- command: 'if [ ! -d ./cache/0.19.5-pkg/osx64/nwjs.app ]; then cd ./cache; curl https://dl.nwjs.io/v0.19.5-mas-beta/nwjs-mas-v0.19.5-osx-x64.zip --output nwjs.zip; unzip nwjs.zip; mkdir -p ./0.19.5-pkg/osx64; cp -R ./nwjs-mas-v0.19.5-osx-x64/nwjs.app ./0.19.5-pkg/osx64/; fi'
- },
- log_android: {
- command: 'adb logcat | grep chromium',
- },
- run_android: {
- command: 'cordova run android --device',
- },
- run_android_emulator: {
- command: 'cordova run android --emulator',
- },
- sign_android: {
- // When the build log outputs "Built the following apk(s):", it seems to need the filename to start with "android-release".
- // It looks like it simply lists all apk files starting with "android-release"
- command: 'rm -f platforms/android/build/outputs/apk/android-release-signed-*.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../bitcoin-com-release-key.jks -signedjar platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-unsigned.apk bitcoin-com && zipalign -v 4 platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/bitcoin-com-wallet-<%= pkg.fullVersion %>-android-signed-aligned.apk',
- stdin: true,
- },
- sign_desktop_dist: {
- command: 'sh webkitbuilds/sign-desktop-dist.sh "<%= pkg.name %>" "<%= pkg.fullVersion %>"'
+ chrome: {
+ command: 'make -C chrome-app '
},
wpinit: {
command: 'make -C cordova wp-init',
@@ -83,9 +35,40 @@ module.exports = function(grunt) {
wpcopy: {
command: 'make -C cordova wp-copy',
},
+ iosdebug: {
+ command: 'npm run build:ios',
+ },
+ ios: {
+ command: 'npm run build:ios-release',
+ },
xcode: {
- command: 'open platforms/ios/*.xcodeproj',
- }
+ 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 ../bitcoin-com-release-key.jks -signedjar cordova/project/platforms/android/build/outputs/apk/android-release-signed.apk cordova/project/platforms/android/build/outputs/apk/android-release-unsigned.apk bitcoin-com && ../android-sdk-macosx/build-tools/27.0.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 E0AE67E7 --output webkitbuilds/<%= pkg.title %>-linux.zip.sig --detach-sig webkitbuilds/<%= pkg.title %>-linux.zip ; gpg -u E0AE67E7 --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 E0AE67E7 --output webkitbuilds/<%= pkg.title %>.dmg.sig --detach-sig webkitbuilds/<%= pkg.title %>.dmg'
+ },
},
watch: {
options: {
@@ -141,7 +124,6 @@ module.exports = function(grunt) {
},
angular: {
src: [
- 'src/shim/shim.js',
'bower_components/qrcode-generator/js/qrcode.js',
'bower_components/qrcode-generator/js/qrcode_UTF8.js',
'bower_components/moment/min/moment-with-locales.js',
@@ -166,33 +148,15 @@ module.exports = function(grunt) {
],
dest: 'www/lib/bitcoin-cash-js.js'
},
- bitanalytics: {
- src: [
- 'bitanalytics/bitanalytics.js'
- ],
- dest: 'www/lib/bitanalytics.js'
- },
js: {
src: [
'src/js/app.js',
'src/js/routes.js',
- 'src/js/decorators/*.js',
-
'src/js/directives/*.js',
- '!src/js/directives/*.spec.js',
-
'src/js/filters/*.js',
- '!src/js/filters/*.spec.js',
-
'src/js/models/*.js',
- '!src/js/models/*.spec.js',
-
'src/js/services/*.js',
- '!src/js/services/*.spec.js',
-
'src/js/controllers/**/*.js',
- '!src/js/controllers/**/*.spec.js',
-
'src/js/translations.js',
'src/js/appConfig.js',
'src/js/externalServices.js',
@@ -213,8 +177,7 @@ module.exports = function(grunt) {
files: {
'www/js/app.js': ['www/js/app.js'],
'www/lib/angular-components.js': ['www/lib/angular-components.js'],
- 'www/lib/bitcoin-cash-js.js': ['www/lib/bitcoin-cash-js.js'],
- 'www/lib/bitanalytics.js': ['www/lib/bitanalytics.js']
+ 'www/lib/bitcoin-cash-js.js': ['www/lib/bitcoin-cash-js.js']
}
}
},
@@ -237,7 +200,7 @@ module.exports = function(grunt) {
module: 'copayApp'
},
files: {
- 'src/js/translations.js': ['i18n/po/**/*.po']
+ 'src/js/translations.js': ['i18n/po/*.po']
}
},
},
@@ -259,78 +222,38 @@ module.exports = function(grunt) {
expand: true,
cwd: 'webkitbuilds/',
src: ['.desktop', '../www/img/app/favicon.ico', '../resources/<%= pkg.name %>/linux/512x512.png'],
- dest: 'webkitbuilds/others/<%= pkg.title %>/linux64/',
+ dest: 'webkitbuilds/<%= pkg.title %>/linux64/',
flatten: true,
filter: 'isFile'
}],
}
},
nwjs: {
- others: {
- options: {
- appName: '<%= pkg.nameCaseNoSpace %>',
- platforms: ['win64', 'linux64'],
- buildDir: './webkitbuilds/others',
- version: '0.19.5',
- exeIco: './www/img/app/logo.ico'
- },
- src: ['./package.json', './www/**/*']
- },
- dmg: {
- options: {
- appName: '<%= pkg.nameCaseNoSpace %>',
- platforms: ['osx64'],
- buildDir: './webkitbuilds/dmg',
- version: '0.19.5',
- macIcns: './resources/<%= pkg.name %>/mac/app.icns',
- exeIco: './www/img/app/logo.ico',
- macPlist: {
- 'CFBundleDisplayName': '<%= pkg.title %>',
- 'CFBundleShortVersionString': '<%= pkg.version %>',
- 'CFBundleVersion': '<%= pkg.androidVersion %>',
- 'LSApplicationCategoryType': 'public.app-category.finance',
- 'CFBundleURLTypes': [
- {
- 'CFBundleURLName': 'URI Handler',
- 'CFBundleURLSchemes': ['bitcoin', '<%= pkg.name %>']
- }
- ]
- }
- },
- src: ['./package.json', './www/**/*']
- },
- pkg: {
- options: {
- appName: '<%= pkg.title %>',
- platforms: ['osx64'],
- buildDir: './webkitbuilds/pkg',
- version: '0.19.4',
- macIcns: './resources/<%= pkg.name %>/mac/pkg/app.icns',
- exeIco: './www/img/app/logo.ico',
- macPlist: {
- 'CFBundleIdentifier': 'com.bitcoin.mwallet.mac',
- 'CFBundleDisplayName': '<%= pkg.title %>',
- 'CFBundleShortVersionString': '<%= pkg.version %>',
- 'CFBundleVersion': '<%= pkg.androidVersion %>',
- 'LSApplicationCategoryType': 'public.app-category.finance',
- 'CFBundleURLTypes': [
- {
- 'CFBundleURLName': 'URI Handler',
- 'CFBundleURLSchemes': ['bitcoin', '<%= pkg.name %>']
- }
- ]
- }
- },
- src: ['./package.json', './www/**/*']
+ 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/others/<%= pkg.title %>-linux.zip'
+ archive: './webkitbuilds/<%= pkg.title %>-linux.zip'
},
expand: true,
- cwd: './webkitbuilds/others/<%= pkg.title %>/linux64/',
+ cwd: './webkitbuilds/<%= pkg.title %>/linux64/',
src: ['**/*'],
dest: '<%= pkg.title %>-linux/'
}
@@ -349,53 +272,20 @@ module.exports = function(grunt) {
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', ['default','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']);
- // Build all
- grunt.registerTask('build-app-release', ['build-mobile-release', 'build-desktop-release']);
-
- /**
- * Mobile app
- */
-
- // Build mobile app
- grunt.registerTask('build-mobile-release', ['build-ios-release', 'build-android-release']);
-
- // Build ios
- grunt.registerTask('start-ios', ['default', 'exec:build_ios_debug', 'exec:xcode']);
- grunt.registerTask('build-ios-debug', ['default', 'exec:build_ios_debug']);
- grunt.registerTask('build-ios-release', ['prod', 'exec:build_ios_release']);
-
- // Build android
- grunt.registerTask('start-android', ['build-android-debug', 'exec:run_android']);
- grunt.registerTask('build-android-debug', ['default', 'exec:build_android_debug']);
- grunt.registerTask('start-android-emulator', ['build-android-debug', 'exec:run_android_emulator']);
- grunt.registerTask('build-android-release', ['prod', 'exec:build_android_release', 'sign-android']);
- grunt.registerTask('sign-android', ['exec:sign_android']);
-
- /**
- * Desktop app
- */
-
- // Build desktop
- grunt.registerTask('build-desktop', ['build-desktop-others', 'build-desktop-osx-dmg', 'build-desktop-osx-pkg']);
-
- // Build desktop win64 & linux64
- grunt.registerTask('build-desktop-others', ['prod', 'nwjs:others', 'copy:linux', 'exec:create_others_dist']);
-
- // Build desktop osx pkg
- grunt.registerTask('build-desktop-osx-pkg', ['prod', 'exec:get_nwjs_for_pkg', 'nwjs:pkg', 'exec:create_pkg_dist']);
-
- // Build desktop osx dmg
- grunt.registerTask('build-desktop-osx-dmg', ['prod', 'nwjs:dmg', 'exec:create_dmg_dist']);
-
- // Sign desktop
- grunt.registerTask('sign-desktop', ['exec:sign_desktop_dist']);
-
- // Release desktop
- grunt.registerTask('build-desktop-release', ['build-desktop', 'sign-desktop']);
};
diff --git a/README.md b/README.md
index ae2788217..db5599552 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,3 @@
-This is a fork of the Bitcoin.com wallet to add additional features.
-Features included:
-
- - Zero fee transactions (only works for Bitcoin Cash). You will be asked for, if you want to send a transaction as zero fee on the confirmation page.
-
- ## Zero fee transactions:
- Because most network nodes on the Bitcoin Cash network don't relay zero fee txs, you will experience some strange issues, but don't worry: for me personally the Bitcoin.com pool has included all my zero fee transactions, but please beware that the receiver probably won't see your tx before it has been confirmed and please do also keep in mind, that the transactions coming after it won't confirm or be seen before the zero fee one has been confirmed.
-
- If you do already have a Bitcoin.com wallet, you need to create a new one to use this feature or change the wallet URL to: https://bws.freepages.dk/bws/api
-
- ## Disclaimer
-
- Please beware this is my personal experimental project. You are more than welcome to play with it, but I don't take any responsibility of loss of funds due to errors in the code, so please make sure you made a backup before running this software.
-
- ## Builds
-
- You can build the software yourself using the instructions below or use prebuilt binaries which can be found here (currently Windows and Linux only): https://ipfs.io/ipfs/QmR1DaS3QsDS48SzAWKUWFfmtMfJc4tgMtkSk3JFmuzewe
-
- ##
-
-
The Bitcoin.com wallet is a fork of the Copay Wallet (https://github.com/bitpay/copay).
The Bitcoin.com wallet is a secure bitcoin wallet platform for both desktop and mobile devices. It uses [Bitcore Wallet Service](https://github.com/Bitcoin-com/bitcore-wallet-service) (our fork of the [Bitpay Bitcore Wallet Service](https://github.com/bitpay/bitcore-wallet-service)) (BWS) for peer synchronization and network interfacing.
@@ -126,7 +105,7 @@ The desktop version of the Bitcoin.com wallet currently uses NW.js, an app runti
When NW.js is installed, run the `start:desktop` npm package script.
```sh
-npm run apply:bitcoincom
+npm run apply:bitcoin.com
npm run start:desktop
```
@@ -134,14 +113,14 @@ npm run start:desktop
Before building the release version for a platform, run the `clean-all` command to delete any untracked files in your current working directory. (Be sure to stash any uncommited changes you've made.) This guarantees consistency across builds for the current state of this repository.
-The `build:*-release` commands build the production version of the app, and bundle it with the release version of the platform being built.
+The `final` commands build the production version of the app, and bundle it with the release version of the platform being built.
### Android
```sh
npm run clean-all
npm run apply:bitcoincom
-npm run build:android-release
+npm run final:android
```
### iOS
@@ -149,7 +128,7 @@ npm run build:android-release
```sh
npm run clean-all
npm run apply:bitcoincom
-npm run build:ios-release
+npm run final:ios
```
### Desktop (Linux, macOS, and Windows)
@@ -157,7 +136,7 @@ npm run build:ios-release
```sh
npm run clean-all
npm run apply:bitcoincom
-npm run build:desktop-release
+npm run final:desktop
```
## About The Bitcoin.com Wallet
diff --git a/app-template/apply.js b/app-template/apply.js
index 143cf57a8..1aaee94de 100755
--- a/app-template/apply.js
+++ b/app-template/apply.js
@@ -11,10 +11,7 @@ var templates = {
'ionic.config.json': '/',
'.desktop': 'webkitbuilds/',
'setup-win.iss': 'webkitbuilds/',
- 'create-dmg-dist.sh': 'webkitbuilds/',
- 'create-others-dist.sh': 'webkitbuilds/',
- 'create-pkg-dist.sh': 'webkitbuilds/',
- 'sign-desktop-dist.sh': 'webkitbuilds/',
+ 'build-macos.sh': 'webkitbuilds/',
'manifest.json': 'chrome-app/',
// 'bower.json': '/',
};
diff --git a/app-template/bitcoincom/appConfig.json b/app-template/bitcoincom/appConfig.json
index 2eab6232d..b87f3dbd2 100644
--- a/app-template/bitcoincom/appConfig.json
+++ b/app-template/bitcoincom/appConfig.json
@@ -2,7 +2,7 @@
"packageName": "bitcoin.com",
"packageDescription": "Bitcoin.com Wallet",
"packageNameId": "com.bitcoin.mwallet",
- "userVisibleName": "Bitcoin.com Wallet",
+ "userVisibleName": "Bitcoin.com",
"purposeLine": "Bitcoin.com Wallet",
"bundleName": "bitcoincom",
"appUri": "bitcoincom",
@@ -18,15 +18,14 @@
"appDescription": "Bitcoin.com Wallet",
"winAppName": "BitcoinWallet",
"WindowsStoreIdentityName": "18C7659D.Bitcoin.com-SecureBitcoinWallet",
- "WindowsStoreDisplayName": "Bitcoin.com Wallet",
+ "WindowsStoreDisplayName": "Bitcoin.com - Secure Bitcoin Wallet",
"wpPublisherId": "{31cdd08b-457c-413d-b440-f6665eec847d}",
"wpProductId": "{5381aa50-9069-11e4-84cc-293caf9cbdc8}",
"windowsAppId": "804636ee-b017-4cad-8719-e58ac97ffa5c",
"pushSenderId": "1036948132229",
"description": "A Secure Bitcoin Wallet",
- "version": "5.1.3",
- "fullVersion": "5.1-rc2",
- "androidVersion": "501003",
+ "version": "4.10.1",
+ "androidVersion": "410100",
"_extraCSS": "",
"_enabledExtensions": {
"coinbase": false,
diff --git a/app-template/bitcoincom/css/bitcoin.com.css b/app-template/bitcoincom/css/bitcoin.com.css
index cb20ff48d..e9b316761 100644
--- a/app-template/bitcoincom/css/bitcoin.com.css
+++ b/app-template/bitcoincom/css/bitcoin.com.css
@@ -268,33 +268,5 @@ div.onboarding-topic {
display: block;
float: left;
max-height: 100%;
- max-width: 100%;
-}
-
-.bitpay-banner {
- background: #1A3A8B;
- padding: 10px;
- box-shadow: 0px 5px 10px 0px #cccccc;
- height: 5em;
-}
-
-.bitpay-logo {
- display: block;
- max-height: 100%;
- width: 100%;
- height: 4em;
-}
-
-.egifter-banner {
- background: #1A3A8B;
- padding: 10px;
- box-shadow: 0px 5px 10px 0px #cccccc;
- height: 5em;
- text-align: center;
-}
-
-.egifter-logo {
- max-height: 100%;
- max-width: 100%;
- height: 4em;
+ max-width: 100%;
}
diff --git a/app-template/create-dmg-dist.sh b/app-template/build-macos.sh
old mode 100644
new mode 100755
similarity index 84%
rename from app-template/create-dmg-dist.sh
rename to app-template/build-macos.sh
index 5b004e66a..5f09bd0b2
--- a/app-template/create-dmg-dist.sh
+++ b/app-template/build-macos.sh
@@ -1,5 +1,11 @@
#!/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/
@@ -10,25 +16,21 @@ if [ -d "$dir" ]; then
fi
# set up your app name, architecture, and background image file name
-APP_PACKAGE=$1
-APP_VERSION=$2
-APP_NAME=$3
-APP_FULLNAME=$4
-
+APP_NAME="*USERVISIBLENAME*"
rm dmg-background.tiff
-ln -s ../resources/bitcoin.com/mac/dmg-background.tiff dmg-background.tiff
+ln -s ../resources/*PACKAGENAME*/mac/dmg-background.tiff dmg-background.tiff
rm volume-icon.icns
-ln -s ../resources/bitcoin.com/mac/volume-icon.icns 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="dmg/${APP_NAME}/osx64/"
+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="dmg/${VOL_NAME}-temp.dmg"
-DMG_FINAL="dmg/${VOL_NAME}.dmg"
+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
@@ -64,6 +66,25 @@ 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
@@ -154,14 +175,6 @@ hdiutil detach "${DEVICE}"
echo "Creating compressed image"
hdiutil convert "${DMG_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FINAL}"
-export DIST_PATH="dist"
-
-if [ ! -d $DIST_PATH ]; then
- mkdir $DIST_PATH
-fi
-
-cp -vR "${DMG_FINAL}" "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.dmg"
-
# clean up
rm -rf "${DMG_TMP}"
rm -rf "${STAGING_DIR}"
diff --git a/app-template/config-template.xml b/app-template/config-template.xml
index 8686b7b36..8031c8110 100644
--- a/app-template/config-template.xml
+++ b/app-template/config-template.xml
@@ -72,9 +72,6 @@
-
-
-
@@ -85,12 +82,6 @@
-
-
-
-
-
-
@@ -108,7 +99,6 @@
-
diff --git a/app-template/create-others-dist.sh b/app-template/create-others-dist.sh
deleted file mode 100644
index c9244b3ba..000000000
--- a/app-template/create-others-dist.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-
-# 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_PACKAGE=$1
-APP_VERSION=$2
-APP_NAME=$3
-APP_FULLNAME=$4
-
-export APP_LINUX_PATH="others/${APP_NAME}/linux64"
-export APP_WIN_PATH="others/${APP_NAME}/win64"
-export DIST_PATH="dist"
-
-if [ ! -d $DIST_PATH ]; then
- mkdir $DIST_PATH
-fi
-
-##
-# LINUX
-
-echo "Building Linux..."
-
-# Building package
-cp -R $APP_LINUX_PATH bitcoin-com-wallet
-tar -cvzf "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-linux-x64.tar.gz" bitcoin-com-wallet
-
-# Clean
-rm -R bitcoin-com-wallet
-
-echo "Linux Done."
-
-
-##
-# WINDOWS
-
-echo "Building Windows..."
-
-# Building package
-cp -R $APP_WIN_PATH bitcoin-com-wallet
-zip -r "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-win-x64.zip" bitcoin-com-wallet
-
-# Clean
-rm -R bitcoin-com-wallet
-
-echo "Windows Done."
-
-echo "Done."
-
-exit
diff --git a/app-template/create-pkg-dist.sh b/app-template/create-pkg-dist.sh
deleted file mode 100644
index 66fe589d0..000000000
--- a/app-template/create-pkg-dist.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/bash
-
-# 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_PACKAGE=$1
-APP_VERSION=$2
-APP_NAME=$3
-APP_FULLNAME=$4
-
-rm entitlements-child.plist
-ln -s ../resources/bitcoin.com/mac/pkg/entitlements-child.plist entitlements-child.plist
-
-rm entitlements-parent.plist
-ln -s ../resources/bitcoin.com/mac/pkg/entitlements-parent.plist entitlements-parent.plist
-
-rm build.cfg
-ln -s ../resources/bitcoin.com/mac/pkg/build.cfg build.cfg
-
-rm build_mas.py
-ln -s ../resources/bitcoin.com/mac/pkg/build_mas.py build_mas.py
-
-echo "Signing ${APP_FULLNAME}"
-export CURRENT_PATH=`pwd`
-export APP_PATH="pkg/${APP_FULLNAME}/osx64/${APP_FULLNAME}"
-export TMP_PATH="tmp"
-export DIST_PATH="dist"
-
-rm -rf $TMP_PATH
-mkdir $TMP_PATH
-
-if [ ! -d $DIST_PATH ]; then
- mkdir $DIST_PATH
-fi
-
-cd "${APP_PATH}.app/Contents/Versions"
-ln -s "55.0.2883.87" "Current"
-
-cd $CURRENT_PATH
-chmod -vR 777 "${APP_PATH}.app/Contents"
-
-python build_mas.py -C build.cfg -O "${TMP_PATH}/${APP_FULLNAME}.app" -I "${APP_PATH}.app" -P "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.pkg"
-
-echo "Signing Done"
-
-echo "Done."
-
-exit
\ No newline at end of file
diff --git a/app-template/index.html b/app-template/index.html
index fe5262f52..2946d7928 100644
--- a/app-template/index.html
+++ b/app-template/index.html
@@ -11,7 +11,7 @@
-
*USERVISIBLENAME*
+ *USERVISIBLENAME* - *PURPOSELINE*
@@ -31,7 +31,6 @@
-
diff --git a/app-template/package-template.json b/app-template/package-template.json
index 11b15bfcd..955e33e7e 100644
--- a/app-template/package-template.json
+++ b/app-template/package-template.json
@@ -3,8 +3,6 @@
"description": "*DESCRIPTION*",
"author": "BitPay",
"version": "*VERSION*",
- "androidVersion": "*ANDROIDVERSION*",
- "fullVersion": "*FULLVERSION*",
"keywords": [
"bitcoin",
"wallet",
@@ -15,9 +13,8 @@
],
"main": "www/index.html",
"title": "*USERVISIBLENAME*",
- "nameCaseNoSpace": "*NAMECASENOSPACE*",
"window": {
- "title": "*USERVISIBLENAME*",
+ "title": "*USERVISIBLENAME* - *PURPOSELINE*",
"icon": "www/img/app/icon.png",
"toolbar": false,
"show": true,
@@ -71,8 +68,6 @@
"grunt-angular-gettext": "^2.2.3",
"grunt-browserify": "^5.0.0",
"grunt-cli": "^1.2.0",
- "grunt-curl": "^2.4.1",
- "grunt-zip": "^0.17.1",
"grunt-contrib-compress": "^1.3.0",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-copy": "^1.0.0",
@@ -84,68 +79,52 @@
"load-grunt-tasks": "^3.5.0",
"shelljs": "^0.3.0",
"android-versions": "^1.2.1",
- "bitcoincashjs-fork": "^1.0.3"
+ "bitcoincashjs": "^0.1.7"
},
"scripts": {
- "apply:bitcoincom": "npm i fs-extra && cd app-template && node apply.js bitcoincom && npm i && cordova prepare && cd ../ && ./fix-asn1.sh",
-
- "build:app-release": "grunt build-app-release",
-
- "build:mobile-release": "grunt build-mobile-release",
- "build:desktop-release": "grunt build-desktop-release",
-
- "build:android-debug": "grunt build-android-debug",
- "build:android-release": "grunt build-android-release",
-
- "build:ios-debug": "grunt build-ios-debug",
- "build:ios-release": "grunt build-ios-release",
-
- "build:desktop": "grunt build-desktop",
- "build:osx-pkg": "grunt build-desktop-osx-pkg",
- "build:osx-dmg": "grunt build-desktop-osx-dmg",
- "build:others": "grunt build-desktop-others",
-
- "build:windows": "cordova prepare windows && cordova build windows -- --arch=\"ARM\"",
- "build:windows-release": "cordova prepare windows && cordova build windows --release --arch=\"ARM\"",
+ "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",
-
- "clean": "trash platforms && trash plugins && cordova prepare",
- "clean-all": "git clean -dfx",
-
+ "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",
-
- "open:android": "grunt exec:android_studio",
- "open:ios": "grunt exec:xcode",
-
- "postinstall": "bower install",
-
- "sign:android": "grunt sign-android",
- "sign:desktop": "grunt sign-desktop",
-
- "start": "npm run build:www && ionic serve --nolivereload --nogulp -s --address 0.0.0.0",
- "start:chrome": "npm run build:www && ionic serve --nolivereload --nogulp -s --address 0.0.0.0 --browser \"google chrome\"",
- "start:android": "grunt start-android",
- "start:android-emulator": "grunt start-android",
- "start:android-log": "grunt start-android && npm run log:android",
- "start:ios": "grunt start-ios",
- "start:windows": "npm run build:www && npm run build:windows",
-
- "test": "karma start test/karma.conf.js --single-run",
+ "sign:android": "rm -f platforms/android/build/outputs/apk/android-release-signed-aligned.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../bitcoin-com-release-key.jks -signedjar platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-unsigned.apk bitcoin-com && $ANDROID_HOME/build-tools/27.0.1/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",
+ "apply:bitcoincom": "npm i fs-extra && cd app-template && node apply.js bitcoincom && npm i && cordova prepare",
+ "test": "echo \"no package tests configured\"",
+ "clean": "trash platforms && trash plugins && cordova prepare",
"unstage-package": "git reset package.json",
- "watch": "grunt watch"
+ "clean-all": "git clean -dfx"
},
"devDependencies": {
"cordova": "^6.3.1",
"grunt": "^1.0.1",
"ionic": "^3.6.0",
- "jasmine-core": "^3.1.0",
- "karma": "^2.0.2",
- "karma-chrome-launcher": "^2.2.0",
- "karma-jasmine": "^1.1.2",
"trash-cli": "^1.4.0",
"lodash": "^4.17.4",
"pre-commit": "^1.1.3"
},
"pre-commit": "unstage-package"
-}
+}
\ No newline at end of file
diff --git a/app-template/sign-desktop-dist.sh b/app-template/sign-desktop-dist.sh
deleted file mode 100644
index e1e5c603c..000000000
--- a/app-template/sign-desktop-dist.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-# make sure we are in the correct dir when we double-click a .command file
-dir=${0%/*}
-if [ -d "$dir" ]; then
- cd "$dir"
-fi
-
-APP_PACKAGE=$1
-APP_VERSION=$2
-export DIST_PATH="dist"
-
-##
-# INIT GPG (YOU NEED THE PRIVATE KEY CONNECTED TO YOUR DESKTOP)
-# gpg --card-edit
-
-##
-# LINUX
-
-# Sig tar.gz
-gpg --yes --output "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-linux-x64.tar.gz.sig" --detach-sig "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-linux-x64.tar.gz"
-gpg --verify "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-linux-x64.tar.gz.sig" "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-linux-x64.tar.gz"
-
-##
-# WINDOWS
-
-# Sig zip
-gpg --yes --output "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-win-x64.zip.sig" --detach-sig "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-win-x64.zip"
-gpg --verify "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-win-x64.zip.sig" "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-win-x64.zip"
-
-##
-# OSX
-
-# Sig dmg
-gpg --yes --output "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.dmg.sig" --detach-sig "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.dmg"
-gpg --verify "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.dmg.sig" "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.dmg"
-
-# Sig pkg
-gpg --yes --output "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.pkg.sig" --detach-sig "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.pkg"
-gpg --verify "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.pkg.sig" "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.pkg"
\ No newline at end of file
diff --git a/bitanalytics/bitanalytics.js b/bitanalytics/bitanalytics.js
deleted file mode 100644
index d04b2a0bd..000000000
--- a/bitanalytics/bitanalytics.js
+++ /dev/null
@@ -1,7063 +0,0 @@
-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitanalytics = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i /g, '>')
- .replace(/"/g, '"')
- .replace(/'/g, ''');
- }
- return escaped;
-};
-
-_.extend = function(obj) {
- _.each(slice.call(arguments, 1), function(source) {
- for (var prop in source) {
- if (source[prop] !== void 0) {
- obj[prop] = source[prop];
- }
- }
- });
- return obj;
-};
-
-_.isArray = nativeIsArray || function(obj) {
- return toString.call(obj) === '[object Array]';
-};
-
-// from a comment on http://dbj.org/dbj/?p=286
-// fails on only one very rare and deliberate custom object:
-// var bomb = { toString : undefined, valueOf: function(o) { return "function BOMBA!"; }};
-_.isFunction = function(f) {
- try {
- return /^\s*\bfunction\b/.test(f);
- } catch (x) {
- return false;
- }
-};
-
-_.isArguments = function(obj) {
- return !!(obj && hasOwnProperty.call(obj, 'callee'));
-};
-
-_.toArray = function(iterable) {
- if (!iterable) {
- return [];
- }
- if (iterable.toArray) {
- return iterable.toArray();
- }
- if (_.isArray(iterable)) {
- return slice.call(iterable);
- }
- if (_.isArguments(iterable)) {
- return slice.call(iterable);
- }
- return _.values(iterable);
-};
-
-_.keys = function(obj) {
- var results = [];
- if (obj === null) {
- return results;
- }
- _.each(obj, function(value, key) {
- results[results.length] = key;
- });
- return results;
-};
-
-_.values = function(obj) {
- var results = [];
- if (obj === null) {
- return results;
- }
- _.each(obj, function(value) {
- results[results.length] = value;
- });
- return results;
-};
-
-_.identity = function(value) {
- return value;
-};
-
-_.include = function(obj, target) {
- var found = false;
- if (obj === null) {
- return found;
- }
- if (nativeIndexOf && obj.indexOf === nativeIndexOf) {
- return obj.indexOf(target) != -1;
- }
- _.each(obj, function(value) {
- if (found || (found = (value === target))) {
- return breaker;
- }
- });
- return found;
-};
-
-_.includes = function(str, needle) {
- return str.indexOf(needle) !== -1;
-};
-
-// Underscore Addons
-_.inherit = function(subclass, superclass) {
- subclass.prototype = new superclass();
- subclass.prototype.constructor = subclass;
- subclass.superclass = superclass.prototype;
- return subclass;
-};
-
-_.isObject = function(obj) {
- return (obj === Object(obj) && !_.isArray(obj));
-};
-
-_.isEmptyObject = function(obj) {
- if (_.isObject(obj)) {
- for (var key in obj) {
- if (hasOwnProperty.call(obj, key)) {
- return false;
- }
- }
- return true;
- }
- return false;
-};
-
-_.isUndefined = function(obj) {
- return obj === void 0;
-};
-
-_.isString = function(obj) {
- return toString.call(obj) == '[object String]';
-};
-
-_.isDate = function(obj) {
- return toString.call(obj) == '[object Date]';
-};
-
-_.isNumber = function(obj) {
- return toString.call(obj) == '[object Number]';
-};
-
-_.isElement = function(obj) {
- return !!(obj && obj.nodeType === 1);
-};
-
-_.encodeDates = function(obj) {
- _.each(obj, function(v, k) {
- if (_.isDate(v)) {
- obj[k] = _.formatDate(v);
- } else if (_.isObject(v)) {
- obj[k] = _.encodeDates(v); // recurse
- }
- });
- return obj;
-};
-
-_.timestamp = function() {
- Date.now = Date.now || function() {
- return +new Date;
- };
- return Date.now();
-};
-
-_.formatDate = function(d) {
- // YYYY-MM-DDTHH:MM:SS in UTC
- function pad(n) {
- return n < 10 ? '0' + n : n;
- }
- return d.getUTCFullYear() + '-' +
- pad(d.getUTCMonth() + 1) + '-' +
- pad(d.getUTCDate()) + 'T' +
- pad(d.getUTCHours()) + ':' +
- pad(d.getUTCMinutes()) + ':' +
- pad(d.getUTCSeconds());
-};
-
-_.safewrap = function(f) {
- return function() {
- try {
- return f.apply(this, arguments);
- } catch (e) {
- console$1.critical('Implementation error. Please turn on debug and contact support@mixpanel.com.');
- if (Config.DEBUG){
- console$1.critical(e);
- }
- }
- };
-};
-
-_.safewrap_class = function(klass, functions) {
- for (var i = 0; i < functions.length; i++) {
- klass.prototype[functions[i]] = _.safewrap(klass.prototype[functions[i]]);
- }
-};
-
-_.safewrap_instance_methods = function(obj) {
- for (var func in obj) {
- if (typeof(obj[func]) === 'function') {
- obj[func] = _.safewrap(obj[func]);
- }
- }
-};
-
-_.strip_empty_properties = function(p) {
- var ret = {};
- _.each(p, function(v, k) {
- if (_.isString(v) && v.length > 0) {
- ret[k] = v;
- }
- });
- return ret;
-};
-
-/*
- * this function returns a copy of object after truncating it. If
- * passed an Array or Object it will iterate through obj and
- * truncate all the values recursively.
- */
-_.truncate = function(obj, length) {
- var ret;
-
- if (typeof(obj) === 'string') {
- ret = obj.slice(0, length);
- } else if (_.isArray(obj)) {
- ret = [];
- _.each(obj, function(val) {
- ret.push(_.truncate(val, length));
- });
- } else if (_.isObject(obj)) {
- ret = {};
- _.each(obj, function(val, key) {
- ret[key] = _.truncate(val, length);
- });
- } else {
- ret = obj;
- }
-
- return ret;
-};
-
-_.JSONEncode = (function() {
- return function(mixed_val) {
- var value = mixed_val;
- var quote = function(string) {
- var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; // eslint-disable-line no-control-regex
- var meta = { // table of character substitutions
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"': '\\"',
- '\\': '\\\\'
- };
-
- escapable.lastIndex = 0;
- return escapable.test(string) ?
- '"' + string.replace(escapable, function(a) {
- var c = meta[a];
- return typeof c === 'string' ? c :
- '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- }) + '"' :
- '"' + string + '"';
- };
-
- var str = function(key, holder) {
- var gap = '';
- var indent = ' ';
- var i = 0; // The loop counter.
- var k = ''; // The member key.
- var v = ''; // The member value.
- var length = 0;
- var mind = gap;
- var partial = [];
- var value = holder[key];
-
- // If the value has a toJSON method, call it to obtain a replacement value.
- if (value && typeof value === 'object' &&
- typeof value.toJSON === 'function') {
- value = value.toJSON(key);
- }
-
- // What happens next depends on the value's type.
- switch (typeof value) {
- case 'string':
- return quote(value);
-
- case 'number':
- // JSON numbers must be finite. Encode non-finite numbers as null.
- return isFinite(value) ? String(value) : 'null';
-
- case 'boolean':
- case 'null':
- // If the value is a boolean or null, convert it to a string. Note:
- // typeof null does not produce 'null'. The case is included here in
- // the remote chance that this gets fixed someday.
-
- return String(value);
-
- case 'object':
- // If the type is 'object', we might be dealing with an object or an array or
- // null.
- // Due to a specification blunder in ECMAScript, typeof null is 'object',
- // so watch out for that case.
- if (!value) {
- return 'null';
- }
-
- // Make an array to hold the partial results of stringifying this object value.
- gap += indent;
- partial = [];
-
- // Is the value an array?
- if (toString.apply(value) === '[object Array]') {
- // The value is an array. Stringify every element. Use null as a placeholder
- // for non-JSON values.
-
- length = value.length;
- for (i = 0; i < length; i += 1) {
- partial[i] = str(i, value) || 'null';
- }
-
- // Join all of the elements together, separated with commas, and wrap them in
- // brackets.
- v = partial.length === 0 ? '[]' :
- gap ? '[\n' + gap +
- partial.join(',\n' + gap) + '\n' +
- mind + ']' :
- '[' + partial.join(',') + ']';
- gap = mind;
- return v;
- }
-
- // Iterate through all of the keys in the object.
- for (k in value) {
- if (hasOwnProperty.call(value, k)) {
- v = str(k, value);
- if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
- }
- }
- }
-
- // Join all of the member texts together, separated with commas,
- // and wrap them in braces.
- v = partial.length === 0 ? '{}' :
- gap ? '{' + partial.join(',') + '' +
- mind + '}' : '{' + partial.join(',') + '}';
- gap = mind;
- return v;
- }
- };
-
- // Make a fake root object containing our value under the key of ''.
- // Return the result of stringifying the value.
- return str('', {
- '': value
- });
- };
-})();
-
-/**
- * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
- * Slightly modified to throw a real Error rather than a POJO
- */
-_.JSONDecode = (function() {
- var at, // The index of the current character
- ch, // The current character
- escapee = {
- '"': '"',
- '\\': '\\',
- '/': '/',
- 'b': '\b',
- 'f': '\f',
- 'n': '\n',
- 'r': '\r',
- 't': '\t'
- },
- text,
- error = function(m) {
- var e = new SyntaxError(m);
- e.at = at;
- e.text = text;
- throw e;
- },
- next = function(c) {
- // If a c parameter is provided, verify that it matches the current character.
- if (c && c !== ch) {
- error('Expected \'' + c + '\' instead of \'' + ch + '\'');
- }
- // Get the next character. When there are no more characters,
- // return the empty string.
- ch = text.charAt(at);
- at += 1;
- return ch;
- },
- number = function() {
- // Parse a number value.
- var number,
- string = '';
-
- if (ch === '-') {
- string = '-';
- next('-');
- }
- while (ch >= '0' && ch <= '9') {
- string += ch;
- next();
- }
- if (ch === '.') {
- string += '.';
- while (next() && ch >= '0' && ch <= '9') {
- string += ch;
- }
- }
- if (ch === 'e' || ch === 'E') {
- string += ch;
- next();
- if (ch === '-' || ch === '+') {
- string += ch;
- next();
- }
- while (ch >= '0' && ch <= '9') {
- string += ch;
- next();
- }
- }
- number = +string;
- if (!isFinite(number)) {
- error('Bad number');
- } else {
- return number;
- }
- },
-
- string = function() {
- // Parse a string value.
- var hex,
- i,
- string = '',
- uffff;
- // When parsing for string values, we must look for " and \ characters.
- if (ch === '"') {
- while (next()) {
- if (ch === '"') {
- next();
- return string;
- }
- if (ch === '\\') {
- next();
- if (ch === 'u') {
- uffff = 0;
- for (i = 0; i < 4; i += 1) {
- hex = parseInt(next(), 16);
- if (!isFinite(hex)) {
- break;
- }
- uffff = uffff * 16 + hex;
- }
- string += String.fromCharCode(uffff);
- } else if (typeof escapee[ch] === 'string') {
- string += escapee[ch];
- } else {
- break;
- }
- } else {
- string += ch;
- }
- }
- }
- error('Bad string');
- },
- white = function() {
- // Skip whitespace.
- while (ch && ch <= ' ') {
- next();
- }
- },
- word = function() {
- // true, false, or null.
- switch (ch) {
- case 't':
- next('t');
- next('r');
- next('u');
- next('e');
- return true;
- case 'f':
- next('f');
- next('a');
- next('l');
- next('s');
- next('e');
- return false;
- case 'n':
- next('n');
- next('u');
- next('l');
- next('l');
- return null;
- }
- error('Unexpected "' + ch + '"');
- },
- value, // Placeholder for the value function.
- array = function() {
- // Parse an array value.
- var array = [];
-
- if (ch === '[') {
- next('[');
- white();
- if (ch === ']') {
- next(']');
- return array; // empty array
- }
- while (ch) {
- array.push(value());
- white();
- if (ch === ']') {
- next(']');
- return array;
- }
- next(',');
- white();
- }
- }
- error('Bad array');
- },
- object = function() {
- // Parse an object value.
- var key,
- object = {};
-
- if (ch === '{') {
- next('{');
- white();
- if (ch === '}') {
- next('}');
- return object; // empty object
- }
- while (ch) {
- key = string();
- white();
- next(':');
- if (Object.hasOwnProperty.call(object, key)) {
- error('Duplicate key "' + key + '"');
- }
- object[key] = value();
- white();
- if (ch === '}') {
- next('}');
- return object;
- }
- next(',');
- white();
- }
- }
- error('Bad object');
- };
-
- value = function() {
- // Parse a JSON value. It could be an object, an array, a string,
- // a number, or a word.
- white();
- switch (ch) {
- case '{':
- return object();
- case '[':
- return array();
- case '"':
- return string();
- case '-':
- return number();
- default:
- return ch >= '0' && ch <= '9' ? number() : word();
- }
- };
-
- // Return the json_parse function. It will have access to all of the
- // above functions and variables.
- return function(source) {
- var result;
-
- text = source;
- at = 0;
- ch = ' ';
- result = value();
- white();
- if (ch) {
- error('Syntax error');
- }
-
- return result;
- };
-})();
-
-_.base64Encode = function(data) {
- var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
- var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
- ac = 0,
- enc = '',
- tmp_arr = [];
-
- if (!data) {
- return data;
- }
-
- data = _.utf8Encode(data);
-
- do { // pack three octets into four hexets
- o1 = data.charCodeAt(i++);
- o2 = data.charCodeAt(i++);
- o3 = data.charCodeAt(i++);
-
- bits = o1 << 16 | o2 << 8 | o3;
-
- h1 = bits >> 18 & 0x3f;
- h2 = bits >> 12 & 0x3f;
- h3 = bits >> 6 & 0x3f;
- h4 = bits & 0x3f;
-
- // use hexets to index into b64, and append result to encoded string
- tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
- } while (i < data.length);
-
- enc = tmp_arr.join('');
-
- switch (data.length % 3) {
- case 1:
- enc = enc.slice(0, -2) + '==';
- break;
- case 2:
- enc = enc.slice(0, -1) + '=';
- break;
- }
-
- return enc;
-};
-
-_.utf8Encode = function(string) {
- string = (string + '').replace(/\r\n/g, '\n').replace(/\r/g, '\n');
-
- var utftext = '',
- start,
- end;
- var stringl = 0,
- n;
-
- start = end = 0;
- stringl = string.length;
-
- for (n = 0; n < stringl; n++) {
- var c1 = string.charCodeAt(n);
- var enc = null;
-
- if (c1 < 128) {
- end++;
- } else if ((c1 > 127) && (c1 < 2048)) {
- enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);
- } else {
- enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);
- }
- if (enc !== null) {
- if (end > start) {
- utftext += string.substring(start, end);
- }
- utftext += enc;
- start = end = n + 1;
- }
- }
-
- if (end > start) {
- utftext += string.substring(start, string.length);
- }
-
- return utftext;
-};
-
-_.UUID = (function() {
-
- // Time/ticks information
- // 1*new Date() is a cross browser version of Date.now()
- var T = function() {
- var d = 1 * new Date(),
- i = 0;
-
- // this while loop figures how many browser ticks go by
- // before 1*new Date() returns a new number, ie the amount
- // of ticks that go by per millisecond
- while (d == 1 * new Date()) {
- i++;
- }
-
- return d.toString(16) + i.toString(16);
- };
-
- // Math.Random entropy
- var R = function() {
- return Math.random().toString(16).replace('.', '');
- };
-
- // User agent entropy
- // This function takes the user agent string, and then xors
- // together each sequence of 8 bytes. This produces a final
- // sequence of 8 bytes which it returns as hex.
- var UA = function() {
- var ua = userAgent,
- i, ch, buffer = [],
- ret = 0;
-
- function xor(result, byte_array) {
- var j, tmp = 0;
- for (j = 0; j < byte_array.length; j++) {
- tmp |= (buffer[j] << j * 8);
- }
- return result ^ tmp;
- }
-
- for (i = 0; i < ua.length; i++) {
- ch = ua.charCodeAt(i);
- buffer.unshift(ch & 0xFF);
- if (buffer.length >= 4) {
- ret = xor(ret, buffer);
- buffer = [];
- }
- }
-
- if (buffer.length > 0) {
- ret = xor(ret, buffer);
- }
-
- return ret.toString(16);
- };
-
- return function() {
- var se = (screen.height * screen.width).toString(16);
- return (T() + '-' + R() + '-' + UA() + '-' + se + '-' + T());
- };
-})();
-
-// _.isBlockedUA()
-// This is to block various web spiders from executing our JS and
-// sending false tracking data
-_.isBlockedUA = function(ua) {
- if (/(google web preview|baiduspider|yandexbot|bingbot|googlebot|yahoo! slurp)/i.test(ua)) {
- return true;
- }
- return false;
-};
-
-/**
- * @param {Object=} formdata
- * @param {string=} arg_separator
- */
-_.HTTPBuildQuery = function(formdata, arg_separator) {
- var use_val, use_key, tmp_arr = [];
-
- if (_.isUndefined(arg_separator)) {
- arg_separator = '&';
- }
-
- _.each(formdata, function(val, key) {
- use_val = encodeURIComponent(val.toString());
- use_key = encodeURIComponent(key);
- tmp_arr[tmp_arr.length] = use_key + '=' + use_val;
- });
-
- return tmp_arr.join(arg_separator);
-};
-
-_.getQueryParam = function(url, param) {
- // Expects a raw URL
-
- param = param.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]');
- var regexS = '[\\?&]' + param + '=([^]*)',
- regex = new RegExp(regexS),
- results = regex.exec(url);
- if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {
- return '';
- } else {
- return decodeURIComponent(results[1]).replace(/\+/g, ' ');
- }
-};
-
-_.getHashParam = function(hash, param) {
- var matches = hash.match(new RegExp(param + '=([^&]*)'));
- return matches ? matches[1] : null;
-};
-
-// _.cookie
-// Methods partially borrowed from quirksmode.org/js/cookies.html
-_.cookie = {
- get: function(name) {
- var nameEQ = name + '=';
- var ca = document$1.cookie.split(';');
- for (var i = 0; i < ca.length; i++) {
- var c = ca[i];
- while (c.charAt(0) == ' ') {
- c = c.substring(1, c.length);
- }
- if (c.indexOf(nameEQ) === 0) {
- return decodeURIComponent(c.substring(nameEQ.length, c.length));
- }
- }
- return null;
- },
-
- parse: function(name) {
- var cookie;
- try {
- cookie = _.JSONDecode(_.cookie.get(name)) || {};
- } catch (err) {
- // noop
- }
- return cookie;
- },
-
- set_seconds: function(name, value, seconds, cross_subdomain, is_secure) {
- var cdomain = '',
- expires = '',
- secure = '';
-
- if (cross_subdomain) {
- var matches = document$1.location.hostname.match(/[a-z0-9][a-z0-9\-]+\.[a-z\.]{2,6}$/i),
- domain = matches ? matches[0] : '';
-
- cdomain = ((domain) ? '; domain=.' + domain : '');
- }
-
- if (seconds) {
- var date = new Date();
- date.setTime(date.getTime() + (seconds * 1000));
- expires = '; expires=' + date.toGMTString();
- }
-
- if (is_secure) {
- secure = '; secure';
- }
-
- document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;
- },
-
- set: function(name, value, days, cross_subdomain, is_secure) {
- var cdomain = '', expires = '', secure = '';
-
- if (cross_subdomain) {
- var matches = document$1.location.hostname.match(/[a-z0-9][a-z0-9\-]+\.[a-z\.]{2,6}$/i),
- domain = matches ? matches[0] : '';
-
- cdomain = ((domain) ? '; domain=.' + domain : '');
- }
-
- if (days) {
- var date = new Date();
- date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
- expires = '; expires=' + date.toGMTString();
- }
-
- if (is_secure) {
- secure = '; secure';
- }
-
- var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;
- document$1.cookie = new_cookie_val;
- return new_cookie_val;
- },
-
- remove: function(name, cross_subdomain) {
- _.cookie.set(name, '', -1, cross_subdomain);
- }
-};
-
-// _.localStorage
-var _localStorage_supported = null;
-_.localStorage = {
- is_supported: function() {
- if (_localStorage_supported !== null) {
- return _localStorage_supported;
- }
-
- var supported = true;
- try {
- var key = '__mplssupport__',
- val = 'xyz';
- _.localStorage.set(key, val);
- if (_.localStorage.get(key) !== val) {
- supported = false;
- }
- _.localStorage.remove(key);
- } catch (err) {
- supported = false;
- }
- if (!supported) {
- console$1.error('localStorage unsupported; falling back to cookie store');
- }
-
- _localStorage_supported = supported;
- return supported;
- },
-
- error: function(msg) {
- console$1.error('localStorage error: ' + msg);
- },
-
- get: function(name) {
- try {
- return window.localStorage.getItem(name);
- } catch (err) {
- _.localStorage.error(err);
- }
- return null;
- },
-
- parse: function(name) {
- try {
- return _.JSONDecode(_.localStorage.get(name)) || {};
- } catch (err) {
- // noop
- }
- return null;
- },
-
- set: function(name, value) {
- try {
- window.localStorage.setItem(name, value);
- } catch (err) {
- _.localStorage.error(err);
- }
- },
-
- remove: function(name) {
- try {
- window.localStorage.removeItem(name);
- } catch (err) {
- _.localStorage.error(err);
- }
- }
-};
-
-_.register_event = (function() {
- // written by Dean Edwards, 2005
- // with input from Tino Zijdel - crisp@xs4all.nl
- // with input from Carl Sverre - mail@carlsverre.com
- // with input from Mixpanel
- // http://dean.edwards.name/weblog/2005/10/add-event/
- // https://gist.github.com/1930440
-
- /**
- * @param {Object} element
- * @param {string} type
- * @param {function(...[*])} handler
- * @param {boolean=} oldSchool
- * @param {boolean=} useCapture
- */
- var register_event = function(element, type, handler, oldSchool, useCapture) {
- if (!element) {
- console$1.error('No valid element provided to register_event');
- return;
- }
-
- if (element.addEventListener && !oldSchool) {
- element.addEventListener(type, handler, !!useCapture);
- } else {
- var ontype = 'on' + type;
- var old_handler = element[ontype]; // can be undefined
- element[ontype] = makeHandler(element, handler, old_handler);
- }
- };
-
- function makeHandler(element, new_handler, old_handlers) {
- var handler = function(event) {
- event = event || fixEvent(window.event);
-
- // this basically happens in firefox whenever another script
- // overwrites the onload callback and doesn't pass the event
- // object to previously defined callbacks. All the browsers
- // that don't define window.event implement addEventListener
- // so the dom_loaded handler will still be fired as usual.
- if (!event) {
- return undefined;
- }
-
- var ret = true;
- var old_result, new_result;
-
- if (_.isFunction(old_handlers)) {
- old_result = old_handlers(event);
- }
- new_result = new_handler.call(element, event);
-
- if ((false === old_result) || (false === new_result)) {
- ret = false;
- }
-
- return ret;
- };
-
- return handler;
- }
-
- function fixEvent(event) {
- if (event) {
- event.preventDefault = fixEvent.preventDefault;
- event.stopPropagation = fixEvent.stopPropagation;
- }
- return event;
- }
- fixEvent.preventDefault = function() {
- this.returnValue = false;
- };
- fixEvent.stopPropagation = function() {
- this.cancelBubble = true;
- };
-
- return register_event;
-})();
-
-_.dom_query = (function() {
- /* document.getElementsBySelector(selector)
- - returns an array of element objects from the current document
- matching the CSS selector. Selectors can contain element names,
- class names and ids and can be nested. For example:
-
- elements = document.getElementsBySelector('div#main p a.external')
-
- Will return an array of all 'a' elements with 'external' in their
- class attribute that are contained inside 'p' elements that are
- contained inside the 'div' element which has id="main"
-
- New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
- See http://www.w3.org/TR/css3-selectors/#attribute-selectors
-
- Version 0.4 - Simon Willison, March 25th 2003
- -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows
- -- Opera 7 fails
-
- Version 0.5 - Carl Sverre, Jan 7th 2013
- -- Now uses jQuery-esque `hasClass` for testing class name
- equality. This fixes a bug related to '-' characters being
- considered not part of a 'word' in regex.
- */
-
- function getAllChildren(e) {
- // Returns all children of element. Workaround required for IE5/Windows. Ugh.
- return e.all ? e.all : e.getElementsByTagName('*');
- }
-
- var bad_whitespace = /[\t\r\n]/g;
-
- function hasClass(elem, selector) {
- var className = ' ' + selector + ' ';
- return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);
- }
-
- function getElementsBySelector(selector) {
- // Attempt to fail gracefully in lesser browsers
- if (!document$1.getElementsByTagName) {
- return [];
- }
- // Split selector in to tokens
- var tokens = selector.split(' ');
- var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;
- var currentContext = [document$1];
- for (i = 0; i < tokens.length; i++) {
- token = tokens[i].replace(/^\s+/, '').replace(/\s+$/, '');
- if (token.indexOf('#') > -1) {
- // Token is an ID selector
- bits = token.split('#');
- tagName = bits[0];
- var id = bits[1];
- var element = document$1.getElementById(id);
- if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {
- // element not found or tag with that ID not found, return false
- return [];
- }
- // Set currentContext to contain just this element
- currentContext = [element];
- continue; // Skip to next token
- }
- if (token.indexOf('.') > -1) {
- // Token contains a class selector
- bits = token.split('.');
- tagName = bits[0];
- var className = bits[1];
- if (!tagName) {
- tagName = '*';
- }
- // Get elements matching tag, filter them for class selector
- found = [];
- foundCount = 0;
- for (j = 0; j < currentContext.length; j++) {
- if (tagName == '*') {
- elements = getAllChildren(currentContext[j]);
- } else {
- elements = currentContext[j].getElementsByTagName(tagName);
- }
- for (k = 0; k < elements.length; k++) {
- found[foundCount++] = elements[k];
- }
- }
- currentContext = [];
- currentContextIndex = 0;
- for (j = 0; j < found.length; j++) {
- if (found[j].className &&
- _.isString(found[j].className) && // some SVG elements have classNames which are not strings
- hasClass(found[j], className)
- ) {
- currentContext[currentContextIndex++] = found[j];
- }
- }
- continue; // Skip to next token
- }
- // Code to deal with attribute selectors
- var token_match = token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/);
- if (token_match) {
- tagName = token_match[1];
- var attrName = token_match[2];
- var attrOperator = token_match[3];
- var attrValue = token_match[4];
- if (!tagName) {
- tagName = '*';
- }
- // Grab all of the tagName elements within current context
- found = [];
- foundCount = 0;
- for (j = 0; j < currentContext.length; j++) {
- if (tagName == '*') {
- elements = getAllChildren(currentContext[j]);
- } else {
- elements = currentContext[j].getElementsByTagName(tagName);
- }
- for (k = 0; k < elements.length; k++) {
- found[foundCount++] = elements[k];
- }
- }
- currentContext = [];
- currentContextIndex = 0;
- var checkFunction; // This function will be used to filter the elements
- switch (attrOperator) {
- case '=': // Equality
- checkFunction = function(e) {
- return (e.getAttribute(attrName) == attrValue);
- };
- break;
- case '~': // Match one of space seperated words
- checkFunction = function(e) {
- return (e.getAttribute(attrName).match(new RegExp('\\b' + attrValue + '\\b')));
- };
- break;
- case '|': // Match start with value followed by optional hyphen
- checkFunction = function(e) {
- return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));
- };
- break;
- case '^': // Match starts with value
- checkFunction = function(e) {
- return (e.getAttribute(attrName).indexOf(attrValue) === 0);
- };
- break;
- case '$': // Match ends with value - fails with "Warning" in Opera 7
- checkFunction = function(e) {
- return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);
- };
- break;
- case '*': // Match ends with value
- checkFunction = function(e) {
- return (e.getAttribute(attrName).indexOf(attrValue) > -1);
- };
- break;
- default:
- // Just test for existence of attribute
- checkFunction = function(e) {
- return e.getAttribute(attrName);
- };
- }
- currentContext = [];
- currentContextIndex = 0;
- for (j = 0; j < found.length; j++) {
- if (checkFunction(found[j])) {
- currentContext[currentContextIndex++] = found[j];
- }
- }
- // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);
- continue; // Skip to next token
- }
- // If we get here, token is JUST an element (not a class or ID selector)
- tagName = token;
- found = [];
- foundCount = 0;
- for (j = 0; j < currentContext.length; j++) {
- elements = currentContext[j].getElementsByTagName(tagName);
- for (k = 0; k < elements.length; k++) {
- found[foundCount++] = elements[k];
- }
- }
- currentContext = found;
- }
- return currentContext;
- }
-
- return function(query) {
- if (_.isElement(query)) {
- return [query];
- } else if (_.isObject(query) && !_.isUndefined(query.length)) {
- return query;
- } else {
- return getElementsBySelector.call(this, query);
- }
- };
-})();
-
-_.info = {
- campaignParams: function() {
- var campaign_keywords = 'utm_source utm_medium utm_campaign utm_content utm_term'.split(' '),
- kw = '',
- params = {};
- _.each(campaign_keywords, function(kwkey) {
- kw = _.getQueryParam(document$1.URL, kwkey);
- if (kw.length) {
- params[kwkey] = kw;
- }
- });
-
- return params;
- },
-
- searchEngine: function(referrer) {
- if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {
- return 'google';
- } else if (referrer.search('https?://(.*)bing.com') === 0) {
- return 'bing';
- } else if (referrer.search('https?://(.*)yahoo.com') === 0) {
- return 'yahoo';
- } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {
- return 'duckduckgo';
- } else {
- return null;
- }
- },
-
- searchInfo: function(referrer) {
- var search = _.info.searchEngine(referrer),
- param = (search != 'yahoo') ? 'q' : 'p',
- ret = {};
-
- if (search !== null) {
- ret['$search_engine'] = search;
-
- var keyword = _.getQueryParam(referrer, param);
- if (keyword.length) {
- ret['mp_keyword'] = keyword;
- }
- }
-
- return ret;
- },
-
- /**
- * This function detects which browser is running this script.
- * The order of the checks are important since many user agents
- * include key words used in later checks.
- */
- browser: function(user_agent, vendor, opera) {
- vendor = vendor || ''; // vendor is undefined for at least IE9
- if (opera || _.includes(user_agent, ' OPR/')) {
- if (_.includes(user_agent, 'Mini')) {
- return 'Opera Mini';
- }
- return 'Opera';
- } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {
- return 'BlackBerry';
- } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {
- return 'Internet Explorer Mobile';
- } else if (_.includes(user_agent, 'Edge')) {
- return 'Microsoft Edge';
- } else if (_.includes(user_agent, 'FBIOS')) {
- return 'Facebook Mobile';
- } else if (_.includes(user_agent, 'Chrome')) {
- return 'Chrome';
- } else if (_.includes(user_agent, 'CriOS')) {
- return 'Chrome iOS';
- } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {
- return 'UC Browser';
- } else if (_.includes(user_agent, 'FxiOS')) {
- return 'Firefox iOS';
- } else if (_.includes(vendor, 'Apple')) {
- if (_.includes(user_agent, 'Mobile')) {
- return 'Mobile Safari';
- }
- return 'Safari';
- } else if (_.includes(user_agent, 'Android')) {
- return 'Android Mobile';
- } else if (_.includes(user_agent, 'Konqueror')) {
- return 'Konqueror';
- } else if (_.includes(user_agent, 'Firefox')) {
- return 'Firefox';
- } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {
- return 'Internet Explorer';
- } else if (_.includes(user_agent, 'Gecko')) {
- return 'Mozilla';
- } else {
- return '';
- }
- },
-
- /**
- * This function detects which browser version is running this script,
- * parsing major and minor version (e.g., 42.1). User agent strings from:
- * http://www.useragentstring.com/pages/useragentstring.php
- */
- browserVersion: function(userAgent, vendor, opera) {
- var browser = _.info.browser(userAgent, vendor, opera);
- var versionRegexs = {
- 'Internet Explorer Mobile': /rv:(\d+(\.\d+)?)/,
- 'Microsoft Edge': /Edge\/(\d+(\.\d+)?)/,
- 'Chrome': /Chrome\/(\d+(\.\d+)?)/,
- 'Chrome iOS': /CriOS\/(\d+(\.\d+)?)/,
- 'UC Browser' : /(UCBrowser|UCWEB)\/(\d+(\.\d+)?)/,
- 'Safari': /Version\/(\d+(\.\d+)?)/,
- 'Mobile Safari': /Version\/(\d+(\.\d+)?)/,
- 'Opera': /(Opera|OPR)\/(\d+(\.\d+)?)/,
- 'Firefox': /Firefox\/(\d+(\.\d+)?)/,
- 'Firefox iOS': /FxiOS\/(\d+(\.\d+)?)/,
- 'Konqueror': /Konqueror:(\d+(\.\d+)?)/,
- 'BlackBerry': /BlackBerry (\d+(\.\d+)?)/,
- 'Android Mobile': /android\s(\d+(\.\d+)?)/,
- 'Internet Explorer': /(rv:|MSIE )(\d+(\.\d+)?)/,
- 'Mozilla': /rv:(\d+(\.\d+)?)/
- };
- var regex = versionRegexs[browser];
- if (regex === undefined) {
- return null;
- }
- var matches = userAgent.match(regex);
- if (!matches) {
- return null;
- }
- return parseFloat(matches[matches.length - 2]);
- },
-
- os: function() {
- var a = userAgent;
- if (/Windows/i.test(a)) {
- if (/Phone/.test(a) || /WPDesktop/.test(a)) {
- return 'Windows Phone';
- }
- return 'Windows';
- } else if (/(iPhone|iPad|iPod)/.test(a)) {
- return 'iOS';
- } else if (/Android/.test(a)) {
- return 'Android';
- } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {
- return 'BlackBerry';
- } else if (/Mac/i.test(a)) {
- return 'Mac OS X';
- } else if (/Linux/.test(a)) {
- return 'Linux';
- } else if (/CrOS/.test(a)) {
- return 'Chrome OS';
- } else {
- return '';
- }
- },
-
- device: function(user_agent) {
- if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {
- return 'Windows Phone';
- } else if (/iPad/.test(user_agent)) {
- return 'iPad';
- } else if (/iPod/.test(user_agent)) {
- return 'iPod Touch';
- } else if (/iPhone/.test(user_agent)) {
- return 'iPhone';
- } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {
- return 'BlackBerry';
- } else if (/Android/.test(user_agent)) {
- return 'Android';
- } else {
- return '';
- }
- },
-
- referringDomain: function(referrer) {
- var split = referrer.split('/');
- if (split.length >= 3) {
- return split[2];
- }
- return '';
- },
-
- properties: function() {
- return _.extend(_.strip_empty_properties({
- '$os': _.info.os(),
- '$browser': _.info.browser(userAgent, navigator$1.vendor, windowOpera),
- '$referrer': document$1.referrer,
- '$referring_domain': _.info.referringDomain(document$1.referrer),
- '$device': _.info.device(userAgent)
- }), {
- '$current_url': window$1.location.href,
- '$browser_version': _.info.browserVersion(userAgent, navigator$1.vendor, windowOpera),
- '$screen_height': screen.height,
- '$screen_width': screen.width,
- 'mp_lib': 'web',
- '$lib_version': Config.LIB_VERSION
- });
- },
-
- people_properties: function() {
- return _.extend(_.strip_empty_properties({
- '$os': _.info.os(),
- '$browser': _.info.browser(userAgent, navigator$1.vendor, windowOpera)
- }), {
- '$browser_version': _.info.browserVersion(userAgent, navigator$1.vendor, windowOpera)
- });
- },
-
- pageviewInfo: function(page) {
- return _.strip_empty_properties({
- 'mp_page': page,
- 'mp_referrer': document$1.referrer,
- 'mp_browser': _.info.browser(userAgent, navigator$1.vendor, windowOpera),
- 'mp_platform': _.info.os()
- });
- }
-};
-
-// EXPORTS (for closure compiler)
-_['toArray'] = _.toArray;
-_['isObject'] = _.isObject;
-_['JSONEncode'] = _.JSONEncode;
-_['JSONDecode'] = _.JSONDecode;
-_['isBlockedUA'] = _.isBlockedUA;
-_['isEmptyObject'] = _.isEmptyObject;
-_['info'] = _.info;
-_['info']['device'] = _.info.device;
-_['info']['browser'] = _.info.browser;
-_['info']['properties'] = _.info.properties;
-
-/*
- * Get the className of an element, accounting for edge cases where element.className is an object
- * @param {Element} el - element to get the className of
- * @returns {string} the element's class
- */
-function getClassName(el) {
- switch(typeof el.className) {
- case 'string':
- return el.className;
- case 'object': // handle cases where className might be SVGAnimatedString or some other type
- return el.className.baseVal || el.getAttribute('class') || '';
- default: // future proof
- return '';
- }
-}
-
-/*
- * Get the direct text content of an element, protecting against sensitive data collection.
- * Concats textContent of each of the element's text node children; this avoids potential
- * collection of sensitive data that could happen if we used element.textContent and the
- * element had sensitive child elements, since element.textContent includes child content.
- * Scrubs values that look like they could be sensitive (i.e. cc or ssn number).
- * @param {Element} el - element to get the text of
- * @returns {string} the element's direct text content
- */
-function getSafeText(el) {
- var elText = '';
-
- if (shouldTrackElement(el) && el.childNodes && el.childNodes.length) {
- _.each(el.childNodes, function(child) {
- if (isTextNode(child) && child.textContent) {
- elText += _.trim(child.textContent)
- // scrub potentially sensitive values
- .split(/(\s+)/).filter(shouldTrackValue).join('')
- // normalize whitespace
- .replace(/[\r\n]/g, ' ').replace(/[ ]+/g, ' ')
- // truncate
- .substring(0, 255);
- }
- });
- }
-
- return _.trim(elText);
-}
-
-/*
- * Check whether an element has nodeType Node.ELEMENT_NODE
- * @param {Element} el - element to check
- * @returns {boolean} whether el is of the correct nodeType
- */
-function isElementNode(el) {
- return el && el.nodeType === 1; // Node.ELEMENT_NODE - use integer constant for browser portability
-}
-
-/*
- * Check whether an element is of a given tag type.
- * Due to potential reference discrepancies (such as the webcomponents.js polyfill),
- * we want to match tagNames instead of specific references because something like
- * element === document.body won't always work because element might not be a native
- * element.
- * @param {Element} el - element to check
- * @param {string} tag - tag name (e.g., "div")
- * @returns {boolean} whether el is of the given tag type
- */
-function isTag(el, tag) {
- return el && el.tagName && el.tagName.toLowerCase() === tag.toLowerCase();
-}
-
-/*
- * Check whether an element has nodeType Node.TEXT_NODE
- * @param {Element} el - element to check
- * @returns {boolean} whether el is of the correct nodeType
- */
-function isTextNode(el) {
- return el && el.nodeType === 3; // Node.TEXT_NODE - use integer constant for browser portability
-}
-
-/*
- * Check whether a DOM event should be "tracked" or if it may contain sentitive data
- * using a variety of heuristics.
- * @param {Element} el - element to check
- * @param {Event} event - event to check
- * @returns {boolean} whether the event should be tracked
- */
-function shouldTrackDomEvent(el, event) {
- if (!el || isTag(el, 'html') || !isElementNode(el)) {
- return false;
- }
- var tag = el.tagName.toLowerCase();
- switch (tag) {
- case 'html':
- return false;
- case 'form':
- return event.type === 'submit';
- case 'input':
- if (['button', 'submit'].indexOf(el.getAttribute('type')) === -1) {
- return event.type === 'change';
- } else {
- return event.type === 'click';
- }
- case 'select':
- case 'textarea':
- return event.type === 'change';
- default:
- return event.type === 'click';
- }
-}
-
-/*
- * Check whether a DOM element should be "tracked" or if it may contain sentitive data
- * using a variety of heuristics.
- * @param {Element} el - element to check
- * @returns {boolean} whether the element should be tracked
- */
-function shouldTrackElement(el) {
- for (var curEl = el; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode) {
- var classes = getClassName(curEl).split(' ');
- if (_.includes(classes, 'mp-sensitive') || _.includes(classes, 'mp-no-track')) {
- return false;
- }
- }
-
- if (_.includes(getClassName(el).split(' '), 'mp-include')) {
- return true;
- }
-
- // don't send data from inputs or similar elements since there will always be
- // a risk of clientside javascript placing sensitive data in attributes
- if (
- isTag(el, 'input') ||
- isTag(el, 'select') ||
- isTag(el, 'textarea') ||
- el.getAttribute('contenteditable') === 'true'
- ) {
- return false;
- }
-
- // don't include hidden or password fields
- var type = el.type || '';
- if (typeof type === 'string') { // it's possible for el.type to be a DOM element if el is a form with a child input[name="type"]
- switch(type.toLowerCase()) {
- case 'hidden':
- return false;
- case 'password':
- return false;
- }
- }
-
- // filter out data from fields that look like sensitive fields
- var name = el.name || el.id || '';
- if (typeof name === 'string') { // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name="name"]
- var sensitiveNameRegex = /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i;
- if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {
- return false;
- }
- }
-
- return true;
-}
-
-/*
- * Check whether a string value should be "tracked" or if it may contain sentitive data
- * using a variety of heuristics.
- * @param {string} value - string value to check
- * @returns {boolean} whether the element should be tracked
- */
-function shouldTrackValue(value) {
- if (value === null || _.isUndefined(value)) {
- return false;
- }
-
- if (typeof value === 'string') {
- value = _.trim(value);
-
- // check to see if input value looks like a credit card number
- // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html
- var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;
- if (ccRegex.test((value || '').replace(/[\- ]/g, ''))) {
- return false;
- }
-
- // check to see if input value looks like a social security number
- var ssnRegex = /(^\d{3}-?\d{2}-?\d{4}$)/;
- if (ssnRegex.test(value)) {
- return false;
- }
- }
-
- return true;
-}
-
-var autotrack = {
- _initializedTokens: [],
-
- _previousElementSibling: function(el) {
- if (el.previousElementSibling) {
- return el.previousElementSibling;
- } else {
- do {
- el = el.previousSibling;
- } while (el && !isElementNode(el));
- return el;
- }
- },
-
- _loadScript: function(scriptUrlToLoad, callback) {
- var scriptTag = document.createElement('script');
- scriptTag.type = 'text/javascript';
- scriptTag.src = scriptUrlToLoad;
- scriptTag.onload = callback;
-
- var scripts = document.getElementsByTagName('script');
- if (scripts.length > 0) {
- scripts[0].parentNode.insertBefore(scriptTag, scripts[0]);
- } else {
- document.body.appendChild(scriptTag);
- }
- },
-
- _getPropertiesFromElement: function(elem) {
- var props = {
- 'classes': getClassName(elem).split(' '),
- 'tag_name': elem.tagName.toLowerCase()
- };
-
- if (shouldTrackElement(elem)) {
- _.each(elem.attributes, function(attr) {
- if (shouldTrackValue(attr.value)) {
- props['attr__' + attr.name] = attr.value;
- }
- });
- }
-
- var nthChild = 1;
- var nthOfType = 1;
- var currentElem = elem;
- while (currentElem = this._previousElementSibling(currentElem)) { // eslint-disable-line no-cond-assign
- nthChild++;
- if (currentElem.tagName === elem.tagName) {
- nthOfType++;
- }
- }
- props['nth_child'] = nthChild;
- props['nth_of_type'] = nthOfType;
-
- return props;
- },
-
- _getDefaultProperties: function(eventType) {
- return {
- '$event_type': eventType,
- '$ce_version': 1,
- '$host': window.location.host,
- '$pathname': window.location.pathname
- };
- },
-
- _extractCustomPropertyValue: function(customProperty) {
- var propValues = [];
- _.each(document.querySelectorAll(customProperty['css_selector']), function(matchedElem) {
- var value;
-
- if (['input', 'select'].indexOf(matchedElem.tagName.toLowerCase()) > -1) {
- value = matchedElem['value'];
- } else if (matchedElem['textContent']) {
- value = matchedElem['textContent'];
- }
-
- if (shouldTrackValue(value)) {
- propValues.push(value);
- }
- });
- return propValues.join(', ');
- },
-
- _getCustomProperties: function(targetElementList) {
- var props = {};
- _.each(this._customProperties, function(customProperty) {
- _.each(customProperty['event_selectors'], function(eventSelector) {
- var eventElements = document.querySelectorAll(eventSelector);
- _.each(eventElements, function(eventElement) {
- if (_.includes(targetElementList, eventElement) && shouldTrackElement(eventElement)) {
- props[customProperty['name']] = this._extractCustomPropertyValue(customProperty);
- }
- }, this);
- }, this);
- }, this);
- return props;
- },
-
- _getEventTarget: function(e) {
- // https://developer.mozilla.org/en-US/docs/Web/API/Event/target#Compatibility_notes
- if (typeof e.target === 'undefined') {
- return e.srcElement;
- } else {
- return e.target;
- }
- },
-
- _trackEvent: function(e, instance) {
- /*** Don't mess with this code without running IE8 tests on it ***/
- var target = this._getEventTarget(e);
- if (isTextNode(target)) { // defeat Safari bug (see: http://www.quirksmode.org/js/events_properties.html)
- target = target.parentNode;
- }
-
- if (shouldTrackDomEvent(target, e)) {
- var targetElementList = [target];
- var curEl = target;
- while (curEl.parentNode && !isTag(curEl, 'body')) {
- targetElementList.push(curEl.parentNode);
- curEl = curEl.parentNode;
- }
-
- var elementsJson = [];
- var href, explicitNoTrack = false;
- _.each(targetElementList, function(el) {
- var shouldTrackEl = shouldTrackElement(el);
-
- // if the element or a parent element is an anchor tag
- // include the href as a property
- if (el.tagName.toLowerCase() === 'a') {
- href = el.getAttribute('href');
- href = shouldTrackEl && shouldTrackValue(href) && href;
- }
-
- // allow users to programatically prevent tracking of elements by adding class 'mp-no-track'
- var classes = getClassName(el).split(' ');
- if (_.includes(classes, 'mp-no-track')) {
- explicitNoTrack = true;
- }
-
- elementsJson.push(this._getPropertiesFromElement(el));
- }, this);
-
- if (explicitNoTrack) {
- return false;
- }
-
- // only populate text content from target element (not parents)
- // to prevent text within a sensitive element from being collected
- // as part of a parent's el.textContent
- var elementText;
- var safeElementText = getSafeText(target);
- if (safeElementText && safeElementText.length) {
- elementText = safeElementText;
- }
-
- var props = _.extend(
- this._getDefaultProperties(e.type),
- {
- '$elements': elementsJson,
- '$el_attr__href': href,
- '$el_text': elementText
- },
- this._getCustomProperties(targetElementList)
- );
-
- instance.track('$web_event', props);
- return true;
- }
- },
-
- // only reason is to stub for unit tests
- // since you can't override window.location props
- _navigate: function(href) {
- window.location.href = href;
- },
-
- _addDomEventHandlers: function(instance) {
- var handler = _.bind(function(e) {
- e = e || window.event;
- this._trackEvent(e, instance);
- }, this);
- _.register_event(document, 'submit', handler, false, true);
- _.register_event(document, 'change', handler, false, true);
- _.register_event(document, 'click', handler, false, true);
- },
-
- _customProperties: {},
- init: function(instance) {
- if (!(document && document.body)) {
- console.log('document not ready yet, trying again in 500 milliseconds...');
- var that = this;
- setTimeout(function() { that.init(instance); }, 500);
- return;
- }
-
- var token = instance.get_config('token');
- if (this._initializedTokens.indexOf(token) > -1) {
- console.log('autotrack already initialized for token "' + token + '"');
- return;
- }
- this._initializedTokens.push(token);
-
- if (!this._maybeLoadEditor(instance)) { // don't autotrack actions when the editor is enabled
- var parseDecideResponse = _.bind(function(response) {
- if (response && response['config'] && response['config']['enable_collect_everything'] === true) {
-
- if (response['custom_properties']) {
- this._customProperties = response['custom_properties'];
- }
-
- instance.track('$web_event', _.extend({
- '$title': document.title
- }, this._getDefaultProperties('pageview')));
-
- this._addDomEventHandlers(instance);
-
- } else {
- instance['__autotrack_enabled'] = false;
- }
- }, this);
-
- instance._send_request(
- instance.get_config('api_host') + '/decide/', {
- 'verbose': true,
- 'version': '1',
- 'lib': 'web',
- 'token': token
- },
- instance._prepare_callback(parseDecideResponse)
- );
- }
- },
-
- _editorParamsFromHash: function(instance, hash) {
- var editorParams;
- try {
- var state = _.getHashParam(hash, 'state');
- state = JSON.parse(decodeURIComponent(state));
- var expiresInSeconds = _.getHashParam(hash, 'expires_in');
- editorParams = {
- 'accessToken': _.getHashParam(hash, 'access_token'),
- 'accessTokenExpiresAt': (new Date()).getTime() + (Number(expiresInSeconds) * 1000),
- 'bookmarkletMode': !!state['bookmarkletMode'],
- 'projectId': state['projectId'],
- 'projectOwnerId': state['projectOwnerId'],
- 'projectToken': state['token'],
- 'readOnly': state['readOnly'],
- 'userFlags': state['userFlags'],
- 'userId': state['userId']
- };
- window.sessionStorage.setItem('editorParams', JSON.stringify(editorParams));
-
- if (state['desiredHash']) {
- window.location.hash = state['desiredHash'];
- } else if (window.history) {
- history.replaceState('', document.title, window.location.pathname + window.location.search); // completely remove hash
- } else {
- window.location.hash = ''; // clear hash (but leaves # unfortunately)
- }
- } catch (e) {
- console.error('Unable to parse data from hash', e);
- }
- return editorParams;
- },
-
- /**
- * To load the visual editor, we need an access token and other state. That state comes from one of three places:
- * 1. In the URL hash params if the customer is using an old snippet
- * 2. From session storage under the key `_mpcehash` if the snippet already parsed the hash
- * 3. From session storage under the key `editorParams` if the editor was initialized on a previous page
- */
- _maybeLoadEditor: function(instance) {
- try {
- var parseFromUrl = false;
- if (_.getHashParam(window.location.hash, 'state')) {
- var state = _.getHashParam(window.location.hash, 'state');
- state = JSON.parse(decodeURIComponent(state));
- parseFromUrl = state['action'] === 'mpeditor';
- }
- var parseFromStorage = !!window.sessionStorage.getItem('_mpcehash');
- var editorParams;
-
- if (parseFromUrl) { // happens if they are initializing the editor using an old snippet
- editorParams = this._editorParamsFromHash(instance, window.location.hash);
- } else if (parseFromStorage) { // happens if they are initialized the editor and using the new snippet
- editorParams = this._editorParamsFromHash(instance, window.sessionStorage.getItem('_mpcehash'));
- window.sessionStorage.removeItem('_mpcehash');
- } else { // get credentials from sessionStorage from a previous initialzation
- editorParams = JSON.parse(window.sessionStorage.getItem('editorParams') || '{}');
- }
-
- if (editorParams['projectToken'] && instance.get_config('token') === editorParams['projectToken']) {
- this._loadEditor(instance, editorParams);
- return true;
- } else {
- return false;
- }
- } catch (e) {
- return false;
- }
- },
-
- _loadEditor: function(instance, editorParams) {
- if (!window['_mpEditorLoaded']) { // only load the codeless event editor once, even if there are multiple instances of MixpanelLib
- window['_mpEditorLoaded'] = true;
- var editorUrl = instance.get_config('app_host')
- + '/js-bundle/reports/collect-everything/editor.js?_ts='
- + (new Date()).getTime();
- this._loadScript(editorUrl, function() {
- window['mp_load_editor'](editorParams);
- });
- return true;
- }
- return false;
- },
-
- // this is a mechanism to ramp up CE with no server-side interaction.
- // when CE is active, every page load results in a decide request. we
- // need to gently ramp this up so we don't overload decide. this decides
- // deterministically if CE is enabled for this project by modding the char
- // value of the project token.
- enabledForProject: function(token, numBuckets, numEnabledBuckets) {
- numBuckets = !_.isUndefined(numBuckets) ? numBuckets : 10;
- numEnabledBuckets = !_.isUndefined(numEnabledBuckets) ? numEnabledBuckets : 10;
- var charCodeSum = 0;
- for (var i = 0; i < token.length; i++) {
- charCodeSum += token.charCodeAt(i);
- }
- return (charCodeSum % numBuckets) < numEnabledBuckets;
- },
-
- isBrowserSupported: function() {
- return _.isFunction(document.querySelectorAll);
- }
-};
-
-_.bind_instance_methods(autotrack);
-_.safewrap_instance_methods(autotrack);
-
-/**
- * A function used to track a Mixpanel event (e.g. MixpanelLib.track)
- * @callback trackFunction
- * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.
- * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.
- * @param {Function} [callback] If provided, the callback function will be called after tracking the event.
- */
-
-/** Public **/
-
-var GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';
-
-/**
- * Opt the user in to data tracking and cookies/localstorage for the given token
- * @param {string} token - Mixpanel project tracking token
- * @param {Object} [options]
- * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action
- * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action
- * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action
- * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage
- * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name
- * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires
- * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not
- * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not
- */
-function optIn(token, options) {
- _optInOut(true, token, options);
-}
-
-/**
- * Opt the user out of data tracking and cookies/localstorage for the given token
- * @param {string} token - Mixpanel project tracking token
- * @param {Object} [options]
- * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage
- * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name
- * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires
- * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not
- * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not
- */
-function optOut(token, options) {
- _optInOut(false, token, options);
-}
-
-/**
- * Check whether the user has opted in to data tracking and cookies/localstorage for the given token
- * @param {string} token - Mixpanel project tracking token
- * @param {Object} [options]
- * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage
- * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name
- * @returns {boolean} whether the user has opted in to the given opt type
- */
-function hasOptedIn(token, options) {
- return _getStorageValue(token, options) === '1';
-}
-
-/**
- * Check whether the user has opted out of data tracking and cookies/localstorage for the given token
- * @param {string} token - Mixpanel project tracking token
- * @param {Object} [options]
- * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage
- * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name
- * @returns {boolean} whether the user has opted out of the given opt type
- */
-function hasOptedOut(token, options) {
- if (_hasDoNotTrackFlagOn()) {
- return true;
- }
- return _getStorageValue(token, options) === '0';
-}
-
-/**
- * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token
- * If the user has opted out, return early instead of executing the method.
- * If a callback argument was provided, execute it passing the 0 error code.
- * @param {function} method - wrapped method to be executed if the user has not opted out
- * @returns {*} the result of executing method OR undefined if the user has opted out
- */
-function addOptOutCheckMixpanelLib(method) {
- return _addOptOutCheck(method, function(name) {
- return this.get_config(name);
- });
-}
-
-/**
- * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token
- * If the user has opted out, return early instead of executing the method.
- * If a callback argument was provided, execute it passing the 0 error code.
- * @param {function} method - wrapped method to be executed if the user has not opted out
- * @returns {*} the result of executing method OR undefined if the user has opted out
- */
-function addOptOutCheckMixpanelPeople(method) {
- return _addOptOutCheck(method, function(name) {
- return this._get_config(name);
- });
-}
-
-/**
- * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token
- * @param {string} token - Mixpanel project tracking token
- * @param {Object} [options]
- * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage
- * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name
- * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires
- * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not
- * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not
- */
-function clearOptInOut(token, options) {
- options = options || {};
- _getStorage(options).remove(_getStorageKey(token, options), !!options.crossSubdomainCookie);
-}
-
-/** Private **/
-
-/**
- * Get storage util
- * @param {Object} [options]
- * @param {string} [options.persistenceType]
- * @returns {object} either _.cookie or _.localstorage
- */
-function _getStorage(options) {
- options = options || {};
- return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;
-}
-
-/**
- * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)
- * @param {string} token - Mixpanel project tracking token
- * @param {Object} [options]
- * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name
- * @returns {string} the name of the cookie for the given opt type
- */
-function _getStorageKey(token, options) {
- options = options || {};
- return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;
-}
-
-/**
- * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)
- * @param {string} token - Mixpanel project tracking token
- * @param {Object} [options]
- * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name
- * @returns {string} the value of the cookie for the given opt type
- */
-function _getStorageValue(token, options) {
- return _getStorage(options).get(_getStorageKey(token, options));
-}
-
-/**
- * Check whether the user has set the DNT/doNotTrack setting to true in their browser
- * @returns {boolean} whether the DNT setting is true
- */
-function _hasDoNotTrackFlagOn() {
- return !!(window$1.navigator && window$1.navigator.doNotTrack === '1');
-}
-
-/**
- * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type
- * @param {boolean} optValue - whether to opt the user in or out for the given opt type
- * @param {string} token - Mixpanel project tracking token
- * @param {Object} [options]
- * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action
- * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action
- * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action
- * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name
- * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires
- * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not
- * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not
- */
-function _optInOut(optValue, token, options) {
- if (!_.isString(token) || !token.length) {
- console.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');
- return;
- }
-
- options = options || {};
-
- _getStorage(options).set(
- _getStorageKey(token, options),
- optValue ? 1 : 0,
- _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,
- !!options.crossSubdomainCookie,
- !!options.secureCookie
- );
-
- if (options.track && optValue) { // only track event if opting in (optValue=true)
- options.track(options.trackEventName || '$opt_in', options.trackProperties);
- }
-}
-
-/**
- * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token
- * If the user has opted out, return early instead of executing the method.
- * If a callback argument was provided, execute it passing the 0 error code.
- * @param {function} method - wrapped method to be executed if the user has not opted out
- * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check
- * @returns {*} the result of executing method OR undefined if the user has opted out
- */
-function _addOptOutCheck(method, getConfigValue) {
- return function() {
- var optedOut = false;
-
- try {
- var token = getConfigValue.call(this, 'token');
- var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');
- var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');
-
- if (token) { // if there was an issue getting the token, continue method execution as normal
- optedOut = hasOptedOut(token, {
- persistenceType: persistenceType,
- persistencePrefix: persistencePrefix
- });
- }
- } catch(err) {
- console.error('Unexpected error when checking tracking opt-out status: ' + err);
- }
-
- if (!optedOut) {
- return method.apply(this, arguments);
- }
-
- var callback = arguments[arguments.length - 1];
- if (typeof(callback) === 'function') {
- callback(0);
- }
-
- return;
- };
-}
-
-/*
- * Mixpanel JS Library
- *
- * Copyright 2012, Mixpanel, Inc. All Rights Reserved
- * http://mixpanel.com/
- *
- * Includes portions of Underscore.js
- * http://documentcloud.github.com/underscore/
- * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.
- * Released under the MIT License.
- */
-
-// ==ClosureCompiler==
-// @compilation_level ADVANCED_OPTIMIZATIONS
-// @output_file_name mixpanel-2.8.min.js
-// ==/ClosureCompiler==
-
-/*
-SIMPLE STYLE GUIDE:
-
-this.x === public function
-this._x === internal - only use within this file
-this.__x === private - only use within the class
-
-Globals should be all caps
-*/
-
-var init_type; // MODULE or SNIPPET loader
-var mixpanel_master; // main mixpanel instance / object
-var INIT_MODULE = 0;
-var INIT_SNIPPET = 1;
-
-/*
- * Constants
- */
-/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';
-/** @const */ var SET_QUEUE_KEY = '__mps';
-/** @const */ var SET_ONCE_QUEUE_KEY = '__mpso';
-/** @const */ var UNSET_QUEUE_KEY = '__mpus';
-/** @const */ var ADD_QUEUE_KEY = '__mpa';
-/** @const */ var APPEND_QUEUE_KEY = '__mpap';
-/** @const */ var UNION_QUEUE_KEY = '__mpu';
-/** @const */ var SET_ACTION = '$set';
-/** @const */ var SET_ONCE_ACTION = '$set_once';
-/** @const */ var UNSET_ACTION = '$unset';
-/** @const */ var ADD_ACTION = '$add';
-/** @const */ var APPEND_ACTION = '$append';
-/** @const */ var UNION_ACTION = '$union';
-// This key is deprecated, but we want to check for it to see whether aliasing is allowed.
-/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';
-/** @const */ var ALIAS_ID_KEY = '__alias';
-/** @const */ var CAMPAIGN_IDS_KEY = '__cmpns';
-/** @const */ var EVENT_TIMERS_KEY = '__timers';
-/** @const */ var RESERVED_PROPERTIES = [
- SET_QUEUE_KEY,
- SET_ONCE_QUEUE_KEY,
- UNSET_QUEUE_KEY,
- ADD_QUEUE_KEY,
- APPEND_QUEUE_KEY,
- UNION_QUEUE_KEY,
- PEOPLE_DISTINCT_ID_KEY,
- ALIAS_ID_KEY,
- CAMPAIGN_IDS_KEY,
- EVENT_TIMERS_KEY
-];
-
-/*
- * Dynamic... constants? Is that an oxymoron?
- */
- // http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
- // https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials
-var USE_XHR = (window$1.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());
-
- // IE<10 does not support cross-origin XHR's but script tags
- // with defer won't block window.onload; ENQUEUE_REQUESTS
- // should only be true for Opera<12
-var ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);
-
-/*
- * Module-level globals
- */
-var DEFAULT_CONFIG = {
- 'api_host': 'https://api.mixpanel.com',
- 'app_host': 'https://mixpanel.com',
- 'autotrack': true,
- 'cdn': 'https://cdn.mxpnl.com',
- 'cross_subdomain_cookie': true,
- 'persistence': 'cookie',
- 'persistence_name': '',
- 'cookie_name': '',
- 'loaded': function() {},
- 'store_google': true,
- 'save_referrer': true,
- 'test': false,
- 'verbose': false,
- 'img': false,
- 'track_pageview': true,
- 'debug': false,
- 'track_links_timeout': 300,
- 'cookie_expiration': 365,
- 'upgrade': false,
- 'disable_persistence': false,
- 'disable_cookie': false,
- 'secure_cookie': false,
- 'ip': true,
- 'opt_out_tracking_by_default': false,
- 'opt_out_tracking_persistence_type': 'localStorage',
- 'opt_out_tracking_cookie_prefix': null,
- 'property_blacklist': [],
- 'xhr_headers': {} // { header: value, header2: value }
-};
-
-var DOM_LOADED = false;
-
-/**
- * DomTracker Object
- * @constructor
- */
-var DomTracker = function() {};
-
-// interface
-DomTracker.prototype.create_properties = function() {};
-DomTracker.prototype.event_handler = function() {};
-DomTracker.prototype.after_track_handler = function() {};
-
-DomTracker.prototype.init = function(mixpanel_instance) {
- this.mp = mixpanel_instance;
- return this;
-};
-
-/**
- * @param {Object|string} query
- * @param {string} event_name
- * @param {Object=} properties
- * @param {function(...[*])=} user_callback
- */
-DomTracker.prototype.track = function(query, event_name, properties, user_callback) {
- var that = this;
- var elements = _.dom_query(query);
-
- if (elements.length === 0) {
- console$1.error('The DOM query (' + query + ') returned 0 elements');
- return;
- }
-
- _.each(elements, function(element) {
- _.register_event(element, this.override_event, function(e) {
- var options = {};
- var props = that.create_properties(properties, this);
- var timeout = that.mp.get_config('track_links_timeout');
-
- that.event_handler(e, this, options);
-
- // in case the mixpanel servers don't get back to us in time
- window$1.setTimeout(that.track_callback(user_callback, props, options, true), timeout);
-
- // fire the tracking event
- that.mp.track(event_name, props, that.track_callback(user_callback, props, options));
- });
- }, this);
-
- return true;
-};
-
-/**
- * @param {function(...[*])} user_callback
- * @param {Object} props
- * @param {boolean=} timeout_occured
- */
-DomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {
- timeout_occured = timeout_occured || false;
- var that = this;
-
- return function() {
- // options is referenced from both callbacks, so we can have
- // a 'lock' of sorts to ensure only one fires
- if (options.callback_fired) { return; }
- options.callback_fired = true;
-
- if (user_callback && user_callback(timeout_occured, props) === false) {
- // user can prevent the default functionality by
- // returning false from their callback
- return;
- }
-
- that.after_track_handler(props, options, timeout_occured);
- };
-};
-
-DomTracker.prototype.create_properties = function(properties, element) {
- var props;
-
- if (typeof(properties) === 'function') {
- props = properties(element);
- } else {
- props = _.extend({}, properties);
- }
-
- return props;
-};
-
-/**
- * LinkTracker Object
- * @constructor
- * @extends DomTracker
- */
-var LinkTracker = function() {
- this.override_event = 'click';
-};
-_.inherit(LinkTracker, DomTracker);
-
-LinkTracker.prototype.create_properties = function(properties, element) {
- var props = LinkTracker.superclass.create_properties.apply(this, arguments);
-
- if (element.href) { props['url'] = element.href; }
-
- return props;
-};
-
-LinkTracker.prototype.event_handler = function(evt, element, options) {
- options.new_tab = (
- evt.which === 2 ||
- evt.metaKey ||
- evt.ctrlKey ||
- element.target === '_blank'
- );
- options.href = element.href;
-
- if (!options.new_tab) {
- evt.preventDefault();
- }
-};
-
-LinkTracker.prototype.after_track_handler = function(props, options) {
- if (options.new_tab) { return; }
-
- setTimeout(function() {
- window$1.location = options.href;
- }, 0);
-};
-
-/**
- * FormTracker Object
- * @constructor
- * @extends DomTracker
- */
-var FormTracker = function() {
- this.override_event = 'submit';
-};
-_.inherit(FormTracker, DomTracker);
-
-FormTracker.prototype.event_handler = function(evt, element, options) {
- options.element = element;
- evt.preventDefault();
-};
-
-FormTracker.prototype.after_track_handler = function(props, options) {
- setTimeout(function() {
- options.element.submit();
- }, 0);
-};
-
-/**
- * Mixpanel Persistence Object
- * @constructor
- */
-var MixpanelPersistence = function(config) {
- this['props'] = {};
- this.campaign_params_saved = false;
-
- if (config['persistence_name']) {
- this.name = 'mp_' + config['persistence_name'];
- } else {
- this.name = 'mp_' + config['token'] + '_mixpanel';
- }
-
- var storage_type = config['persistence'];
- if (storage_type !== 'cookie' && storage_type !== 'localStorage') {
- console$1.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');
- storage_type = config['persistence'] = 'cookie';
- }
-
- if (storage_type === 'localStorage' && _.localStorage.is_supported()) {
- this.storage = _.localStorage;
- } else {
- this.storage = _.cookie;
- }
-
- this.load();
- this.update_config(config);
- this.upgrade(config);
- this.save();
-};
-
-MixpanelPersistence.prototype.properties = function() {
- var p = {};
- // Filter out reserved properties
- _.each(this['props'], function(v, k) {
- if (!_.include(RESERVED_PROPERTIES, k)) {
- p[k] = v;
- }
- });
- return p;
-};
-
-MixpanelPersistence.prototype.load = function() {
- if (this.disabled) { return; }
-
- var entry = this.storage.parse(this.name);
-
- if (entry) {
- this['props'] = _.extend({}, entry);
- }
-};
-
-MixpanelPersistence.prototype.upgrade = function(config) {
- var upgrade_from_old_lib = config['upgrade'],
- old_cookie_name,
- old_cookie;
-
- if (upgrade_from_old_lib) {
- old_cookie_name = 'mp_super_properties';
- // Case where they had a custom cookie name before.
- if (typeof(upgrade_from_old_lib) === 'string') {
- old_cookie_name = upgrade_from_old_lib;
- }
-
- old_cookie = this.storage.parse(old_cookie_name);
-
- // remove the cookie
- this.storage.remove(old_cookie_name);
- this.storage.remove(old_cookie_name, true);
-
- if (old_cookie) {
- this['props'] = _.extend(
- this['props'],
- old_cookie['all'],
- old_cookie['events']
- );
- }
- }
-
- if (!config['cookie_name'] && config['name'] !== 'mixpanel') {
- // special case to handle people with cookies of the form
- // mp_TOKEN_INSTANCENAME from the first release of this library
- old_cookie_name = 'mp_' + config['token'] + '_' + config['name'];
- old_cookie = this.storage.parse(old_cookie_name);
-
- if (old_cookie) {
- this.storage.remove(old_cookie_name);
- this.storage.remove(old_cookie_name, true);
-
- // Save the prop values that were in the cookie from before -
- // this should only happen once as we delete the old one.
- this.register_once(old_cookie);
- }
- }
-
- if (this.storage === _.localStorage) {
- old_cookie = _.cookie.parse(this.name);
-
- _.cookie.remove(this.name);
- _.cookie.remove(this.name, true);
-
- if (old_cookie) {
- this.register_once(old_cookie);
- }
- }
-};
-
-MixpanelPersistence.prototype.save = function() {
- if (this.disabled) { return; }
- this._expire_notification_campaigns();
- this.storage.set(
- this.name,
- _.JSONEncode(this['props']),
- this.expire_days,
- this.cross_subdomain,
- this.secure
- );
-};
-
-MixpanelPersistence.prototype.remove = function() {
- // remove both domain and subdomain cookies
- this.storage.remove(this.name, false);
- this.storage.remove(this.name, true);
-};
-
-// removes the storage entry and deletes all loaded data
-// forced name for tests
-MixpanelPersistence.prototype.clear = function() {
- this.remove();
- this['props'] = {};
-};
-
-/**
- * @param {Object} props
- * @param {*=} default_value
- * @param {number=} days
- */
-MixpanelPersistence.prototype.register_once = function(props, default_value, days) {
- if (_.isObject(props)) {
- if (typeof(default_value) === 'undefined') { default_value = 'None'; }
- this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;
-
- _.each(props, function(val, prop) {
- if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {
- this['props'][prop] = val;
- }
- }, this);
-
- this.save();
-
- return true;
- }
- return false;
-};
-
-/**
- * @param {Object} props
- * @param {number=} days
- */
-MixpanelPersistence.prototype.register = function(props, days) {
- if (_.isObject(props)) {
- this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;
-
- _.extend(this['props'], props);
-
- this.save();
-
- return true;
- }
- return false;
-};
-
-MixpanelPersistence.prototype.unregister = function(prop) {
- if (prop in this['props']) {
- delete this['props'][prop];
- this.save();
- }
-};
-
-MixpanelPersistence.prototype._expire_notification_campaigns = _.safewrap(function() {
- var campaigns_shown = this['props'][CAMPAIGN_IDS_KEY],
- EXPIRY_TIME = Config.DEBUG ? 60 * 1000 : 60 * 60 * 1000; // 1 minute (Config.DEBUG) / 1 hour (PDXN)
- if (!campaigns_shown) {
- return;
- }
- for (var campaign_id in campaigns_shown) {
- if (1 * new Date() - campaigns_shown[campaign_id] > EXPIRY_TIME) {
- delete campaigns_shown[campaign_id];
- }
- }
- if (_.isEmptyObject(campaigns_shown)) {
- delete this['props'][CAMPAIGN_IDS_KEY];
- }
-});
-
-MixpanelPersistence.prototype.update_campaign_params = function() {
- if (!this.campaign_params_saved) {
- this.register_once(_.info.campaignParams());
- this.campaign_params_saved = true;
- }
-};
-
-MixpanelPersistence.prototype.update_search_keyword = function(referrer) {
- this.register(_.info.searchInfo(referrer));
-};
-
-// EXPORTED METHOD, we test this directly.
-MixpanelPersistence.prototype.update_referrer_info = function(referrer) {
- // If referrer doesn't exist, we want to note the fact that it was type-in traffic.
- this.register_once({
- '$initial_referrer': referrer || '$direct',
- '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'
- }, '');
-};
-
-MixpanelPersistence.prototype.get_referrer_info = function() {
- return _.strip_empty_properties({
- '$initial_referrer': this['props']['$initial_referrer'],
- '$initial_referring_domain': this['props']['$initial_referring_domain']
- });
-};
-
-// safely fills the passed in object with stored properties,
-// does not override any properties defined in both
-// returns the passed in object
-MixpanelPersistence.prototype.safe_merge = function(props) {
- _.each(this['props'], function(val, prop) {
- if (!(prop in props)) {
- props[prop] = val;
- }
- });
-
- return props;
-};
-
-MixpanelPersistence.prototype.update_config = function(config) {
- this.default_expiry = this.expire_days = config['cookie_expiration'];
- this.set_disabled(config['disable_persistence']);
- this.set_cross_subdomain(config['cross_subdomain_cookie']);
- this.set_secure(config['secure_cookie']);
-};
-
-MixpanelPersistence.prototype.set_disabled = function(disabled) {
- this.disabled = disabled;
- if (this.disabled) {
- this.remove();
- } else {
- this.save();
- }
-};
-
-MixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {
- if (cross_subdomain !== this.cross_subdomain) {
- this.cross_subdomain = cross_subdomain;
- this.remove();
- this.save();
- }
-};
-
-MixpanelPersistence.prototype.get_cross_subdomain = function() {
- return this.cross_subdomain;
-};
-
-MixpanelPersistence.prototype.set_secure = function(secure) {
- if (secure !== this.secure) {
- this.secure = secure ? true : false;
- this.remove();
- this.save();
- }
-};
-
-MixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {
- var q_key = this._get_queue_key(queue),
- q_data = data[queue],
- set_q = this._get_or_create_queue(SET_ACTION),
- set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),
- unset_q = this._get_or_create_queue(UNSET_ACTION),
- add_q = this._get_or_create_queue(ADD_ACTION),
- union_q = this._get_or_create_queue(UNION_ACTION),
- append_q = this._get_or_create_queue(APPEND_ACTION, []);
-
- if (q_key === SET_QUEUE_KEY) {
- // Update the set queue - we can override any existing values
- _.extend(set_q, q_data);
- // if there was a pending increment, override it
- // with the set.
- this._pop_from_people_queue(ADD_ACTION, q_data);
- // if there was a pending union, override it
- // with the set.
- this._pop_from_people_queue(UNION_ACTION, q_data);
- this._pop_from_people_queue(UNSET_ACTION, q_data);
- } else if (q_key === SET_ONCE_QUEUE_KEY) {
- // only queue the data if there is not already a set_once call for it.
- _.each(q_data, function(v, k) {
- if (!(k in set_once_q)) {
- set_once_q[k] = v;
- }
- });
- this._pop_from_people_queue(UNSET_ACTION, q_data);
- } else if (q_key === UNSET_QUEUE_KEY) {
- _.each(q_data, function(prop) {
-
- // undo previously-queued actions on this key
- _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {
- if (prop in enqueued_obj) {
- delete enqueued_obj[prop];
- }
- });
- _.each(append_q, function(append_obj) {
- if (prop in append_obj) {
- delete append_obj[prop];
- }
- });
-
- unset_q[prop] = true;
-
- });
- } else if (q_key === ADD_QUEUE_KEY) {
- _.each(q_data, function(v, k) {
- // If it exists in the set queue, increment
- // the value
- if (k in set_q) {
- set_q[k] += v;
- } else {
- // If it doesn't exist, update the add
- // queue
- if (!(k in add_q)) {
- add_q[k] = 0;
- }
- add_q[k] += v;
- }
- }, this);
- this._pop_from_people_queue(UNSET_ACTION, q_data);
- } else if (q_key === UNION_QUEUE_KEY) {
- _.each(q_data, function(v, k) {
- if (_.isArray(v)) {
- if (!(k in union_q)) {
- union_q[k] = [];
- }
- // We may send duplicates, the server will dedup them.
- union_q[k] = union_q[k].concat(v);
- }
- });
- this._pop_from_people_queue(UNSET_ACTION, q_data);
- } else if (q_key === APPEND_QUEUE_KEY) {
- append_q.push(q_data);
- this._pop_from_people_queue(UNSET_ACTION, q_data);
- }
-
- console$1.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');
- console$1.log(data);
-
- this.save();
-};
-
-MixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {
- var q = this._get_queue(queue);
- if (!_.isUndefined(q)) {
- _.each(data, function(v, k) {
- delete q[k];
- }, this);
-
- this.save();
- }
-};
-
-MixpanelPersistence.prototype._get_queue_key = function(queue) {
- if (queue === SET_ACTION) {
- return SET_QUEUE_KEY;
- } else if (queue === SET_ONCE_ACTION) {
- return SET_ONCE_QUEUE_KEY;
- } else if (queue === UNSET_ACTION) {
- return UNSET_QUEUE_KEY;
- } else if (queue === ADD_ACTION) {
- return ADD_QUEUE_KEY;
- } else if (queue === APPEND_ACTION) {
- return APPEND_QUEUE_KEY;
- } else if (queue === UNION_ACTION) {
- return UNION_QUEUE_KEY;
- } else {
- console$1.error('Invalid queue:', queue);
- }
-};
-
-MixpanelPersistence.prototype._get_queue = function(queue) {
- return this['props'][this._get_queue_key(queue)];
-};
-MixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {
- var key = this._get_queue_key(queue);
- default_val = _.isUndefined(default_val) ? {} : default_val;
-
- return this['props'][key] || (this['props'][key] = default_val);
-};
-
-MixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {
- var timers = this['props'][EVENT_TIMERS_KEY] || {};
- timers[event_name] = timestamp;
- this['props'][EVENT_TIMERS_KEY] = timers;
- this.save();
-};
-
-MixpanelPersistence.prototype.remove_event_timer = function(event_name) {
- var timers = this['props'][EVENT_TIMERS_KEY] || {};
- var timestamp = timers[event_name];
- if (!_.isUndefined(timestamp)) {
- delete this['props'][EVENT_TIMERS_KEY][event_name];
- this.save();
- }
- return timestamp;
-};
-
-/**
- * Mixpanel Library Object
- * @constructor
- */
-var MixpanelLib = function() {};
-
-/**
- * Mixpanel People Object
- * @constructor
- */
-var MixpanelPeople = function() {};
-
-var MPNotif;
-
-/**
- * create_mplib(token:string, config:object, name:string)
- *
- * This function is used by the init method of MixpanelLib objects
- * as well as the main initializer at the end of the JSLib (that
- * initializes document.mixpanel as well as any additional instances
- * declared before this file has loaded).
- */
-var create_mplib = function(token, config, name) {
- var instance,
- target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];
-
- if (target && init_type === INIT_MODULE) {
- instance = target;
- } else {
- if (target && !_.isArray(target)) {
- console$1.error('You have already initialized ' + name);
- return;
- }
- instance = new MixpanelLib();
- }
-
- instance._init(token, config, name);
-
- instance['people'] = new MixpanelPeople();
- instance['people']._init(instance);
-
- // if any instance on the page has debug = true, we set the
- // global debug to be true
- Config.DEBUG = Config.DEBUG || instance.get_config('debug');
-
- instance['__autotrack_enabled'] = instance.get_config('autotrack');
- if (instance.get_config('autotrack')) {
- var num_buckets = 100;
- var num_enabled_buckets = 100;
- if (!autotrack.enabledForProject(instance.get_config('token'), num_buckets, num_enabled_buckets)) {
- instance['__autotrack_enabled'] = false;
- console$1.log('Not in active bucket: disabling Automatic Event Collection.');
- } else if (!autotrack.isBrowserSupported()) {
- instance['__autotrack_enabled'] = false;
- console$1.log('Disabling Automatic Event Collection because this browser is not supported');
- } else {
- autotrack.init(instance);
- }
- }
-
- // if target is not defined, we called init after the lib already
- // loaded, so there won't be an array of things to execute
- if (!_.isUndefined(target) && _.isArray(target)) {
- // Crunch through the people queue first - we queue this data up &
- // flush on identify, so it's better to do all these operations first
- instance._execute_array.call(instance['people'], target['people']);
- instance._execute_array(target);
- }
-
- return instance;
-};
-
-// Initialization methods
-
-/**
- * This function initializes a new instance of the Mixpanel tracking object.
- * All new instances are added to the main mixpanel object as sub properties (such as
- * mixpanel.library_name) and also returned by this function. To define a
- * second instance on the page, you would call:
- *
- * mixpanel.init('new token', { your: 'config' }, 'library_name');
- *
- * and use it like so:
- *
- * mixpanel.library_name.track(...);
- *
- * @param {String} token Your Mixpanel API token
- * @param {Object} [config] A dictionary of config options to override. See a list of default config options .
- * @param {String} [name] The name for the new mixpanel instance that you want created
- */
-MixpanelLib.prototype.init = function (token, config, name) {
- if (_.isUndefined(name)) {
- console$1.error('You must name your new library: init(token, config, name)');
- return;
- }
- if (name === PRIMARY_INSTANCE_NAME) {
- console$1.error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');
- return;
- }
-
- var instance = create_mplib(token, config, name);
- mixpanel_master[name] = instance;
- instance._loaded();
-
- return instance;
-};
-
-// mixpanel._init(token:string, config:object, name:string)
-//
-// This function sets up the current instance of the mixpanel
-// library. The difference between this method and the init(...)
-// method is this one initializes the actual instance, whereas the
-// init(...) method sets up a new library and calls _init on it.
-//
-MixpanelLib.prototype._init = function(token, config, name) {
- this['__loaded'] = true;
- this['config'] = {};
-
- this.set_config(_.extend({}, DEFAULT_CONFIG, config, {
- 'name': name,
- 'token': token,
- 'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'
- }));
-
- this['_jsc'] = function() {};
-
- this.__dom_loaded_queue = [];
- this.__request_queue = [];
- this.__disabled_events = [];
- this._flags = {
- 'disable_all_events': false,
- 'identify_called': false
- };
-
- this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);
- this._init_gdpr_persistence();
-
- this.register_once({'distinct_id': _.UUID()}, '');
-};
-
-// Private methods
-
-MixpanelLib.prototype._update_persistence = function() {
- var disablePersistence = this.get_config('disable_persistence') || this.has_opted_out_tracking();
- if (this['persistence'].disabled !== disablePersistence) {
- this['persistence'].set_disabled(disablePersistence);
- }
-};
-
-MixpanelLib.prototype._loaded = function() {
- this.get_config('loaded')(this);
-
- // this happens after so a user can call identify/name_tag in
- // the loaded callback
- if (this.get_config('track_pageview')) {
- this.track_pageview();
- }
-};
-
-MixpanelLib.prototype._dom_loaded = function() {
- _.each(this.__dom_loaded_queue, function(item) {
- this._track_dom.apply(this, item);
- }, this);
-
- if (!this.has_opted_out_tracking()) {
- _.each(this.__request_queue, function(item) {
- this._send_request.apply(this, item);
- }, this);
- }
-
- delete this.__dom_loaded_queue;
- delete this.__request_queue;
-};
-
-MixpanelLib.prototype._track_dom = function(DomClass, args) {
- if (this.get_config('img')) {
- console$1.error('You can\'t use DOM tracking functions with img = true.');
- return false;
- }
-
- if (!DOM_LOADED) {
- this.__dom_loaded_queue.push([DomClass, args]);
- return false;
- }
-
- var dt = new DomClass().init(this);
- return dt.track.apply(dt, args);
-};
-
-/**
- * _prepare_callback() should be called by callers of _send_request for use
- * as the callback argument.
- *
- * If there is no callback, this returns null.
- * If we are going to make XHR/XDR requests, this returns a function.
- * If we are going to use script tags, this returns a string to use as the
- * callback GET param.
- */
-MixpanelLib.prototype._prepare_callback = function(callback, data) {
- if (_.isUndefined(callback)) {
- return null;
- }
-
- if (USE_XHR) {
- var callback_function = function(response) {
- callback(response, data);
- };
- return callback_function;
- } else {
- // if the user gives us a callback, we store as a random
- // property on this instances jsc function and update our
- // callback string to reflect that.
- var jsc = this['_jsc'];
- var randomized_cb = '' + Math.floor(Math.random() * 100000000);
- var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';
- jsc[randomized_cb] = function(response) {
- delete jsc[randomized_cb];
- callback(response, data);
- };
- return callback_string;
- }
-};
-
-MixpanelLib.prototype._send_request = function(url, data, callback) {
- if (ENQUEUE_REQUESTS) {
- this.__request_queue.push(arguments);
- return;
- }
-
- // needed to correctly format responses
- var verbose_mode = this.get_config('verbose');
- if (data['verbose']) { verbose_mode = true; }
-
- if (this.get_config('test')) { data['test'] = 1; }
- if (verbose_mode) { data['verbose'] = 1; }
- if (this.get_config('img')) { data['img'] = 1; }
- if (!USE_XHR) {
- if (callback) {
- data['callback'] = callback;
- } else if (verbose_mode || this.get_config('test')) {
- // Verbose output (from verbose mode, or an error in test mode) is a json blob,
- // which by itself is not valid javascript. Without a callback, this verbose output will
- // cause an error when returned via jsonp, so we force a no-op callback param.
- // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4
- data['callback'] = '(function(){})';
- }
- }
-
- data['ip'] = this.get_config('ip')?1:0;
- data['_'] = new Date().getTime().toString();
- url += '?' + _.HTTPBuildQuery(data);
-
- if ('img' in data) {
- var img = document$1.createElement('img');
- img.src = url;
- document$1.body.appendChild(img);
- } else if (USE_XHR) {
- try {
- var req = new XMLHttpRequest();
- req.open('GET', url, true);
-
- var headers = this.get_config('xhr_headers');
- _.each(headers, function(headerValue, headerName) {
- req.setRequestHeader(headerName, headerValue);
- });
-
- // send the mp_optout cookie
- // withCredentials cannot be modified until after calling .open on Android and Mobile Safari
- req.withCredentials = true;
- req.onreadystatechange = function () {
- if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4
- if (req.status === 200) {
- if (callback) {
- if (verbose_mode) {
- var response;
- try {
- response = _.JSONDecode(req.responseText);
- } catch (e) {
- console$1.error(e);
- return;
- }
- callback(response);
- } else {
- callback(Number(req.responseText));
- }
- }
- } else {
- var error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;
- console$1.error(error);
- if (callback) {
- if (verbose_mode) {
- callback({status: 0, error: error});
- } else {
- callback(0);
- }
- }
- }
- }
- };
- req.send(null);
- } catch (e) {
- console$1.error(e);
- }
- } else {
- var script = document$1.createElement('script');
- script.type = 'text/javascript';
- script.async = true;
- script.defer = true;
- script.src = url;
- var s = document$1.getElementsByTagName('script')[0];
- s.parentNode.insertBefore(script, s);
- }
-};
-
-/**
- * _execute_array() deals with processing any mixpanel function
- * calls that were called before the Mixpanel library were loaded
- * (and are thus stored in an array so they can be called later)
- *
- * Note: we fire off all the mixpanel function calls && user defined
- * functions BEFORE we fire off mixpanel tracking calls. This is so
- * identify/register/set_config calls can properly modify early
- * tracking calls.
- *
- * @param {Array} array
- */
-MixpanelLib.prototype._execute_array = function(array) {
- var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];
- _.each(array, function(item) {
- if (item) {
- fn_name = item[0];
- if (typeof(item) === 'function') {
- item.call(this);
- } else if (_.isArray(item) && fn_name === 'alias') {
- alias_calls.push(item);
- } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {
- tracking_calls.push(item);
- } else {
- other_calls.push(item);
- }
- }
- }, this);
-
- var execute = function(calls, context) {
- _.each(calls, function(item) {
- this[item[0]].apply(this, item.slice(1));
- }, context);
- };
-
- execute(alias_calls, this);
- execute(other_calls, this);
- execute(tracking_calls, this);
-};
-
-/**
- * push() keeps the standard async-array-push
- * behavior around after the lib is loaded.
- * This is only useful for external integrations that
- * do not wish to rely on our convenience methods
- * (created in the snippet).
- *
- * ### Usage:
- * mixpanel.push(['register', { a: 'b' }]);
- *
- * @param {Array} item A [function_name, args...] array to be executed
- */
-MixpanelLib.prototype.push = function(item) {
- this._execute_array([item]);
-};
-
-/**
- * Disable events on the Mixpanel object. If passed no arguments,
- * this function disables tracking of any event. If passed an
- * array of event names, those events will be disabled, but other
- * events will continue to be tracked.
- *
- * Note: this function does not stop other mixpanel functions from
- * firing, such as register() or people.set().
- *
- * @param {Array} [events] An array of event names to disable
- */
-MixpanelLib.prototype.disable = function(events) {
- if (typeof(events) === 'undefined') {
- this._flags.disable_all_events = true;
- } else {
- this.__disabled_events = this.__disabled_events.concat(events);
- }
-};
-
-/**
- * Track an event. This is the most important and
- * frequently used Mixpanel function.
- *
- * ### Usage:
- *
- * // track an event named 'Registered'
- * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});
- *
- * To track link clicks or form submissions, see track_links() or track_forms().
- *
- * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.
- * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.
- * @param {Function} [callback] If provided, the callback function will be called after tracking the event.
- */
-MixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, callback) {
- if (typeof(callback) !== 'function') {
- callback = function() {};
- }
-
- if (_.isUndefined(event_name)) {
- console$1.error('No event name provided to mixpanel.track');
- return;
- }
-
- if (this._event_is_disabled(event_name)) {
- callback(0);
- return;
- }
-
- // set defaults
- properties = properties || {};
- properties['token'] = this.get_config('token');
-
- // set $duration if time_event was previously called for this event
- var start_timestamp = this['persistence'].remove_event_timer(event_name);
- if (!_.isUndefined(start_timestamp)) {
- var duration_in_ms = new Date().getTime() - start_timestamp;
- properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));
- }
-
- // update persistence
- this['persistence'].update_search_keyword(document$1.referrer);
-
- if (this.get_config('store_google')) { this['persistence'].update_campaign_params(); }
- if (this.get_config('save_referrer')) { this['persistence'].update_referrer_info(document$1.referrer); }
-
- // note: extend writes to the first object, so lets make sure we
- // don't write to the persistence properties object and info
- // properties object by passing in a new object
-
- // update properties with pageview info and super-properties
- properties = _.extend(
- {},
- _.info.properties(),
- this['persistence'].properties(),
- properties
- );
-
- var property_blacklist = this.get_config('property_blacklist');
- if (_.isArray(property_blacklist)) {
- _.each(property_blacklist, function(blacklisted_prop) {
- delete properties[blacklisted_prop];
- });
- } else {
- console$1.error('Invalid value for property_blacklist config: ' + property_blacklist);
- }
-
- var data = {
- 'event': event_name,
- 'properties': properties
- };
-
- var truncated_data = _.truncate(data, 255);
- var json_data = _.JSONEncode(truncated_data);
- var encoded_data = _.base64Encode(json_data);
-
- console$1.log('MIXPANEL REQUEST:');
- console$1.log(truncated_data);
-
- this._send_request(
- this.get_config('api_host') + '/track/',
- { 'data': encoded_data },
- this._prepare_callback(callback, truncated_data)
- );
-
- return truncated_data;
-});
-
-/**
- * Track a page view event, which is currently ignored by the server.
- * This function is called by default on page load unless the
- * track_pageview configuration variable is false.
- *
- * @param {String} [page] The url of the page to record. If you don't include this, it defaults to the current url.
- * @api private
- */
-MixpanelLib.prototype.track_pageview = function(page) {
- if (_.isUndefined(page)) {
- page = document$1.location.href;
- }
- this.track('mp_page_view', _.info.pageviewInfo(page));
-};
-
-/**
- * Track clicks on a set of document elements. Selector must be a
- * valid query. Elements must exist on the page at the time track_links is called.
- *
- * ### Usage:
- *
- * // track click for link id #nav
- * mixpanel.track_links('#nav', 'Clicked Nav Link');
- *
- * ### Notes:
- *
- * This function will wait up to 300 ms for the Mixpanel
- * servers to respond. If they have not responded by that time
- * it will head to the link without ensuring that your event
- * has been tracked. To configure this timeout please see the
- * set_config() documentation below.
- *
- * If you pass a function in as the properties argument, the
- * function will receive the DOMElement that triggered the
- * event as an argument. You are expected to return an object
- * from the function; any properties defined on this object
- * will be sent to mixpanel as event properties.
- *
- * @type {Function}
- * @param {Object|String} query A valid DOM query, element or jQuery-esque list
- * @param {String} event_name The name of the event to track
- * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement
- */
-MixpanelLib.prototype.track_links = function() {
- return this._track_dom.call(this, LinkTracker, arguments);
-};
-
-/**
- * Track form submissions. Selector must be a valid query.
- *
- * ### Usage:
- *
- * // track submission for form id 'register'
- * mixpanel.track_forms('#register', 'Created Account');
- *
- * ### Notes:
- *
- * This function will wait up to 300 ms for the mixpanel
- * servers to respond, if they have not responded by that time
- * it will head to the link without ensuring that your event
- * has been tracked. To configure this timeout please see the
- * set_config() documentation below.
- *
- * If you pass a function in as the properties argument, the
- * function will receive the DOMElement that triggered the
- * event as an argument. You are expected to return an object
- * from the function; any properties defined on this object
- * will be sent to mixpanel as event properties.
- *
- * @type {Function}
- * @param {Object|String} query A valid DOM query, element or jQuery-esque list
- * @param {String} event_name The name of the event to track
- * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement
- */
-MixpanelLib.prototype.track_forms = function() {
- return this._track_dom.call(this, FormTracker, arguments);
-};
-
-/**
- * Time an event by including the time between this call and a
- * later 'track' call for the same event in the properties sent
- * with the event.
- *
- * ### Usage:
- *
- * // time an event named 'Registered'
- * mixpanel.time_event('Registered');
- * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});
- *
- * When called for a particular event name, the next track call for that event
- * name will include the elapsed time between the 'time_event' and 'track'
- * calls. This value is stored as seconds in the '$duration' property.
- *
- * @param {String} event_name The name of the event.
- */
-MixpanelLib.prototype.time_event = function(event_name) {
- if (_.isUndefined(event_name)) {
- console$1.error('No event name provided to mixpanel.time_event');
- return;
- }
-
- if (this._event_is_disabled(event_name)) {
- return;
- }
-
- this['persistence'].set_event_timer(event_name, new Date().getTime());
-};
-
-/**
- * Register a set of super properties, which are included with all
- * events. This will overwrite previous super property values.
- *
- * ### Usage:
- *
- * // register 'Gender' as a super property
- * mixpanel.register({'Gender': 'Female'});
- *
- * // register several super properties when a user signs up
- * mixpanel.register({
- * 'Email': 'jdoe@example.com',
- * 'Account Type': 'Free'
- * });
- *
- * @param {Object} properties An associative array of properties to store about the user
- * @param {Number} [days] How many days since the user's last visit to store the super properties
- */
-MixpanelLib.prototype.register = function(props, days) {
- this['persistence'].register(props, days);
-};
-
-/**
- * Register a set of super properties only once. This will not
- * overwrite previous super property values, unlike register().
- *
- * ### Usage:
- *
- * // register a super property for the first time only
- * mixpanel.register_once({
- * 'First Login Date': new Date().toISOString()
- * });
- *
- * ### Notes:
- *
- * If default_value is specified, current super properties
- * with that value will be overwritten.
- *
- * @param {Object} properties An associative array of properties to store about the user
- * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'
- * @param {Number} [days] How many days since the users last visit to store the super properties
- */
-MixpanelLib.prototype.register_once = function(props, default_value, days) {
- this['persistence'].register_once(props, default_value, days);
-};
-
-/**
- * Delete a super property stored with the current user.
- *
- * @param {String} property The name of the super property to remove
- */
-MixpanelLib.prototype.unregister = function(property) {
- this['persistence'].unregister(property);
-};
-
-MixpanelLib.prototype._register_single = function(prop, value) {
- var props = {};
- props[prop] = value;
- this.register(props);
-};
-
-/**
- * Identify a user with a unique ID instead of a Mixpanel
- * randomly generated distinct_id. If the method is never called,
- * then unique visitors will be identified by a UUID generated
- * the first time they visit the site.
- *
- * ### Notes:
- *
- * You can call this function to overwrite a previously set
- * unique ID for the current user. Mixpanel cannot translate
- * between IDs at this time, so when you change a user's ID
- * they will appear to be a new user.
- *
- * When used alone, mixpanel.identify will change the user's
- * distinct_id to the unique ID provided. When used in tandem
- * with mixpanel.alias, it will allow you to identify based on
- * unique ID and map that back to the original, anonymous
- * distinct_id given to the user upon her first arrival to your
- * site (thus connecting anonymous pre-signup activity to
- * post-signup activity). Though the two work together, do not
- * call identify() at the same time as alias(). Calling the two
- * at the same time can cause a race condition, so it is best
- * practice to call identify on the original, anonymous ID
- * right after you've aliased it.
- * Learn more about how mixpanel.identify and mixpanel.alias can be used .
- *
- * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.
- */
-MixpanelLib.prototype.identify = function(
- unique_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback
-) {
- // Optional Parameters
- // _set_callback:function A callback to be run if and when the People set queue is flushed
- // _add_callback:function A callback to be run if and when the People add queue is flushed
- // _append_callback:function A callback to be run if and when the People append queue is flushed
- // _set_once_callback:function A callback to be run if and when the People set_once queue is flushed
- // _union_callback:function A callback to be run if and when the People union queue is flushed
- // _unset_callback:function A callback to be run if and when the People unset queue is flushed
-
- // identify only changes the distinct id if it doesn't match either the existing or the alias;
- // if it's new, blow away the alias as well.
- if (unique_id !== this.get_distinct_id() && unique_id !== this.get_property(ALIAS_ID_KEY)) {
- this.unregister(ALIAS_ID_KEY);
- this._register_single('distinct_id', unique_id);
- }
- this._check_and_handle_notifications(this.get_distinct_id());
- this._flags.identify_called = true;
- // Flush any queued up people requests
- this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback);
-};
-
-/**
- * Clears super properties and generates a new random distinct_id for this instance.
- * Useful for clearing data when a user logs out.
- */
-MixpanelLib.prototype.reset = function() {
- this['persistence'].clear();
- this._flags.identify_called = false;
- this.register_once({'distinct_id': _.UUID()}, '');
-};
-
-/**
- * Returns the current distinct id of the user. This is either the id automatically
- * generated by the library or the id that has been passed by a call to identify().
- *
- * ### Notes:
- *
- * get_distinct_id() can only be called after the Mixpanel library has finished loading.
- * init() has a loaded function available to handle this automatically. For example:
- *
- * // set distinct_id after the mixpanel library has loaded
- * mixpanel.init('YOUR PROJECT TOKEN', {
- * loaded: function(mixpanel) {
- * distinct_id = mixpanel.get_distinct_id();
- * }
- * });
- */
-MixpanelLib.prototype.get_distinct_id = function() {
- return this.get_property('distinct_id');
-};
-
-/**
- * Create an alias, which Mixpanel will use to link two distinct_ids going forward (not retroactively).
- * Multiple aliases can map to the same original ID, but not vice-versa. Aliases can also be chained - the
- * following is a valid scenario:
- *
- * mixpanel.alias('new_id', 'existing_id');
- * ...
- * mixpanel.alias('newer_id', 'new_id');
- *
- * If the original ID is not passed in, we will use the current distinct_id - probably the auto-generated GUID.
- *
- * ### Notes:
- *
- * The best practice is to call alias() when a unique ID is first created for a user
- * (e.g., when a user first registers for an account and provides an email address).
- * alias() should never be called more than once for a given user, except to
- * chain a newer ID to a previously new ID, as described above.
- *
- * @param {String} alias A unique identifier that you want to use for this user in the future.
- * @param {String} [original] The current identifier being used for this user.
- */
-MixpanelLib.prototype.alias = function(alias, original) {
- // If the $people_distinct_id key exists in persistence, there has been a previous
- // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with
- // this ID, as it will duplicate users.
- if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {
- console$1.critical('Attempting to create alias for existing People user - aborting.');
- return -2;
- }
-
- var _this = this;
- if (_.isUndefined(original)) {
- original = this.get_distinct_id();
- }
- if (alias !== original) {
- this._register_single(ALIAS_ID_KEY, alias);
- return this.track('$create_alias', { 'alias': alias, 'distinct_id': original }, function() {
- // Flush the people queue
- _this.identify(alias);
- });
- } else {
- console$1.error('alias matches current distinct_id - skipping api call.');
- this.identify(alias);
- return -1;
- }
-};
-
-/**
- * Provide a string to recognize the user by. The string passed to
- * this method will appear in the Mixpanel Streams product rather
- * than an automatically generated name. Name tags do not have to
- * be unique.
- *
- * This value will only be included in Streams data.
- *
- * @param {String} name_tag A human readable name for the user
- * @api private
- */
-MixpanelLib.prototype.name_tag = function(name_tag) {
- this._register_single('mp_name_tag', name_tag);
-};
-
-/**
- * Update the configuration of a mixpanel library instance.
- *
- * The default config is:
- *
- * {
- * // super properties cookie expiration (in days)
- * cookie_expiration: 365
- *
- * // super properties span subdomains
- * cross_subdomain_cookie: true
- *
- * // debug mode
- * debug: false
- *
- * // if this is true, the mixpanel cookie or localStorage entry
- * // will be deleted, and no user persistence will take place
- * disable_persistence: false
- *
- * // if this is true, Mixpanel will automatically determine
- * // City, Region and Country data using the IP address of
- * //the client
- * ip: true
- *
- * // opt users out of tracking by this Mixpanel instance by default
- * opt_out_tracking_by_default: false
- *
- * // persistence mechanism used by opt-in/opt-out methods - cookie
- * // or localStorage - falls back to cookie if localStorage is unavailable
- * opt_out_tracking_persistence_type: 'localStorage'
- *
- * // customize the name of cookie/localStorage set by opt-in/opt-out methods
- * opt_out_tracking_cookie_prefix: null
- *
- * // type of persistent store for super properties (cookie/
- * // localStorage) if set to 'localStorage', any existing
- * // mixpanel cookie value with the same persistence_name
- * // will be transferred to localStorage and deleted
- * persistence: 'cookie'
- *
- * // name for super properties persistent store
- * persistence_name: ''
- *
- * // names of properties/superproperties which should never
- * // be sent with track() calls
- * property_blacklist: []
- *
- * // if this is true, mixpanel cookies will be marked as
- * // secure, meaning they will only be transmitted over https
- * secure_cookie: false
- *
- * // the amount of time track_links will
- * // wait for Mixpanel's servers to respond
- * track_links_timeout: 300
- *
- * // should we track a page view on page load
- * track_pageview: true
- *
- * // if you set upgrade to be true, the library will check for
- * // a cookie from our old js library and import super
- * // properties from it, then the old cookie is deleted
- * // The upgrade config option only works in the initialization,
- * // so make sure you set it when you create the library.
- * upgrade: false
- *
- * // extra HTTP request headers to set for each API request, in
- * // the format {'Header-Name': value}
- * xhr_headers: {}
- * }
- *
- *
- * @param {Object} config A dictionary of new configuration values to update
- */
-MixpanelLib.prototype.set_config = function(config) {
- if (_.isObject(config)) {
- _.extend(this['config'], config);
-
- if (!this.get_config('persistence_name')) {
- this['config']['persistence_name'] = this['config']['cookie_name'];
- }
- if (!this.get_config('disable_persistence')) {
- this['config']['disable_persistence'] = this['config']['disable_cookie'];
- }
-
- if (this['persistence']) {
- this['persistence'].update_config(this['config']);
- }
- Config.DEBUG = Config.DEBUG || this.get_config('debug');
- }
-};
-
-/**
- * returns the current config object for the library.
- */
-MixpanelLib.prototype.get_config = function(prop_name) {
- return this['config'][prop_name];
-};
-
-/**
- * Returns the value of the super property named property_name. If no such
- * property is set, get_property() will return the undefined value.
- *
- * ### Notes:
- *
- * get_property() can only be called after the Mixpanel library has finished loading.
- * init() has a loaded function available to handle this automatically. For example:
- *
- * // grab value for 'user_id' after the mixpanel library has loaded
- * mixpanel.init('YOUR PROJECT TOKEN', {
- * loaded: function(mixpanel) {
- * user_id = mixpanel.get_property('user_id');
- * }
- * });
- *
- * @param {String} property_name The name of the super property you want to retrieve
- */
-MixpanelLib.prototype.get_property = function(property_name) {
- return this['persistence']['props'][property_name];
-};
-
-MixpanelLib.prototype.toString = function() {
- var name = this.get_config('name');
- if (name !== PRIMARY_INSTANCE_NAME) {
- name = PRIMARY_INSTANCE_NAME + '.' + name;
- }
- return name;
-};
-
-MixpanelLib.prototype._event_is_disabled = function(event_name) {
- return _.isBlockedUA(userAgent) ||
- this._flags.disable_all_events ||
- _.include(this.__disabled_events, event_name);
-};
-
-MixpanelLib.prototype._check_and_handle_notifications = addOptOutCheckMixpanelLib(function(distinct_id) {
- if (
- !distinct_id ||
- this._flags.identify_called ||
- this.get_config('disable_notifications')
- ) {
- return;
- }
-
- console$1.log('MIXPANEL NOTIFICATION CHECK');
-
- var data = {
- 'verbose': true,
- 'version': '2',
- 'lib': 'web',
- 'token': this.get_config('token'),
- 'distinct_id': distinct_id
- };
- var self = this;
- this._send_request(
- this.get_config('api_host') + '/decide/',
- data,
- this._prepare_callback(function(r) {
- if (r['notifications'] && r['notifications'].length > 0) {
- self._show_notification.call(self, r['notifications'][0]);
- }
- })
- );
-});
-
-MixpanelLib.prototype._show_notification = function(notification_data) {
- var notification = new MPNotif(notification_data, this);
- notification.show();
-};
-
-// perform some housekeeping around GDPR persistence of opt-in/out state
-MixpanelLib.prototype._init_gdpr_persistence = function() {
- var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';
-
- // try to convert opt-in/out cookies to localStorage if possible
- if (is_localStorage_requested && _.localStorage.is_supported()) {
- if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {
- this.opt_in_tracking();
- }
- if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {
- this.opt_out_tracking();
- }
- this.clear_opt_in_out_tracking({'persistence_type': 'cookie'});
- }
-
- // check whether we should opt out by default and update persistence accordingly
- if (this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')) {
- _.cookie.remove('mp_optout');
- this.opt_out_tracking();
- }
- this._update_persistence();
-};
-
-// call a base gdpr function after constructing the appropriate token and options args
-MixpanelLib.prototype._call_gdpr_func = function(func, options) {
- options = _.extend({
- 'track': _.bind(this.track, this),
- 'persistence_type': this.get_config('opt_out_tracking_persistence_type'),
- 'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),
- 'cookie_expiration': this.get_config('cookie_expiration'),
- 'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),
- 'secure_cookie': this.get_config('secure_cookie')
- }, options);
-
- // check if localStorage can be used for recording opt out status, fall back to cookie if not
- if (!_.localStorage.is_supported()) {
- options['persistence_type'] = 'cookie';
- }
-
- return func(this.get_config('token'), {
- track: options['track'],
- trackEventName: options['track_event_name'],
- trackProperties: options['track_properties'],
- persistenceType: options['persistence_type'],
- persistencePrefix: options['cookie_prefix'],
- cookieExpiration: options['cookie_expiration'],
- crossSubdomainCookie: options['cross_subdomain_cookie'],
- secureCookie: options['secure_cookie']
- });
-};
-
-/**
- * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance
- *
- * ### Usage
- *
- * // opt user in
- * mixpanel.opt_in_tracking();
- *
- * // opt user in with specific event name, properties, cookie configuration
- * mixpanel.opt_in_tracking({
- * track_event_name: 'User opted in',
- * track_event_properties: {
- * 'Email': 'jdoe@example.com'
- * },
- * cookie_expiration: 30,
- * secure_cookie: true
- * });
- *
- * @param {Object} [options] A dictionary of config options to override
- * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)
- * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action
- * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action
- * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable
- * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name
- * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)
- * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)
- * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)
- */
-MixpanelLib.prototype.opt_in_tracking = function(options) {
- this._call_gdpr_func(optIn, options);
- this._update_persistence();
-};
-
-/**
- * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance
- *
- * ### Usage
- *
- * // opt user out
- * mixpanel.opt_out_tracking();
- *
- * // opt user out with different cookie configuration from Mixpanel instance
- * mixpanel.opt_out_tracking({
- * cookie_expiration: 30,
- * secure_cookie: true
- * });
- *
- * @param {Object} [options] A dictionary of config options to override
- * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out
- * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable
- * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name
- * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)
- * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)
- * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)
- */
-MixpanelLib.prototype.opt_out_tracking = function(options) {
- // delete use and clear charges since these methods may be disabled by opt-out
- options = _.extend({'delete_user': true}, options);
- if (options['delete_user'] && this['people'] && this['people']._identify_called()) {
- this['people'].delete_user();
- this['people'].clear_charges();
- }
-
- this._call_gdpr_func(optOut, options);
- this._update_persistence();
-};
-
-/**
- * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance
- *
- * ### Usage
- *
- * var has_opted_in = mixpanel.has_opted_in_tracking();
- * // use has_opted_in value
- *
- * @param {Object} [options] A dictionary of config options to override
- * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable
- * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name
- * @returns {boolean} current opt-in status
- */
-MixpanelLib.prototype.has_opted_in_tracking = function(options) {
- return this._call_gdpr_func(hasOptedIn, options);
-};
-
-/**
- * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance
- *
- * ### Usage
- *
- * var has_opted_out = mixpanel.has_opted_out_tracking();
- * // use has_opted_out value
- *
- * @param {Object} [options] A dictionary of config options to override
- * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable
- * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name
- * @returns {boolean} current opt-out status
- */
-MixpanelLib.prototype.has_opted_out_tracking = function(options) {
- return this._call_gdpr_func(hasOptedOut, options);
-};
-
-/**
- * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance
- *
- * ### Usage
- *
- * // clear user's opt-in/out status
- * mixpanel.clear_opt_in_out_tracking();
- *
- * // clear user's opt-in/out status with specific cookie configuration - should match
- * // configuration used when opt_in_tracking/opt_out_tracking methods were called.
- * mixpanel.clear_opt_in_out_tracking({
- * cookie_expiration: 30,
- * secure_cookie: true
- * });
- *
- * @param {Object} [options] A dictionary of config options to override
- * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable
- * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name
- * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)
- * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)
- * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)
- */
-MixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {
- this._call_gdpr_func(clearOptInOut, options);
- this._update_persistence();
-};
-
-
-MixpanelPeople.prototype._init = function(mixpanel_instance) {
- this._mixpanel = mixpanel_instance;
-};
-
-/*
- * Set properties on a user record.
- *
- * ### Usage:
- *
- * mixpanel.people.set('gender', 'm');
- *
- * // or set multiple properties at once
- * mixpanel.people.set({
- * 'Company': 'Acme',
- * 'Plan': 'Premium',
- * 'Upgrade date': new Date()
- * });
- * // properties can be strings, integers, dates, or lists
- *
- * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.
- * @param {*} [to] A value to set on the given property name
- * @param {Function} [callback] If provided, the callback will be called after the tracking event
- */
-MixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {
- var data = {};
- var $set = {};
- if (_.isObject(prop)) {
- _.each(prop, function(v, k) {
- if (!this._is_reserved_property(k)) {
- $set[k] = v;
- }
- }, this);
- callback = to;
- } else {
- $set[prop] = to;
- }
-
- // make sure that the referrer info has been updated and saved
- if (this._get_config('save_referrer')) {
- this._mixpanel['persistence'].update_referrer_info(document$1.referrer);
- }
-
- // update $set object with default people properties
- $set = _.extend(
- {},
- _.info.people_properties(),
- this._mixpanel['persistence'].get_referrer_info(),
- $set
- );
-
- data[SET_ACTION] = $set;
-
- return this._send_request(data, callback);
-});
-
-/*
- * Set properties on a user record, only if they do not yet exist.
- * This will not overwrite previous people property values, unlike
- * people.set().
- *
- * ### Usage:
- *
- * mixpanel.people.set_once('First Login Date', new Date());
- *
- * // or set multiple properties at once
- * mixpanel.people.set_once({
- * 'First Login Date': new Date(),
- * 'Starting Plan': 'Premium'
- * });
- *
- * // properties can be strings, integers or dates
- *
- * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.
- * @param {*} [to] A value to set on the given property name
- * @param {Function} [callback] If provided, the callback will be called after the tracking event
- */
-MixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {
- var data = {};
- var $set_once = {};
- if (_.isObject(prop)) {
- _.each(prop, function(v, k) {
- if (!this._is_reserved_property(k)) {
- $set_once[k] = v;
- }
- }, this);
- callback = to;
- } else {
- $set_once[prop] = to;
- }
- data[SET_ONCE_ACTION] = $set_once;
- return this._send_request(data, callback);
-});
-
-/*
- * Unset properties on a user record (permanently removes the properties and their values from a profile).
- *
- * ### Usage:
- *
- * mixpanel.people.unset('gender');
- *
- * // or unset multiple properties at once
- * mixpanel.people.unset(['gender', 'Company']);
- *
- * @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.
- * @param {Function} [callback] If provided, the callback will be called after the tracking event
- */
-MixpanelPeople.prototype.unset = function(prop, callback) {
- var data = {};
- var $unset = [];
- if (!_.isArray(prop)) {
- prop = [prop];
- }
-
- _.each(prop, function(k) {
- if (!this._is_reserved_property(k)) {
- $unset.push(k);
- }
- }, this);
-
- data[UNSET_ACTION] = $unset;
-
- return this._send_request(data, callback);
-};
-
-/*
- * Increment/decrement numeric people analytics properties.
- *
- * ### Usage:
- *
- * mixpanel.people.increment('page_views', 1);
- *
- * // or, for convenience, if you're just incrementing a counter by
- * // 1, you can simply do
- * mixpanel.people.increment('page_views');
- *
- * // to decrement a counter, pass a negative number
- * mixpanel.people.increment('credits_left', -1);
- *
- * // like mixpanel.people.set(), you can increment multiple
- * // properties at once:
- * mixpanel.people.increment({
- * counter1: 1,
- * counter2: 6
- * });
- *
- * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.
- * @param {Number} [by] An amount to increment the given property
- * @param {Function} [callback] If provided, the callback will be called after the tracking event
- */
-MixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {
- var data = {};
- var $add = {};
- if (_.isObject(prop)) {
- _.each(prop, function(v, k) {
- if (!this._is_reserved_property(k)) {
- if (isNaN(parseFloat(v))) {
- console$1.error('Invalid increment value passed to mixpanel.people.increment - must be a number');
- return;
- } else {
- $add[k] = v;
- }
- }
- }, this);
- callback = by;
- } else {
- // convenience: mixpanel.people.increment('property'); will
- // increment 'property' by 1
- if (_.isUndefined(by)) {
- by = 1;
- }
- $add[prop] = by;
- }
- data[ADD_ACTION] = $add;
-
- return this._send_request(data, callback);
-});
-
-/*
- * Append a value to a list-valued people analytics property.
- *
- * ### Usage:
- *
- * // append a value to a list, creating it if needed
- * mixpanel.people.append('pages_visited', 'homepage');
- *
- * // like mixpanel.people.set(), you can append multiple
- * // properties at once:
- * mixpanel.people.append({
- * list1: 'bob',
- * list2: 123
- * });
- *
- * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.
- * @param {*} [value] An item to append to the list
- * @param {Function} [callback] If provided, the callback will be called after the tracking event
- */
-MixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {
- var data = {};
- var $append = {};
- if (_.isObject(list_name)) {
- _.each(list_name, function(v, k) {
- if (!this._is_reserved_property(k)) {
- $append[k] = v;
- }
- }, this);
- callback = value;
- } else {
- $append[list_name] = value;
- }
- data[APPEND_ACTION] = $append;
-
- return this._send_request(data, callback);
-});
-
-/*
- * Merge a given list with a list-valued people analytics property,
- * excluding duplicate values.
- *
- * ### Usage:
- *
- * // merge a value to a list, creating it if needed
- * mixpanel.people.union('pages_visited', 'homepage');
- *
- * // like mixpanel.people.set(), you can append multiple
- * // properties at once:
- * mixpanel.people.union({
- * list1: 'bob',
- * list2: 123
- * });
- *
- * // like mixpanel.people.append(), you can append multiple
- * // values to the same list:
- * mixpanel.people.union({
- * list1: ['bob', 'billy']
- * });
- *
- * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.
- * @param {*} [value] Value / values to merge with the given property
- * @param {Function} [callback] If provided, the callback will be called after the tracking event
- */
-MixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {
- var data = {};
- var $union = {};
- if (_.isObject(list_name)) {
- _.each(list_name, function(v, k) {
- if (!this._is_reserved_property(k)) {
- $union[k] = _.isArray(v) ? v : [v];
- }
- }, this);
- callback = values;
- } else {
- $union[list_name] = _.isArray(values) ? values : [values];
- }
- data[UNION_ACTION] = $union;
-
- return this._send_request(data, callback);
-});
-
-/*
- * Record that you have charged the current user a certain amount
- * of money. Charges recorded with track_charge() will appear in the
- * Mixpanel revenue report.
- *
- * ### Usage:
- *
- * // charge a user $50
- * mixpanel.people.track_charge(50);
- *
- * // charge a user $30.50 on the 2nd of january
- * mixpanel.people.track_charge(30.50, {
- * '$time': new Date('jan 1 2012')
- * });
- *
- * @param {Number} amount The amount of money charged to the current user
- * @param {Object} [properties] An associative array of properties associated with the charge
- * @param {Function} [callback] If provided, the callback will be called when the server responds
- */
-MixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function(amount, properties, callback) {
- if (!_.isNumber(amount)) {
- amount = parseFloat(amount);
- if (isNaN(amount)) {
- console$1.error('Invalid value passed to mixpanel.people.track_charge - must be a number');
- return;
- }
- }
-
- return this.append('$transactions', _.extend({
- '$amount': amount
- }, properties), callback);
-});
-
-/*
- * Permanently clear all revenue report transactions from the
- * current user's people analytics profile.
- *
- * ### Usage:
- *
- * mixpanel.people.clear_charges();
- *
- * @param {Function} [callback] If provided, the callback will be called after the tracking event
- */
-MixpanelPeople.prototype.clear_charges = function(callback) {
- return this.set('$transactions', [], callback);
-};
-
-/*
- * Permanently deletes the current people analytics profile from
- * Mixpanel (using the current distinct_id).
- *
- * ### Usage:
- *
- * // remove the all data you have stored about the current user
- * mixpanel.people.delete_user();
- *
- */
-MixpanelPeople.prototype.delete_user = function() {
- if (!this._identify_called()) {
- console$1.error('mixpanel.people.delete_user() requires you to call identify() first');
- return;
- }
- var data = {'$delete': this._mixpanel.get_distinct_id()};
- return this._send_request(data);
-};
-
-MixpanelPeople.prototype.toString = function() {
- return this._mixpanel.toString() + '.people';
-};
-
-MixpanelPeople.prototype._send_request = function(data, callback) {
- data['$token'] = this._get_config('token');
- data['$distinct_id'] = this._mixpanel.get_distinct_id();
-
- var date_encoded_data = _.encodeDates(data);
- var truncated_data = _.truncate(date_encoded_data, 255);
- var json_data = _.JSONEncode(date_encoded_data);
- var encoded_data = _.base64Encode(json_data);
-
- if (!this._identify_called()) {
- this._enqueue(data);
- if (!_.isUndefined(callback)) {
- if (this._get_config('verbose')) {
- callback({status: -1, error: null});
- } else {
- callback(-1);
- }
- }
- return truncated_data;
- }
-
- console$1.log('MIXPANEL PEOPLE REQUEST:');
- console$1.log(truncated_data);
-
- this._mixpanel._send_request(
- this._get_config('api_host') + '/engage/',
- {'data': encoded_data},
- this._mixpanel._prepare_callback(callback, truncated_data)
- );
-
- return truncated_data;
-};
-
-MixpanelPeople.prototype._get_config = function(conf_var) {
- return this._mixpanel.get_config(conf_var);
-};
-
-MixpanelPeople.prototype._identify_called = function() {
- return this._mixpanel._flags.identify_called === true;
-};
-
-// Queue up engage operations if identify hasn't been called yet.
-MixpanelPeople.prototype._enqueue = function(data) {
- if (SET_ACTION in data) {
- this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);
- } else if (SET_ONCE_ACTION in data) {
- this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);
- } else if (UNSET_ACTION in data) {
- this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);
- } else if (ADD_ACTION in data) {
- this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);
- } else if (APPEND_ACTION in data) {
- this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);
- } else if (UNION_ACTION in data) {
- this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);
- } else {
- console$1.error('Invalid call to _enqueue():', data);
- }
-};
-
-MixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {
- var _this = this;
- var queued_data = _.extend({}, this._mixpanel['persistence']._get_queue(action));
- var action_params = queued_data;
-
- if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {
- _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);
- if (queue_to_params_fn) {
- action_params = queue_to_params_fn(queued_data);
- }
- action_method.call(_this, action_params, function(response, data) {
- // on bad response, we want to add it back to the queue
- if (response === 0) {
- _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);
- }
- if (!_.isUndefined(callback)) {
- callback(response, data);
- }
- });
- }
-};
-
-// Flush queued engage operations - order does not matter,
-// and there are network level race conditions anyway
-MixpanelPeople.prototype._flush = function(
- _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback
-) {
- var _this = this;
- var $append_queue = this._mixpanel['persistence']._get_queue(APPEND_ACTION);
-
- this._flush_one_queue(SET_ACTION, this.set, _set_callback);
- this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);
- this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });
- this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);
- this._flush_one_queue(UNION_ACTION, this.union, _union_callback);
-
- // we have to fire off each $append individually since there is
- // no concat method server side
- if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {
- var $append_item;
- var callback = function(response, data) {
- if (response === 0) {
- _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);
- }
- if (!_.isUndefined(_append_callback)) {
- _append_callback(response, data);
- }
- };
- for (var i = $append_queue.length - 1; i >= 0; i--) {
- $append_item = $append_queue.pop();
- _this.append($append_item, callback);
- }
- // Save the shortened append queue
- _this._mixpanel['persistence'].save();
- }
-};
-
-MixpanelPeople.prototype._is_reserved_property = function(prop) {
- return prop === '$distinct_id' || prop === '$token';
-};
-
-
-// Internal class for notification display
-MixpanelLib._Notification = function(notif_data, mixpanel_instance) {
- _.bind_instance_methods(this);
-
- this.mixpanel = mixpanel_instance;
- this.persistence = this.mixpanel['persistence'];
-
- this.campaign_id = _.escapeHTML(notif_data['id']);
- this.message_id = _.escapeHTML(notif_data['message_id']);
-
- this.body = (_.escapeHTML(notif_data['body']) || '').replace(/\n/g, ' ');
- this.cta = _.escapeHTML(notif_data['cta']) || 'Close';
- this.notif_type = _.escapeHTML(notif_data['type']) || 'takeover';
- this.style = _.escapeHTML(notif_data['style']) || 'light';
- this.title = _.escapeHTML(notif_data['title']) || '';
- this.video_width = MPNotif.VIDEO_WIDTH;
- this.video_height = MPNotif.VIDEO_HEIGHT;
-
- // These fields are url-sanitized in the backend already.
- this.dest_url = notif_data['cta_url'] || null;
- this.image_url = notif_data['image_url'] || null;
- this.thumb_image_url = notif_data['thumb_image_url'] || null;
- this.video_url = notif_data['video_url'] || null;
-
- this.clickthrough = true;
- if (!this.dest_url) {
- this.dest_url = '#dismiss';
- this.clickthrough = false;
- }
-
- this.mini = this.notif_type === 'mini';
- if (!this.mini) {
- this.notif_type = 'takeover';
- }
- this.notif_width = !this.mini ? MPNotif.NOTIF_WIDTH : MPNotif.NOTIF_WIDTH_MINI;
-
- this._set_client_config();
- this.imgs_to_preload = this._init_image_html();
- this._init_video();
-};
-
-MPNotif = MixpanelLib._Notification;
-
-MPNotif.ANIM_TIME = 200;
-MPNotif.MARKUP_PREFIX = 'mixpanel-notification';
-MPNotif.BG_OPACITY = 0.6;
-MPNotif.NOTIF_TOP = 25;
-MPNotif.NOTIF_START_TOP = 200;
-MPNotif.NOTIF_WIDTH = 388;
-MPNotif.NOTIF_WIDTH_MINI = 420;
-MPNotif.NOTIF_HEIGHT_MINI = 85;
-MPNotif.THUMB_BORDER_SIZE = 5;
-MPNotif.THUMB_IMG_SIZE = 60;
-MPNotif.THUMB_OFFSET = Math.round(MPNotif.THUMB_IMG_SIZE / 2);
-MPNotif.VIDEO_WIDTH = 595;
-MPNotif.VIDEO_HEIGHT = 334;
-
-MPNotif.prototype.show = function() {
- var self = this;
- this._set_client_config();
-
- // don't display until HTML body exists
- if (!this.body_el) {
- setTimeout(function() { self.show(); }, 300);
- return;
- }
-
- this._init_styles();
- this._init_notification_el();
-
- // wait for any images to load before showing notification
- this._preload_images(this._attach_and_animate);
-};
-
-MPNotif.prototype.dismiss = _.safewrap(function() {
- if (!this.marked_as_shown) {
- // unexpected condition: user interacted with notif even though we didn't consider it
- // visible (see _mark_as_shown()); send tracking signals to mark delivery
- this._mark_delivery({'invisible': true});
- }
-
- var exiting_el = this.showing_video ? this._get_el('video') : this._get_notification_display_el();
- if (this.use_transitions) {
- this._remove_class('bg', 'visible');
- this._add_class(exiting_el, 'exiting');
- setTimeout(this._remove_notification_el, MPNotif.ANIM_TIME);
- } else {
- var notif_attr, notif_start, notif_goal;
- if (this.mini) {
- notif_attr = 'right';
- notif_start = 20;
- notif_goal = -100;
- } else {
- notif_attr = 'top';
- notif_start = MPNotif.NOTIF_TOP;
- notif_goal = MPNotif.NOTIF_START_TOP + MPNotif.NOTIF_TOP;
- }
- this._animate_els([
- {
- el: this._get_el('bg'),
- attr: 'opacity',
- start: MPNotif.BG_OPACITY,
- goal: 0.0
- },
- {
- el: exiting_el,
- attr: 'opacity',
- start: 1.0,
- goal: 0.0
- },
- {
- el: exiting_el,
- attr: notif_attr,
- start: notif_start,
- goal: notif_goal
- }
- ], MPNotif.ANIM_TIME, this._remove_notification_el);
- }
-});
-
-MPNotif.prototype._add_class = _.safewrap(function(el, class_name) {
- class_name = MPNotif.MARKUP_PREFIX + '-' + class_name;
- if (typeof el === 'string') {
- el = this._get_el(el);
- }
- if (!el.className) {
- el.className = class_name;
- } else if (!~(' ' + el.className + ' ').indexOf(' ' + class_name + ' ')) {
- el.className += ' ' + class_name;
- }
-});
-MPNotif.prototype._remove_class = _.safewrap(function(el, class_name) {
- class_name = MPNotif.MARKUP_PREFIX + '-' + class_name;
- if (typeof el === 'string') {
- el = this._get_el(el);
- }
- if (el.className) {
- el.className = (' ' + el.className + ' ')
- .replace(' ' + class_name + ' ', '')
- .replace(/^[\s\xA0]+/, '')
- .replace(/[\s\xA0]+$/, '');
- }
-});
-
-MPNotif.prototype._animate_els = _.safewrap(function(anims, mss, done_cb, start_time) {
- var self = this,
- in_progress = false,
- ai, anim,
- cur_time = 1 * new Date(), time_diff;
-
- start_time = start_time || cur_time;
- time_diff = cur_time - start_time;
-
- for (ai = 0; ai < anims.length; ai++) {
- anim = anims[ai];
- if (typeof anim.val === 'undefined') {
- anim.val = anim.start;
- }
- if (anim.val !== anim.goal) {
- in_progress = true;
- var anim_diff = anim.goal - anim.start,
- anim_dir = anim.goal >= anim.start ? 1 : -1;
- anim.val = anim.start + anim_diff * time_diff / mss;
- if (anim.attr !== 'opacity') {
- anim.val = Math.round(anim.val);
- }
- if ((anim_dir > 0 && anim.val >= anim.goal) || (anim_dir < 0 && anim.val <= anim.goal)) {
- anim.val = anim.goal;
- }
- }
- }
- if (!in_progress) {
- if (done_cb) {
- done_cb();
- }
- return;
- }
-
- for (ai = 0; ai < anims.length; ai++) {
- anim = anims[ai];
- if (anim.el) {
- var suffix = anim.attr === 'opacity' ? '' : 'px';
- anim.el.style[anim.attr] = String(anim.val) + suffix;
- }
- }
- setTimeout(function() { self._animate_els(anims, mss, done_cb, start_time); }, 10);
-});
-
-MPNotif.prototype._attach_and_animate = _.safewrap(function() {
- var self = this;
-
- // no possibility to double-display
- if (this.shown || this._get_shown_campaigns()[this.campaign_id]) {
- return;
- }
- this.shown = true;
-
- this.body_el.appendChild(this.notification_el);
- setTimeout(function() {
- var notif_el = self._get_notification_display_el();
- if (self.use_transitions) {
- if (!self.mini) {
- self._add_class('bg', 'visible');
- }
- self._add_class(notif_el, 'visible');
- self._mark_as_shown();
- } else {
- var notif_attr, notif_start, notif_goal;
- if (self.mini) {
- notif_attr = 'right';
- notif_start = -100;
- notif_goal = 20;
- } else {
- notif_attr = 'top';
- notif_start = MPNotif.NOTIF_START_TOP + MPNotif.NOTIF_TOP;
- notif_goal = MPNotif.NOTIF_TOP;
- }
- self._animate_els([
- {
- el: self._get_el('bg'),
- attr: 'opacity',
- start: 0.0,
- goal: MPNotif.BG_OPACITY
- },
- {
- el: notif_el,
- attr: 'opacity',
- start: 0.0,
- goal: 1.0
- },
- {
- el: notif_el,
- attr: notif_attr,
- start: notif_start,
- goal: notif_goal
- }
- ], MPNotif.ANIM_TIME, self._mark_as_shown);
- }
- }, 100);
- _.register_event(self._get_el('cancel'), 'click', function(e) {
- e.preventDefault();
- self.dismiss();
- });
- var click_el = self._get_el('button') ||
- self._get_el('mini-content');
- _.register_event(click_el, 'click', function(e) {
- e.preventDefault();
- if (self.show_video) {
- self._track_event('$campaign_open', {'$resource_type': 'video'});
- self._switch_to_video();
- } else {
- self.dismiss();
- if (self.clickthrough) {
- self._track_event('$campaign_open', {'$resource_type': 'link'}, function() {
- window$1.location.href = self.dest_url;
- });
- }
- }
- });
-});
-
-MPNotif.prototype._get_el = function(id) {
- return document$1.getElementById(MPNotif.MARKUP_PREFIX + '-' + id);
-};
-
-MPNotif.prototype._get_notification_display_el = function() {
- return this._get_el(this.notif_type);
-};
-
-MPNotif.prototype._get_shown_campaigns = function() {
- return this.persistence['props'][CAMPAIGN_IDS_KEY] || (this.persistence['props'][CAMPAIGN_IDS_KEY] = {});
-};
-
-MPNotif.prototype._browser_lte = function(browser, version) {
- return this.browser_versions[browser] && this.browser_versions[browser] <= version;
-};
-
-MPNotif.prototype._init_image_html = function() {
- var imgs_to_preload = [];
-
- if (!this.mini) {
- if (this.image_url) {
- imgs_to_preload.push(this.image_url);
- this.img_html = ' ';
- } else {
- this.img_html = '';
- }
- if (this.thumb_image_url) {
- imgs_to_preload.push(this.thumb_image_url);
- this.thumb_img_html =
- '' +
- ' ' +
- '
';
- } else {
- this.thumb_img_html = '';
- }
- } else {
- this.thumb_image_url = this.thumb_image_url || '//cdn.mxpnl.com/site_media/images/icons/notifications/mini-news-dark.png';
- imgs_to_preload.push(this.thumb_image_url);
- }
-
- return imgs_to_preload;
-};
-
-MPNotif.prototype._init_notification_el = function() {
- var notification_html = '';
- var video_src = '';
- var video_html = '';
- var cancel_html = '';
-
- this.notification_el = document$1.createElement('div');
- this.notification_el.id = MPNotif.MARKUP_PREFIX + '-wrapper';
- if (!this.mini) {
- // TAKEOVER notification
- var close_html = (this.clickthrough || this.show_video) ? '' : '
',
- play_html = this.show_video ? '
' : '';
- if (this._browser_lte('ie', 7)) {
- close_html = '';
- play_html = '';
- }
- notification_html =
- '' +
- this.thumb_img_html +
- '
' +
- cancel_html +
- '
' +
- this.img_html +
- '
' + this.title + '
' +
- '
' + this.body + '
' +
- '
' +
- '
' +
- '
' +
- '
' +
- '
';
- } else {
- // MINI notification
- notification_html =
- '' +
- '
' +
- cancel_html +
- '
' +
- '
' +
- '
' +
- '
';
- }
- if (this.youtube_video) {
- video_src = '//www.youtube.com/embed/' + this.youtube_video +
- '?wmode=transparent&showinfo=0&modestbranding=0&rel=0&autoplay=1&loop=0&vq=hd1080';
- if (this.yt_custom) {
- video_src += '&enablejsapi=1&html5=1&controls=0';
- video_html =
- '';
- }
- } else if (this.vimeo_video) {
- video_src = '//player.vimeo.com/video/' + this.vimeo_video + '?autoplay=1&title=0&byline=0&portrait=0';
- }
- if (this.show_video) {
- this.video_iframe =
- '';
- video_html =
- '' +
- '
' +
- '
' +
- video_html +
- '
' +
- '
';
- }
- var main_html = video_html + notification_html;
- if (this.flip_animate) {
- main_html =
- (this.mini ? notification_html : '') +
- '' +
- (this.mini ? video_html : main_html) +
- '
';
- }
-
- this.notification_el.innerHTML =
- ('' +
- '
' +
- '
' +
- '
' +
- main_html +
- '
' +
- '
' +
- '
')
- .replace(/class=\"/g, 'class="' + MPNotif.MARKUP_PREFIX + '-')
- .replace(/id=\"/g, 'id="' + MPNotif.MARKUP_PREFIX + '-');
-};
-
-MPNotif.prototype._init_styles = function() {
- if (this.style === 'dark') {
- this.style_vals = {
- bg: '#1d1f25',
- bg_actions: '#282b32',
- bg_hover: '#3a4147',
- bg_light: '#4a5157',
- border_gray: '#32353c',
- cancel_opacity: '0.4',
- mini_hover: '#2a3137',
- text_title: '#fff',
- text_main: '#9498a3',
- text_tagline: '#464851',
- text_hover: '#ddd'
- };
- } else {
- this.style_vals = {
- bg: '#fff',
- bg_actions: '#e7eaee',
- bg_hover: '#eceff3',
- bg_light: '#f5f5f5',
- border_gray: '#e4ecf2',
- cancel_opacity: '1.0',
- mini_hover: '#fafafa',
- text_title: '#5c6578',
- text_main: '#8b949b',
- text_tagline: '#ced9e6',
- text_hover: '#7c8598'
- };
- }
- var shadow = '0px 0px 35px 0px rgba(45, 49, 56, 0.7)',
- video_shadow = shadow,
- mini_shadow = shadow,
- thumb_total_size = MPNotif.THUMB_IMG_SIZE + MPNotif.THUMB_BORDER_SIZE * 2,
- anim_seconds = (MPNotif.ANIM_TIME / 1000) + 's';
- if (this.mini) {
- shadow = 'none';
- }
-
- // don't display on small viewports
- var notif_media_queries = {},
- min_width = MPNotif.NOTIF_WIDTH_MINI + 20;
- notif_media_queries['@media only screen and (max-width: ' + (min_width - 1) + 'px)'] = {
- '#overlay': {
- 'display': 'none'
- }
- };
- var notif_styles = {
- '.flipped': {
- 'transform': 'rotateY(180deg)'
- },
- '#overlay': {
- 'position': 'fixed',
- 'top': '0',
- 'left': '0',
- 'width': '100%',
- 'height': '100%',
- 'overflow': 'auto',
- 'text-align': 'center',
- 'z-index': '10000',
- 'font-family': '"Helvetica", "Arial", sans-serif',
- '-webkit-font-smoothing': 'antialiased',
- '-moz-osx-font-smoothing': 'grayscale'
- },
- '#overlay.mini': {
- 'height': '0',
- 'overflow': 'visible'
- },
- '#overlay a': {
- 'width': 'initial',
- 'padding': '0',
- 'text-decoration': 'none',
- 'text-transform': 'none',
- 'color': 'inherit'
- },
- '#bgwrapper': {
- 'position': 'relative',
- 'width': '100%',
- 'height': '100%'
- },
- '#bg': {
- 'position': 'fixed',
- 'top': '0',
- 'left': '0',
- 'width': '100%',
- 'height': '100%',
- 'min-width': this.doc_width * 4 + 'px',
- 'min-height': this.doc_height * 4 + 'px',
- 'background-color': 'black',
- 'opacity': '0.0',
- '-ms-filter': 'progid:DXImageTransform.Microsoft.Alpha(Opacity=60)', // IE8
- 'filter': 'alpha(opacity=60)', // IE5-7
- 'transition': 'opacity ' + anim_seconds
- },
- '#bg.visible': {
- 'opacity': MPNotif.BG_OPACITY
- },
- '.mini #bg': {
- 'width': '0',
- 'height': '0',
- 'min-width': '0'
- },
- '#flipcontainer': {
- 'perspective': '1000px',
- 'position': 'absolute',
- 'width': '100%'
- },
- '#flipper': {
- 'position': 'relative',
- 'transform-style': 'preserve-3d',
- 'transition': '0.3s'
- },
- '#takeover': {
- 'position': 'absolute',
- 'left': '50%',
- 'width': MPNotif.NOTIF_WIDTH + 'px',
- 'margin-left': Math.round(-MPNotif.NOTIF_WIDTH / 2) + 'px',
- 'backface-visibility': 'hidden',
- 'transform': 'rotateY(0deg)',
- 'opacity': '0.0',
- 'top': MPNotif.NOTIF_START_TOP + 'px',
- 'transition': 'opacity ' + anim_seconds + ', top ' + anim_seconds
- },
- '#takeover.visible': {
- 'opacity': '1.0',
- 'top': MPNotif.NOTIF_TOP + 'px'
- },
- '#takeover.exiting': {
- 'opacity': '0.0',
- 'top': MPNotif.NOTIF_START_TOP + 'px'
- },
- '#thumbspacer': {
- 'height': MPNotif.THUMB_OFFSET + 'px'
- },
- '#thumbborder-wrapper': {
- 'position': 'absolute',
- 'top': (-MPNotif.THUMB_BORDER_SIZE) + 'px',
- 'left': (MPNotif.NOTIF_WIDTH / 2 - MPNotif.THUMB_OFFSET - MPNotif.THUMB_BORDER_SIZE) + 'px',
- 'width': thumb_total_size + 'px',
- 'height': (thumb_total_size / 2) + 'px',
- 'overflow': 'hidden'
- },
- '#thumbborder': {
- 'position': 'absolute',
- 'width': thumb_total_size + 'px',
- 'height': thumb_total_size + 'px',
- 'border-radius': thumb_total_size + 'px',
- 'background-color': this.style_vals.bg_actions,
- 'opacity': '0.5'
- },
- '#thumbnail': {
- 'position': 'absolute',
- 'top': '0px',
- 'left': (MPNotif.NOTIF_WIDTH / 2 - MPNotif.THUMB_OFFSET) + 'px',
- 'width': MPNotif.THUMB_IMG_SIZE + 'px',
- 'height': MPNotif.THUMB_IMG_SIZE + 'px',
- 'overflow': 'hidden',
- 'z-index': '100',
- 'border-radius': MPNotif.THUMB_IMG_SIZE + 'px'
- },
- '#mini': {
- 'position': 'absolute',
- 'right': '20px',
- 'top': MPNotif.NOTIF_TOP + 'px',
- 'width': this.notif_width + 'px',
- 'height': MPNotif.NOTIF_HEIGHT_MINI * 2 + 'px',
- 'margin-top': 20 - MPNotif.NOTIF_HEIGHT_MINI + 'px',
- 'backface-visibility': 'hidden',
- 'opacity': '0.0',
- 'transform': 'rotateX(90deg)',
- 'transition': 'opacity 0.3s, transform 0.3s, right 0.3s'
- },
- '#mini.visible': {
- 'opacity': '1.0',
- 'transform': 'rotateX(0deg)'
- },
- '#mini.exiting': {
- 'opacity': '0.0',
- 'right': '-150px'
- },
- '#mainbox': {
- 'border-radius': '4px',
- 'box-shadow': shadow,
- 'text-align': 'center',
- 'background-color': this.style_vals.bg,
- 'font-size': '14px',
- 'color': this.style_vals.text_main
- },
- '#mini #mainbox': {
- 'height': MPNotif.NOTIF_HEIGHT_MINI + 'px',
- 'margin-top': MPNotif.NOTIF_HEIGHT_MINI + 'px',
- 'border-radius': '3px',
- 'transition': 'background-color ' + anim_seconds
- },
- '#mini-border': {
- 'height': (MPNotif.NOTIF_HEIGHT_MINI + 6) + 'px',
- 'width': (MPNotif.NOTIF_WIDTH_MINI + 6) + 'px',
- 'position': 'absolute',
- 'top': '-3px',
- 'left': '-3px',
- 'margin-top': MPNotif.NOTIF_HEIGHT_MINI + 'px',
- 'border-radius': '6px',
- 'opacity': '0.25',
- 'background-color': '#fff',
- 'z-index': '-1',
- 'box-shadow': mini_shadow
- },
- '#mini-icon': {
- 'position': 'relative',
- 'display': 'inline-block',
- 'width': '75px',
- 'height': MPNotif.NOTIF_HEIGHT_MINI + 'px',
- 'border-radius': '3px 0 0 3px',
- 'background-color': this.style_vals.bg_actions,
- 'background': 'linear-gradient(135deg, ' + this.style_vals.bg_light + ' 0%, ' + this.style_vals.bg_actions + ' 100%)',
- 'transition': 'background-color ' + anim_seconds
- },
- '#mini:hover #mini-icon': {
- 'background-color': this.style_vals.mini_hover
- },
- '#mini:hover #mainbox': {
- 'background-color': this.style_vals.mini_hover
- },
- '#mini-icon-img': {
- 'position': 'absolute',
- 'background-image': 'url(' + this.thumb_image_url + ')',
- 'width': '48px',
- 'height': '48px',
- 'top': '20px',
- 'left': '12px'
- },
- '#content': {
- 'padding': '30px 20px 0px 20px'
- },
- '#mini-content': {
- 'text-align': 'left',
- 'height': MPNotif.NOTIF_HEIGHT_MINI + 'px',
- 'cursor': 'pointer'
- },
- '#img': {
- 'width': '328px',
- 'margin-top': '30px',
- 'border-radius': '5px'
- },
- '#title': {
- 'max-height': '600px',
- 'overflow': 'hidden',
- 'word-wrap': 'break-word',
- 'padding': '25px 0px 20px 0px',
- 'font-size': '19px',
- 'font-weight': 'bold',
- 'color': this.style_vals.text_title
- },
- '#body': {
- 'max-height': '600px',
- 'margin-bottom': '25px',
- 'overflow': 'hidden',
- 'word-wrap': 'break-word',
- 'line-height': '21px',
- 'font-size': '15px',
- 'font-weight': 'normal',
- 'text-align': 'left'
- },
- '#mini #body': {
- 'display': 'inline-block',
- 'max-width': '250px',
- 'margin': '0 0 0 30px',
- 'height': MPNotif.NOTIF_HEIGHT_MINI + 'px',
- 'font-size': '16px',
- 'letter-spacing': '0.8px',
- 'color': this.style_vals.text_title
- },
- '#mini #body-text': {
- 'display': 'table',
- 'height': MPNotif.NOTIF_HEIGHT_MINI + 'px'
- },
- '#mini #body-text div': {
- 'display': 'table-cell',
- 'vertical-align': 'middle'
- },
- '#tagline': {
- 'margin-bottom': '15px',
- 'font-size': '10px',
- 'font-weight': '600',
- 'letter-spacing': '0.8px',
- 'color': '#ccd7e0',
- 'text-align': 'left'
- },
- '#tagline a': {
- 'color': this.style_vals.text_tagline,
- 'transition': 'color ' + anim_seconds
- },
- '#tagline a:hover': {
- 'color': this.style_vals.text_hover
- },
- '#cancel': {
- 'position': 'absolute',
- 'right': '0',
- 'width': '8px',
- 'height': '8px',
- 'padding': '10px',
- 'border-radius': '20px',
- 'margin': '12px 12px 0 0',
- 'box-sizing': 'content-box',
- 'cursor': 'pointer',
- 'transition': 'background-color ' + anim_seconds
- },
- '#mini #cancel': {
- 'margin': '7px 7px 0 0'
- },
- '#cancel-icon': {
- 'width': '8px',
- 'height': '8px',
- 'overflow': 'hidden',
- 'background-image': 'url(//cdn.mxpnl.com/site_media/images/icons/notifications/cancel-x.png)',
- 'opacity': this.style_vals.cancel_opacity
- },
- '#cancel:hover': {
- 'background-color': this.style_vals.bg_hover
- },
- '#button': {
- 'display': 'block',
- 'height': '60px',
- 'line-height': '60px',
- 'text-align': 'center',
- 'background-color': this.style_vals.bg_actions,
- 'border-radius': '0 0 4px 4px',
- 'overflow': 'hidden',
- 'cursor': 'pointer',
- 'transition': 'background-color ' + anim_seconds
- },
- '#button-close': {
- 'display': 'inline-block',
- 'width': '9px',
- 'height': '60px',
- 'margin-right': '8px',
- 'vertical-align': 'top',
- 'background-image': 'url(//cdn.mxpnl.com/site_media/images/icons/notifications/close-x-' + this.style + '.png)',
- 'background-repeat': 'no-repeat',
- 'background-position': '0px 25px'
- },
- '#button-play': {
- 'display': 'inline-block',
- 'width': '30px',
- 'height': '60px',
- 'margin-left': '15px',
- 'background-image': 'url(//cdn.mxpnl.com/site_media/images/icons/notifications/play-' + this.style + '-small.png)',
- 'background-repeat': 'no-repeat',
- 'background-position': '0px 15px'
- },
- 'a#button-link': {
- 'display': 'inline-block',
- 'vertical-align': 'top',
- 'text-align': 'center',
- 'font-size': '17px',
- 'font-weight': 'bold',
- 'overflow': 'hidden',
- 'word-wrap': 'break-word',
- 'color': this.style_vals.text_title,
- 'transition': 'color ' + anim_seconds
- },
- '#button:hover': {
- 'background-color': this.style_vals.bg_hover,
- 'color': this.style_vals.text_hover
- },
- '#button:hover a': {
- 'color': this.style_vals.text_hover
- },
-
- '#video-noflip': {
- 'position': 'relative',
- 'top': (-this.video_height * 2) + 'px'
- },
- '#video-flip': {
- 'backface-visibility': 'hidden',
- 'transform': 'rotateY(180deg)'
- },
- '#video': {
- 'position': 'absolute',
- 'width': (this.video_width - 1) + 'px',
- 'height': this.video_height + 'px',
- 'top': MPNotif.NOTIF_TOP + 'px',
- 'margin-top': '100px',
- 'left': '50%',
- 'margin-left': Math.round(-this.video_width / 2) + 'px',
- 'overflow': 'hidden',
- 'border-radius': '5px',
- 'box-shadow': video_shadow,
- 'transform': 'translateZ(1px)', // webkit rendering bug http://stackoverflow.com/questions/18167981/clickable-link-area-unexpectedly-smaller-after-css-transform
- 'transition': 'opacity ' + anim_seconds + ', top ' + anim_seconds
- },
- '#video.exiting': {
- 'opacity': '0.0',
- 'top': this.video_height + 'px'
- },
- '#video-holder': {
- 'position': 'absolute',
- 'width': (this.video_width - 1) + 'px',
- 'height': this.video_height + 'px',
- 'overflow': 'hidden',
- 'border-radius': '5px'
- },
- '#video-frame': {
- 'margin-left': '-1px',
- 'width': this.video_width + 'px'
- },
- '#video-controls': {
- 'opacity': '0',
- 'transition': 'opacity 0.5s'
- },
- '#video:hover #video-controls': {
- 'opacity': '1.0'
- },
- '#video .video-progress-el': {
- 'position': 'absolute',
- 'bottom': '0',
- 'height': '25px',
- 'border-radius': '0 0 0 5px'
- },
- '#video-progress': {
- 'width': '90%'
- },
- '#video-progress-total': {
- 'width': '100%',
- 'background-color': this.style_vals.bg,
- 'opacity': '0.7'
- },
- '#video-elapsed': {
- 'width': '0',
- 'background-color': '#6cb6f5',
- 'opacity': '0.9'
- },
- '#video #video-time': {
- 'width': '10%',
- 'right': '0',
- 'font-size': '11px',
- 'line-height': '25px',
- 'color': this.style_vals.text_main,
- 'background-color': '#666',
- 'border-radius': '0 0 5px 0'
- }
- };
-
- // IE hacks
- if (this._browser_lte('ie', 8)) {
- _.extend(notif_styles, {
- '* html #overlay': {
- 'position': 'absolute'
- },
- '* html #bg': {
- 'position': 'absolute'
- },
- 'html, body': {
- 'height': '100%'
- }
- });
- }
- if (this._browser_lte('ie', 7)) {
- _.extend(notif_styles, {
- '#mini #body': {
- 'display': 'inline',
- 'zoom': '1',
- 'border': '1px solid ' + this.style_vals.bg_hover
- },
- '#mini #body-text': {
- 'padding': '20px'
- },
- '#mini #mini-icon': {
- 'display': 'none'
- }
- });
- }
-
- // add vendor-prefixed style rules
- var VENDOR_STYLES = ['backface-visibility', 'border-radius', 'box-shadow', 'opacity',
- 'perspective', 'transform', 'transform-style', 'transition'],
- VENDOR_PREFIXES = ['khtml', 'moz', 'ms', 'o', 'webkit'];
- for (var selector in notif_styles) {
- for (var si = 0; si < VENDOR_STYLES.length; si++) {
- var prop = VENDOR_STYLES[si];
- if (prop in notif_styles[selector]) {
- var val = notif_styles[selector][prop];
- for (var pi = 0; pi < VENDOR_PREFIXES.length; pi++) {
- notif_styles[selector]['-' + VENDOR_PREFIXES[pi] + '-' + prop] = val;
- }
- }
- }
- }
-
- var inject_styles = function(styles, media_queries) {
- var create_style_text = function(style_defs) {
- var st = '';
- for (var selector in style_defs) {
- var mp_selector = selector
- .replace(/#/g, '#' + MPNotif.MARKUP_PREFIX + '-')
- .replace(/\./g, '.' + MPNotif.MARKUP_PREFIX + '-');
- st += '\n' + mp_selector + ' {';
- var props = style_defs[selector];
- for (var k in props) {
- st += k + ':' + props[k] + ';';
- }
- st += '}';
- }
- return st;
- };
- var create_media_query_text = function(mq_defs) {
- var mqt = '';
- for (var mq in mq_defs) {
- mqt += '\n' + mq + ' {' + create_style_text(mq_defs[mq]) + '\n}';
- }
- return mqt;
- };
-
- var style_text = create_style_text(styles) + create_media_query_text(media_queries),
- head_el = document$1.head || document$1.getElementsByTagName('head')[0] || document$1.documentElement,
- style_el = document$1.createElement('style');
- head_el.appendChild(style_el);
- style_el.setAttribute('type', 'text/css');
- if (style_el.styleSheet) { // IE
- style_el.styleSheet.cssText = style_text;
- } else {
- style_el.textContent = style_text;
- }
- };
- inject_styles(notif_styles, notif_media_queries);
-};
-
-MPNotif.prototype._init_video = _.safewrap(function() {
- if (!this.video_url) {
- return;
- }
- var self = this;
-
- // Youtube iframe API compatibility
- self.yt_custom = 'postMessage' in window$1;
-
- self.dest_url = self.video_url;
- var youtube_match = self.video_url.match(
- // http://stackoverflow.com/questions/2936467/parse-youtube-video-id-using-preg-match
- /(?:youtube(?:-nocookie)?\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i
- ),
- vimeo_match = self.video_url.match(
- /vimeo\.com\/.*?(\d+)/i
- );
- if (youtube_match) {
- self.show_video = true;
- self.youtube_video = youtube_match[1];
-
- if (self.yt_custom) {
- window$1['onYouTubeIframeAPIReady'] = function() {
- if (self._get_el('video-frame')) {
- self._yt_video_ready();
- }
- };
-
- // load Youtube iframe API; see https://developers.google.com/youtube/iframe_api_reference
- var tag = document$1.createElement('script');
- tag.src = '//www.youtube.com/iframe_api';
- var firstScriptTag = document$1.getElementsByTagName('script')[0];
- firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
- }
- } else if (vimeo_match) {
- self.show_video = true;
- self.vimeo_video = vimeo_match[1];
- }
-
- // IE <= 7, FF <= 3: fall through to video link rather than embedded player
- if (self._browser_lte('ie', 7) || self._browser_lte('firefox', 3)) {
- self.show_video = false;
- self.clickthrough = true;
- }
-});
-
-MPNotif.prototype._mark_as_shown = _.safewrap(function() {
- // click on background to dismiss
- var self = this;
- _.register_event(self._get_el('bg'), 'click', function() {
- self.dismiss();
- });
-
- var get_style = function(el, style_name) {
- var styles = {};
- if (document$1.defaultView && document$1.defaultView.getComputedStyle) {
- styles = document$1.defaultView.getComputedStyle(el, null); // FF3 requires both args
- } else if (el.currentStyle) { // IE
- styles = el.currentStyle;
- }
- return styles[style_name];
- };
-
- if (this.campaign_id) {
- var notif_el = this._get_el('overlay');
- if (notif_el && get_style(notif_el, 'visibility') !== 'hidden' && get_style(notif_el, 'display') !== 'none') {
- this._mark_delivery();
- }
- }
-});
-
-MPNotif.prototype._mark_delivery = _.safewrap(function(extra_props) {
- if (!this.marked_as_shown) {
- this.marked_as_shown = true;
-
- if (this.campaign_id) {
- // mark notification shown (local cache)
- this._get_shown_campaigns()[this.campaign_id] = 1 * new Date();
- this.persistence.save();
- }
-
- // track delivery
- this._track_event('$campaign_delivery', extra_props);
-
- // mark notification shown (mixpanel property)
- this.mixpanel['people']['append']({
- '$campaigns': this.campaign_id,
- '$notifications': {
- 'campaign_id': this.campaign_id,
- 'message_id': this.message_id,
- 'type': 'web',
- 'time': new Date()
- }
- });
- }
-});
-
-MPNotif.prototype._preload_images = function(all_loaded_cb) {
- var self = this;
- if (this.imgs_to_preload.length === 0) {
- all_loaded_cb();
- return;
- }
-
- var preloaded_imgs = 0;
- var img_objs = [];
- var onload = function() {
- preloaded_imgs++;
- if (preloaded_imgs === self.imgs_to_preload.length && all_loaded_cb) {
- all_loaded_cb();
- all_loaded_cb = null;
- }
- };
- for (var i = 0; i < this.imgs_to_preload.length; i++) {
- var img = new Image();
- img.onload = onload;
- img.src = this.imgs_to_preload[i];
- if (img.complete) {
- onload();
- }
- img_objs.push(img);
- }
-
- // IE6/7 doesn't fire onload reliably
- if (this._browser_lte('ie', 7)) {
- setTimeout(function() {
- var imgs_loaded = true;
- for (i = 0; i < img_objs.length; i++) {
- if (!img_objs[i].complete) {
- imgs_loaded = false;
- }
- }
- if (imgs_loaded && all_loaded_cb) {
- all_loaded_cb();
- all_loaded_cb = null;
- }
- }, 500);
- }
-};
-
-MPNotif.prototype._remove_notification_el = _.safewrap(function() {
- window$1.clearInterval(this._video_progress_checker);
- this.notification_el.style.visibility = 'hidden';
- this.body_el.removeChild(this.notification_el);
-});
-
-MPNotif.prototype._set_client_config = function() {
- var get_browser_version = function(browser_ex) {
- var match = navigator.userAgent.match(browser_ex);
- return match && match[1];
- };
- this.browser_versions = {};
- this.browser_versions['chrome'] = get_browser_version(/Chrome\/(\d+)/);
- this.browser_versions['firefox'] = get_browser_version(/Firefox\/(\d+)/);
- this.browser_versions['ie'] = get_browser_version(/MSIE (\d+).+/);
- if (!this.browser_versions['ie'] && !(window$1.ActiveXObject) && 'ActiveXObject' in window$1) {
- this.browser_versions['ie'] = 11;
- }
-
- this.body_el = document$1.body || document$1.getElementsByTagName('body')[0];
- if (this.body_el) {
- this.doc_width = Math.max(
- this.body_el.scrollWidth, document$1.documentElement.scrollWidth,
- this.body_el.offsetWidth, document$1.documentElement.offsetWidth,
- this.body_el.clientWidth, document$1.documentElement.clientWidth
- );
- this.doc_height = Math.max(
- this.body_el.scrollHeight, document$1.documentElement.scrollHeight,
- this.body_el.offsetHeight, document$1.documentElement.offsetHeight,
- this.body_el.clientHeight, document$1.documentElement.clientHeight
- );
- }
-
- // detect CSS compatibility
- var ie_ver = this.browser_versions['ie'];
- var sample_styles = document$1.createElement('div').style,
- is_css_compatible = function(rule) {
- if (rule in sample_styles) {
- return true;
- }
- if (!ie_ver) {
- rule = rule[0].toUpperCase() + rule.slice(1);
- var props = ['O' + rule, 'Webkit' + rule, 'Moz' + rule];
- for (var i = 0; i < props.length; i++) {
- if (props[i] in sample_styles) {
- return true;
- }
- }
- }
- return false;
- };
- this.use_transitions = this.body_el &&
- is_css_compatible('transition') &&
- is_css_compatible('transform');
- this.flip_animate = (this.browser_versions['chrome'] >= 33 || this.browser_versions['firefox'] >= 15) &&
- this.body_el &&
- is_css_compatible('backfaceVisibility') &&
- is_css_compatible('perspective') &&
- is_css_compatible('transform');
-};
-
-MPNotif.prototype._switch_to_video = _.safewrap(function() {
- var self = this,
- anims = [
- {
- el: self._get_notification_display_el(),
- attr: 'opacity',
- start: 1.0,
- goal: 0.0
- },
- {
- el: self._get_notification_display_el(),
- attr: 'top',
- start: MPNotif.NOTIF_TOP,
- goal: -500
- },
- {
- el: self._get_el('video-noflip'),
- attr: 'opacity',
- start: 0.0,
- goal: 1.0
- },
- {
- el: self._get_el('video-noflip'),
- attr: 'top',
- start: -self.video_height * 2,
- goal: 0
- }
- ];
-
- if (self.mini) {
- var bg = self._get_el('bg'),
- overlay = self._get_el('overlay');
- bg.style.width = '100%';
- bg.style.height = '100%';
- overlay.style.width = '100%';
-
- self._add_class(self._get_notification_display_el(), 'exiting');
- self._add_class(bg, 'visible');
-
- anims.push({
- el: self._get_el('bg'),
- attr: 'opacity',
- start: 0.0,
- goal: MPNotif.BG_OPACITY
- });
- }
-
- var video_el = self._get_el('video-holder');
- video_el.innerHTML = self.video_iframe;
-
- var video_ready = function() {
- if (window$1['YT'] && window$1['YT']['loaded']) {
- self._yt_video_ready();
- }
- self.showing_video = true;
- self._get_notification_display_el().style.visibility = 'hidden';
- };
- if (self.flip_animate) {
- self._add_class('flipper', 'flipped');
- setTimeout(video_ready, MPNotif.ANIM_TIME);
- } else {
- self._animate_els(anims, MPNotif.ANIM_TIME, video_ready);
- }
-});
-
-MPNotif.prototype._track_event = function(event_name, properties, cb) {
- if (this.campaign_id) {
- properties = properties || {};
- properties = _.extend(properties, {
- 'campaign_id': this.campaign_id,
- 'message_id': this.message_id,
- 'message_type': 'web_inapp',
- 'message_subtype': this.notif_type
- });
- this.mixpanel['track'](event_name, properties, cb);
- } else if (cb) {
- cb.call();
- }
-};
-
-MPNotif.prototype._yt_video_ready = _.safewrap(function() {
- var self = this;
- if (self.video_inited) {
- return;
- }
- self.video_inited = true;
-
- var progress_bar = self._get_el('video-elapsed'),
- progress_time = self._get_el('video-time'),
- progress_el = self._get_el('video-progress');
-
- new window$1['YT']['Player'](MPNotif.MARKUP_PREFIX + '-video-frame', {
- 'events': {
- 'onReady': function(event) {
- var ytplayer = event['target'],
- video_duration = ytplayer['getDuration'](),
- pad = function(i) {
- return ('00' + i).slice(-2);
- },
- update_video_time = function(current_time) {
- var secs = Math.round(video_duration - current_time),
- mins = Math.floor(secs / 60),
- hours = Math.floor(mins / 60);
- secs -= mins * 60;
- mins -= hours * 60;
- progress_time.innerHTML = '-' + (hours ? hours + ':' : '') + pad(mins) + ':' + pad(secs);
- };
- update_video_time(0);
- self._video_progress_checker = window$1.setInterval(function() {
- var current_time = ytplayer['getCurrentTime']();
- progress_bar.style.width = (current_time / video_duration * 100) + '%';
- update_video_time(current_time);
- }, 250);
- _.register_event(progress_el, 'click', function(e) {
- var clickx = Math.max(0, e.pageX - progress_el.getBoundingClientRect().left);
- ytplayer['seekTo'](video_duration * clickx / progress_el.clientWidth, true);
- });
- }
- }
- });
-});
-
-// EXPORTS (for closure compiler)
-
-// MixpanelLib Exports
-MixpanelLib.prototype['init'] = MixpanelLib.prototype.init;
-MixpanelLib.prototype['reset'] = MixpanelLib.prototype.reset;
-MixpanelLib.prototype['disable'] = MixpanelLib.prototype.disable;
-MixpanelLib.prototype['time_event'] = MixpanelLib.prototype.time_event;
-MixpanelLib.prototype['track'] = MixpanelLib.prototype.track;
-MixpanelLib.prototype['track_links'] = MixpanelLib.prototype.track_links;
-MixpanelLib.prototype['track_forms'] = MixpanelLib.prototype.track_forms;
-MixpanelLib.prototype['track_pageview'] = MixpanelLib.prototype.track_pageview;
-MixpanelLib.prototype['register'] = MixpanelLib.prototype.register;
-MixpanelLib.prototype['register_once'] = MixpanelLib.prototype.register_once;
-MixpanelLib.prototype['unregister'] = MixpanelLib.prototype.unregister;
-MixpanelLib.prototype['identify'] = MixpanelLib.prototype.identify;
-MixpanelLib.prototype['alias'] = MixpanelLib.prototype.alias;
-MixpanelLib.prototype['name_tag'] = MixpanelLib.prototype.name_tag;
-MixpanelLib.prototype['set_config'] = MixpanelLib.prototype.set_config;
-MixpanelLib.prototype['get_config'] = MixpanelLib.prototype.get_config;
-MixpanelLib.prototype['get_property'] = MixpanelLib.prototype.get_property;
-MixpanelLib.prototype['get_distinct_id'] = MixpanelLib.prototype.get_distinct_id;
-MixpanelLib.prototype['toString'] = MixpanelLib.prototype.toString;
-MixpanelLib.prototype['_check_and_handle_notifications'] = MixpanelLib.prototype._check_and_handle_notifications;
-MixpanelLib.prototype['_show_notification'] = MixpanelLib.prototype._show_notification;
-MixpanelLib.prototype['opt_out_tracking'] = MixpanelLib.prototype.opt_out_tracking;
-MixpanelLib.prototype['opt_in_tracking'] = MixpanelLib.prototype.opt_in_tracking;
-MixpanelLib.prototype['has_opted_out_tracking'] = MixpanelLib.prototype.has_opted_out_tracking;
-MixpanelLib.prototype['has_opted_in_tracking'] = MixpanelLib.prototype.has_opted_in_tracking;
-MixpanelLib.prototype['clear_opt_in_out_tracking'] = MixpanelLib.prototype.clear_opt_in_out_tracking;
-
-// MixpanelPersistence Exports
-MixpanelPersistence.prototype['properties'] = MixpanelPersistence.prototype.properties;
-MixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;
-MixpanelPersistence.prototype['update_referrer_info'] = MixpanelPersistence.prototype.update_referrer_info;
-MixpanelPersistence.prototype['get_cross_subdomain'] = MixpanelPersistence.prototype.get_cross_subdomain;
-MixpanelPersistence.prototype['clear'] = MixpanelPersistence.prototype.clear;
-
-// MixpanelPeople Exports
-MixpanelPeople.prototype['set'] = MixpanelPeople.prototype.set;
-MixpanelPeople.prototype['set_once'] = MixpanelPeople.prototype.set_once;
-MixpanelPeople.prototype['unset'] = MixpanelPeople.prototype.unset;
-MixpanelPeople.prototype['increment'] = MixpanelPeople.prototype.increment;
-MixpanelPeople.prototype['append'] = MixpanelPeople.prototype.append;
-MixpanelPeople.prototype['union'] = MixpanelPeople.prototype.union;
-MixpanelPeople.prototype['track_charge'] = MixpanelPeople.prototype.track_charge;
-MixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;
-MixpanelPeople.prototype['delete_user'] = MixpanelPeople.prototype.delete_user;
-MixpanelPeople.prototype['toString'] = MixpanelPeople.prototype.toString;
-
-_.safewrap_class(MixpanelLib, ['identify', '_check_and_handle_notifications', '_show_notification']);
-
-var instances = {};
-var extend_mp = function() {
- // add all the sub mixpanel instances
- _.each(instances, function(instance, name) {
- if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }
- });
-
- // add private functions as _
- mixpanel_master['_'] = _;
-};
-
-var override_mp_init_func = function() {
- // we override the snippets init function to handle the case where a
- // user initializes the mixpanel library after the script loads & runs
- mixpanel_master['init'] = function(token, config, name) {
- if (name) {
- // initialize a sub library
- if (!mixpanel_master[name]) {
- mixpanel_master[name] = instances[name] = create_mplib(token, config, name);
- mixpanel_master[name]._loaded();
- }
- return mixpanel_master[name];
- } else {
- var instance = mixpanel_master;
-
- if (instances[PRIMARY_INSTANCE_NAME]) {
- // main mixpanel lib already initialized
- instance = instances[PRIMARY_INSTANCE_NAME];
- } else if (token) {
- // intialize the main mixpanel lib
- instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);
- instance._loaded();
- instances[PRIMARY_INSTANCE_NAME] = instance;
- }
-
- mixpanel_master = instance;
- if (init_type === INIT_SNIPPET) {
- window$1[PRIMARY_INSTANCE_NAME] = mixpanel_master;
- }
- extend_mp();
- }
- };
-};
-
-var add_dom_loaded_handler = function() {
- // Cross browser DOM Loaded support
- function dom_loaded_handler() {
- // function flag since we only want to execute this once
- if (dom_loaded_handler.done) { return; }
- dom_loaded_handler.done = true;
-
- DOM_LOADED = true;
- ENQUEUE_REQUESTS = false;
-
- _.each(instances, function(inst) {
- inst._dom_loaded();
- });
- }
-
- function do_scroll_check() {
- try {
- document$1.documentElement.doScroll('left');
- } catch(e) {
- setTimeout(do_scroll_check, 1);
- return;
- }
-
- dom_loaded_handler();
- }
-
- if (document$1.addEventListener) {
- if (document$1.readyState === 'complete') {
- // safari 4 can fire the DOMContentLoaded event before loading all
- // external JS (including this file). you will see some copypasta
- // on the internet that checks for 'complete' and 'loaded', but
- // 'loaded' is an IE thing
- dom_loaded_handler();
- } else {
- document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);
- }
- } else if (document$1.attachEvent) {
- // IE
- document$1.attachEvent('onreadystatechange', dom_loaded_handler);
-
- // check to make sure we arn't in a frame
- var toplevel = false;
- try {
- toplevel = window$1.frameElement === null;
- } catch(e) {
- // noop
- }
-
- if (document$1.documentElement.doScroll && toplevel) {
- do_scroll_check();
- }
- }
-
- // fallback handler, always will work
- _.register_event(window$1, 'load', dom_loaded_handler, true);
-};
-
-function init_as_module() {
- init_type = INIT_MODULE;
- mixpanel_master = new MixpanelLib();
-
- override_mp_init_func();
- mixpanel_master['init']();
- add_dom_loaded_handler();
-
- return mixpanel_master;
-}
-
-var mixpanel = init_as_module();
-
-module.exports = mixpanel;
-},{}],2:[function(require,module,exports){
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var click_action_1 = __importDefault(require("./actions/click-action"));
-var ActionFactory = /** @class */ (function () {
- function ActionFactory() {
- }
- ActionFactory.createAction = function (type, config) {
- // Check if the action is available
- if (ActionFactory.classDictionary[type] == undefined) {
- throw new Error('[BitAnalytics] ' + type + ' is not available.');
- }
- else {
- // Create a action
- var action = Object.create(ActionFactory.classDictionary[type].prototype);
- action.constructor.apply(action, [config]);
- action = action;
- return action;
- }
- };
- ActionFactory.classDictionary = {
- 'click': click_action_1.default
- };
- return ActionFactory;
-}());
-exports.default = ActionFactory;
-
-},{"./actions/click-action":5}],3:[function(require,module,exports){
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var ActionHandlers = /** @class */ (function () {
- function ActionHandlers() {
- this.actions = [];
- var self = this;
- var callback = function () {
- if (self.timeout) {
- clearTimeout(self.timeout);
- }
- self.timeout = setTimeout(function () {
- console.log('[BitAnalytics] Content modified, refreshing trackers');
- self.refreshTrackers();
- self.timeout = undefined;
- }, 300);
- };
- if (MutationObserver) {
- var targetNode = document.getElementsByTagName('body');
- var config = { attributes: true, childList: true, subtree: true };
- // Create an observer instance linked to the callback function
- var observer = new MutationObserver(callback);
- // Start observing the target node for configured mutations
- observer.observe(targetNode[0], config);
- }
- else {
- window.addEventListener("DOMSubtreeModified", callback);
- }
- }
- /**
- *
- * Public methods
- *
- */
- ActionHandlers.prototype.refreshTrackers = function () {
- this.actions.map(function (action) {
- try {
- action.stopTracking();
- }
- catch (err) {
- console.log(err);
- }
- try {
- action.startTracking();
- }
- catch (err) {
- console.log(err);
- }
- });
- };
- ActionHandlers.prototype.trackAction = function (action) {
- this.actions.push(action);
- };
- return ActionHandlers;
-}());
-exports.default = ActionHandlers;
-
-},{}],4:[function(require,module,exports){
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var Action = /** @class */ (function () {
- function Action(config) {
- if (!config.name) {
- throw new Error('[BitAnalytics] Action should have a name config : { name : ... }');
- }
- this.name = config.name;
- this.isTracking = false;
- }
- return Action;
-}());
-exports.default = Action;
-
-},{}],5:[function(require,module,exports){
-"use strict";
-var __extends = (this && this.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var action_1 = __importDefault(require("../action"));
-var log_event_handlers_1 = __importDefault(require("../log-event-handlers"));
-var log_event_1 = __importDefault(require("../log-event"));
-var ClickAction = /** @class */ (function (_super) {
- __extends(ClickAction, _super);
- function ClickAction(config) {
- var _this = _super.call(this, config) || this;
- _this.params = [];
- if (!config.class || !config.channels) {
- throw new Error('[BitAnalytics] ClickAction should have a config like this : { class : ..., channels: ... }');
- }
- if (config.params) {
- _this.params = config.params;
- }
- _this.class = config.class;
- _this.channels = config.channels;
- var self = _this;
- _this.listener = function (event) {
- /*console.log('on click');
- console.log(event.target.id);
- console.log(event.target.outerHTML);
- console.log(event.target.outerText);*/
- var params = {};
- var target = _this.searchTarget(event.srcElement);
- // If I found my element, that should happen 100%
- if (target) {
- self.params.map(function (param) {
- var value = target[param];
- if (value) {
- params[param] = value;
- }
- else {
- var item = target.attributes.getNamedItem(param);
- if (item) {
- params[param] = item.value;
- }
- }
- });
- }
- var logEvent = new log_event_1.default(self.name, [params], self.channels);
- log_event_handlers_1.default.sharedInstance().postEvent(logEvent);
- };
- _this.isTracking = false;
- return _this;
- }
- /**
- *
- * Private methods
- *
- */
- ClickAction.prototype.searchTarget = function (element) {
- if (element && element.classList && element.classList.contains(this.class)) {
- return element;
- }
- else if (element.parentElement) {
- return this.searchTarget(element.parentElement);
- }
- else {
- return undefined;
- }
- };
- /**
- *
- * Public methods
- *
- */
- ClickAction.prototype.startTracking = function () {
- if (this.isTracking) {
- throw new Error('[BitAnalytics] The tacking is already started');
- }
- this.isTracking = true;
- var elements = document.getElementsByClassName(this.class);
- // Add event listener to all the elements found
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- element.addEventListener('click', this.listener);
- }
- };
- ClickAction.prototype.stopTracking = function () {
- if (!this.isTracking) {
- throw new Error('[BitAnalytics] The tacking is already stopped');
- }
- var elements = document.getElementsByClassName(this.class);
- // Add event listener to all the elements found
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i];
- element.removeEventListener('click', this.listener);
- }
- this.isTracking = false;
- };
- return ClickAction;
-}(action_1.default));
-exports.default = ClickAction;
-
-},{"../action":4,"../log-event":16,"../log-event-handlers":15}],6:[function(require,module,exports){
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var log_event_handlers_1 = __importDefault(require("./log-event-handlers"));
-var log_event_1 = __importDefault(require("./log-event"));
-var action_factory_1 = __importDefault(require("./action-factory"));
-var adjust_channel_1 = __importDefault(require("./channels/adjust-channel"));
-var mixpanel_channel_1 = __importDefault(require("./channels/mixpanel-channel"));
-var action_handlers_1 = __importDefault(require("./action-handlers"));
-var channels;
-(function (channels) {
- channels.AdjustChannel = adjust_channel_1.default;
- channels.MixpanelChannel = mixpanel_channel_1.default;
-})(channels = exports.channels || (exports.channels = {}));
-var BitAnalytics = /** @class */ (function () {
- function BitAnalytics() {
- }
- BitAnalytics.initialize = function (os, appVersion, channelConfigs) {
- if (window == undefined) {
- console.error('[BitAnalytics] BitAnalytics cannot be integrated in window.');
- }
- BitAnalytics.LogEventHandlers = new log_event_handlers_1.default(os, appVersion, channelConfigs);
- BitAnalytics.ActionHandlers = new action_handlers_1.default();
- BitAnalytics.LogEvent = log_event_1.default;
- BitAnalytics.ActionFactory = action_factory_1.default;
- };
- BitAnalytics.main = function () {
- if (window) {
- window.BitAnalytics = BitAnalytics;
- }
- };
- return BitAnalytics;
-}());
-exports.default = BitAnalytics;
-BitAnalytics.main();
-
-},{"./action-factory":2,"./action-handlers":3,"./channels/adjust-channel":9,"./channels/mixpanel-channel":12,"./log-event":16,"./log-event-handlers":15}],7:[function(require,module,exports){
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var adjust_channel_1 = __importDefault(require("./channels/adjust-channel"));
-var firebase_channel_1 = __importDefault(require("./channels/firebase-channel"));
-var ga_channel_1 = __importDefault(require("./channels/ga-channel"));
-var mixpanel_channel_1 = __importDefault(require("./channels/mixpanel-channel"));
-var ChannelFactory = /** @class */ (function () {
- function ChannelFactory() {
- }
- ChannelFactory.createChannel = function (name, config) {
- // Check if the channel is available
- if (ChannelFactory.classDictionary[name] == undefined) {
- throw new Error('[BitAnalytics] ' + name + ' is not available.');
- }
- else {
- // Create a channel
- var channel = Object.create(ChannelFactory.classDictionary[name].prototype);
- channel.constructor.apply(channel, [name, config]);
- channel = channel;
- return channel;
- }
- };
- ChannelFactory.classDictionary = {
- 'adjust': adjust_channel_1.default,
- 'firebase': firebase_channel_1.default,
- 'ga': ga_channel_1.default,
- 'mixpanel': mixpanel_channel_1.default
- };
- return ChannelFactory;
-}());
-exports.default = ChannelFactory;
-
-},{"./channels/adjust-channel":9,"./channels/firebase-channel":10,"./channels/ga-channel":11,"./channels/mixpanel-channel":12}],8:[function(require,module,exports){
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var Channel = /** @class */ (function () {
- function Channel(name) {
- this.isReady = false;
- this.queue = new Array();
- this.name = name;
- }
- /**
- *
- * Protected methods
- *
- */
- Channel.prototype.flush = function () {
- this.queue.forEach(function (f) {
- f();
- });
- this.queue = new Array();
- };
- Channel.prototype.enqueue = function (f) {
- this.queue.push(f);
- };
- return Channel;
-}());
-exports.default = Channel;
-
-},{}],9:[function(require,module,exports){
-"use strict";
-var __extends = (this && this.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var channel_1 = __importDefault(require("../channel"));
-// Loading Adjust websdk
-require('../external-libs/adjust');
-var AdjustChannel = /** @class */ (function (_super) {
- __extends(AdjustChannel, _super);
- function AdjustChannel(name, config) {
- var _this = _super.call(this, name) || this;
- if (!config.token) {
- throw new Error('[BitAnalytics] Adjust config is missing token.');
- }
- if (!config.eventTypes) {
- throw new Error('[BitAnalytics] Adjust config is missing event types.');
- }
- if (!Adjust) {
- throw new Error('[BitAnalytics] Adjust cordova plugin is not installed correctly.');
- }
- _this.eventTypes = config.eventTypes;
- var os = _this.adjustedOs(config.os);
- _this.advertisingId = _this.getAdvertisingId(os);
- // TODO: Different initialisation for Cordova.
- var sessionParams = {
- app_version: config.appVersion,
- app_version_short: config.appVersion,
- os_name: os
- };
- _this.addAdvertisingId(os, sessionParams);
- var environment = config.environment || 'production';
- _this.adjustInstance = new Adjust(config.token, environment, os);
- _this.adjustInstance.trackSession(sessionParams);
- _this.isReady = true;
- return _this;
- }
- /**
- *
- * Public methods
- *
- */
- AdjustChannel.prototype.postEvent = function (name, params) {
- if (this.isReady) {
- var eventType = this.eventTypes[name];
- // Each event needs to be added on adjust, and config for adjust.
- if (!eventType) {
- throw new Error('This event name does not exist on Adjust.');
- }
- params.os = this.adjustedOs(params.os);
- this.addAdvertisingId(params.os, params);
- this.adjustInstance.trackEvent(eventType, params);
- }
- };
- /**
- *
- * Private methods
- *
- */
- AdjustChannel.prototype.addAdvertisingId = function (os, params) {
- if (os === 'ios') {
- params.idfa = this.advertisingId;
- }
- else if (os === 'android') {
- params.gps_adid = this.advertisingId;
- }
- else {
- params.win_hwid = this.advertisingId;
- params.win_naid = this.advertisingId;
- params.win_adid = this.advertisingId;
- }
- };
- // Desktop version will pretend to be Windows
- AdjustChannel.prototype.adjustedOs = function (os) {
- if (os === 'ios' || os === 'android') {
- return os;
- }
- else {
- return 'wstore';
- }
- };
- AdjustChannel.prototype.generateRandomGuid = function () {
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
- var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
- return v.toString(16);
- });
- };
- // Example: 107e8ea14329d4a2194ebbb6dc0c0fd7
- AdjustChannel.prototype.generateWindowsAdvertisingId = function () {
- var id = '';
- for (var i = 0; i < 32; i++) {
- id += Math.floor(Math.random() * 16).toString(16);
- }
- return id;
- };
- // https://docs.adjust.com/en/event-tracking/
- AdjustChannel.prototype.getAdvertisingId = function (os) {
- var adid = localStorage.getItem('adid');
- if (!adid) {
- if (os === 'ios') {
- adid = this.generateRandomGuid().toUpperCase();
- }
- else if (os === 'android') {
- adid = this.generateRandomGuid();
- }
- else {
- adid = this.generateWindowsAdvertisingId();
- }
- localStorage.setItem('adid', adid);
- }
- return adid;
- };
- return AdjustChannel;
-}(channel_1.default));
-exports.default = AdjustChannel;
-
-},{"../channel":8,"../external-libs/adjust":13}],10:[function(require,module,exports){
-"use strict";
-var __extends = (this && this.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var channel_1 = __importDefault(require("../channel"));
-var FirebaseChannel = /** @class */ (function (_super) {
- __extends(FirebaseChannel, _super);
- function FirebaseChannel(name, config) {
- var _this = _super.call(this, name) || this;
- /**
- * Firebase available only on ios and android
- */
- if (config.os != 'android' && config.os != 'ios') {
- throw new Error('[BitAnalytics] Firebase is not supported on ' + config.os);
- }
- if (!window.FirebasePlugin) {
- throw new Error('[BitAnalytics] Firebase cordova plugin is not installed correctly.');
- }
- _this.firebaseInstance = window.FirebasePlugin;
- _this.isReady = true;
- return _this;
- }
- /**
- *
- * Public methods
- *
- */
- FirebaseChannel.prototype.postEvent = function (name, params) {
- var _this = this;
- var sanitizedParams = this.sanitizeParams(params);
- if (!this.isReady) {
- this.enqueue(function () { _this.postEvent(name, sanitizedParams); });
- }
- else {
- this.firebaseInstance.logEvent(name, sanitizedParams);
- }
- };
- // [Firebase/Analytics][I-ACS013002] Event parameter name must contain only letters, numbers, or underscores
- FirebaseChannel.prototype.sanitizeParams = function (params) {
- var keys = Object.keys(params);
- var keysLength = keys.length;
- var sanitized = {};
- keys.map(function (key) {
- var cleanKey = key.replace('-', '_').replace(/[\W]+/g, '');
- sanitized[cleanKey] = params[key];
- });
- return sanitized;
- };
- return FirebaseChannel;
-}(channel_1.default));
-exports.default = FirebaseChannel;
-
-},{"../channel":8}],11:[function(require,module,exports){
-"use strict";
-var __extends = (this && this.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var channel_1 = __importDefault(require("../channel"));
-var ga_1 = __importDefault(require("../external-libs/ga"));
-var GoogleAnalyticsChannel = /** @class */ (function (_super) {
- __extends(GoogleAnalyticsChannel, _super);
- function GoogleAnalyticsChannel(name, config) {
- var _this = _super.call(this, name) || this;
- _this.gaInstance = null;
- _this.eventLabels = ['id'];
- if (!config.trackingId) {
- throw new Error('[BitAnalytics] Google Analytics config is missing tracking ID.');
- }
- if (config.eventLabels) {
- _this.eventLabels = config.eventLabels;
- }
- _this.gaInstance = new ga_1.default({
- trackID: config.trackingId,
- appVersion: config.appVersion,
- appName: config.appName || 'App'
- });
- _this.isReady = true;
- return _this;
- }
- /**
- *
- * Public methods
- *
- */
- GoogleAnalyticsChannel.prototype.postEvent = function (name, params) {
- if (this.isReady) {
- var category = name;
- var action = name;
- var label = name;
- var value = params['value'] || '';
- for (var _i = 0, _a = this.eventLabels; _i < _a.length; _i++) {
- var eventLabel = _a[_i];
- if (params[eventLabel]) {
- label = params[eventLabel];
- break;
- }
- }
- this.gaInstance.event(category, action, label, value);
- }
- };
- return GoogleAnalyticsChannel;
-}(channel_1.default));
-exports.default = GoogleAnalyticsChannel;
-
-},{"../channel":8,"../external-libs/ga":14}],12:[function(require,module,exports){
-"use strict";
-var __extends = (this && this.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var channel_1 = __importDefault(require("../channel"));
-var mixpanel = require('mixpanel-browser');
-var MixpanelChannel = /** @class */ (function (_super) {
- __extends(MixpanelChannel, _super);
- function MixpanelChannel(name, config) {
- var _this = _super.call(this, name) || this;
- if (!config.token) {
- throw new Error('[BitAnalytics] Config incorrect.');
- }
- _this.mixpanelInstance = mixpanel;
- mixpanel.init(config.token, config.config);
- return _this;
- }
- /**
- *
- * Public methods
- *
- */
- MixpanelChannel.prototype.postEvent = function (name, params) {
- var result = this.mixpanelInstance.track(name);
- };
- return MixpanelChannel;
-}(channel_1.default));
-exports.default = MixpanelChannel;
-
-},{"../channel":8,"mixpanel-browser":1}],13:[function(require,module,exports){
-"use strict";
-(function (window) {
- var sendRequest = function (method, url, data, success_cb, error_cb) {
- var req = new XMLHttpRequest();
- req.open(method, url, !0);
- req.setRequestHeader("Client-SDK", "js4.0.0");
- req.onreadystatechange = function () { if (req.readyState == 4) {
- if (req.status >= 200 && req.status < 400) {
- !!success_cb && success_cb(req.responseText);
- }
- else if (!!error_cb) {
- !!error_cb && error_cb(new Error("Server responded with HTTP " + req.status), xhr);
- }
- } };
- if (!!error_cb) {
- req.onerror = error_cb;
- }
- req.send(data);
- };
- var encodeQueryString = function (params) {
- var pairs = [];
- for (var k in params) {
- if (!params.hasOwnProperty(k)) {
- continue;
- }
- pairs.push(encodeURIComponent(k) + "=" + encodeURIComponent(params[k]));
- }
- return pairs.join("&");
- };
- var cloneObj = function (obj) {
- var copy = {};
- if (typeof (obj) != "object" || !obj) {
- return copy;
- }
- for (var k in obj) {
- if (!obj.hasOwnProperty(k)) {
- continue;
- }
- copy[k] = obj[k];
- }
- return copy;
- };
- if (!'withCredentials' in new XMLHttpRequest()) {
- sendRequest = function () { };
- }
- window.Adjust = function (app_token, environment, os_name) { this.trackSession = function (device_ids) { var params = cloneObj(device_ids); params.app_token = app_token; params.os_name = os_name; params.environment = environment; sendRequest("GET", "https://app.adjust.com/session?" + encodeQueryString(params)); }; this.trackEvent = function (event_token, device_ids) { var params = cloneObj(device_ids); params.app_token = app_token; params.event_token = event_token; params.os_name = os_name; params.environment = environment; sendRequest("GET", "https://app.adjust.com/event?" + encodeQueryString(params)); }; };
-})(window);
-
-},{}],14:[function(require,module,exports){
-"use strict";
-/*
- * name: nwjs-analytics -Node-Webkit Google Analytics integration
- * version: 1.0.2
- * github: https://github.com/Daaru00/nwjs-analytics
- */
-function GA(opt) {
- this.apiVersion = opt.apiVersion || '1';
- this.trackID = opt.trackID || 'UA-XXXXXXXX-X';
- this.clientID = opt.clientID || null;
- this.userID = opt.userID || null;
- this.appName = opt.appName || 'App';
- this.appVersion = opt.appVersion || '1.0.0';
- this.debug = opt.debug || false;
- this.performanceTracking = opt.performanceTracking || true;
- this.errorTracking = opt.errorTracking || true;
- this.userLanguage = opt.userLanguage || "en";
- this.currency = opt.currency || "EUR";
- this.lastScreenName = opt.lastScreenName || '';
-}
-GA.prototype.sendRequest = function (data, callback) {
- var ga = this;
- if (!this.clientID || this.clientID == null)
- this.clientID = this.generateClientID();
- if (!this.userID || this.userID == null)
- this.userID = this.generateClientID();
- var postData = "v=" + this.apiVersion
- + "&an=" + this.appName
- + "&av=" + this.appVersion
- + "&tid=" + this.trackID
- + "&cid=" + this.clientID
- + "&sr=" + this.getScreenResolution()
- + "&vp=" + this.getViewportSize();
- Object.keys(data).forEach(function (key) {
- var val = data[key];
- if (typeof val != "undefined")
- postData += "&" + key + "=" + val;
- });
- var http = new XMLHttpRequest();
- var url = "https://www.google-analytics.com";
- if (!this.debug)
- url += "/collect";
- else
- url += "/debug/collect";
- http.open("GET", url + "?" + postData, true);
- http.onreadystatechange = function () {
- if (ga.debug)
- console.log(http.response);
- if (http.readyState == 4 && http.status == 200) {
- if (callback)
- callback(true);
- }
- else {
- if (callback)
- callback(false);
- }
- };
- http.send();
-};
-GA.prototype.generateClientID = function () {
- var id = "";
- var possibilities = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for (var i = 0; i < 5; i++)
- id += possibilities.charAt(Math.floor(Math.random() * possibilities.length));
- return id;
-};
-GA.prototype.getScreenResolution = function () {
- return screen.width + "x" + screen.height;
-};
-GA.prototype.getColorDept = function () {
- return screen.colorDepth + "-bits";
-};
-GA.prototype.getUserAgent = function () {
- return navigator.userAgent;
-};
-GA.prototype.getViewportSize = function () {
- return window.screen.availWidth + "x" + window.screen.availHeight;
-};
-/*
- * Measurement Protocol
- * [https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide]
- */
-GA.prototype.screenView = function (screename) {
- var data = {
- 't': 'screenview',
- 'cd': screename
- };
- this.sendRequest(data);
- this.lastScreenName = screename;
-};
-GA.prototype.event = function (category, action, label, value) {
- var data = {
- 't': 'event',
- 'ec': category,
- 'ea': action,
- };
- if (label) {
- data['el'] = label;
- }
- if (value) {
- data['ev'] = value;
- }
- if (this.lastScreenName) {
- data['cd'] = this.lastScreenName;
- }
- this.sendRequest(data);
-};
-GA.prototype.exception = function (msg, fatal) {
- var data = {
- 't': 'exception',
- 'exd': msg,
- 'exf': fatal || 0
- };
- this.sendRequest(data);
-};
-GA.prototype.timing = function (category, variable, time, label) {
- var data = {
- 't': 'timing',
- 'utc': category,
- 'utv': variable,
- 'utt': time,
- 'utl': label,
- };
- this.sendRequest(data);
-},
- GA.prototype.ecommerce = {
- transactionID: false,
- generateTransactionID: function () {
- var id = "";
- var possibilities = "0123456789";
- for (var i = 0; i < 5; i++)
- id += possibilities.charAt(Math.floor(Math.random() * possibilities.length));
- return id;
- },
- transaction: function (total, items) {
- var t_id = "";
- if (!this.ecommerce.transactionID)
- t_id = this.ecommerce.generateTransactionID();
- else
- t_id = this.ecommerce.transactionID;
- var data = {
- 't': 'transaction',
- 'ti': t_id,
- 'tr': total,
- 'cu': this.currency,
- };
- this.sendRequest(data);
- items.forEach(function (item) {
- var data = {
- 't': 'item',
- 'ti': t_id,
- 'in': item.name,
- 'ip': item.price,
- 'iq': item.qty,
- 'ic': item.id,
- 'cu': this.currency
- };
- this.sendRequest(data);
- });
- }
- },
- GA.prototype.custom = function (data) {
- this.sendRequest(data);
- };
-module.exports = GA;
-/*
- * Performance Tracking
- */
-/*window.addEventListener("load", function() {
-
- if(ga.performanceTracking) {
- setTimeout(function() {
- var timing = window.performance.timing;
- var userTime = timing.loadEventEnd - timing.navigationStart;
- ga.timing("performance", "pageload", userTime);
- }, 0);
- }
-
-}, false);*/
-/*
- * Error Reporting
- */
-/*window.onerror = function (msg, url, lineNo, columnNo, error) {
- var message = [
- 'Message: ' + msg,
- 'Line: ' + lineNo,
- 'Column: ' + columnNo,
- 'Error object: ' + JSON.stringify(error)
- ].join(' - ');
-
- if(ga.errorTracking)
- {
- setTimeout(function() {
- ga.exception(message.toString());
- }, 0);
- }
-
- return false;
-};*/
-
-},{}],15:[function(require,module,exports){
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-var channel_factory_1 = __importDefault(require("./channel-factory"));
-var LogEventHandlers = /** @class */ (function () {
- function LogEventHandlers(os, appVersion, channelConfigs) {
- this.os = os;
- this.appVersion = appVersion;
- this.channels = [];
- this.isReady = false; // Ready once all channels are ready or one channel is ready?
- this.initializeChannels(channelConfigs);
- LogEventHandlers.instance = this;
- }
- /**
- *
- * Public methods
- *
- */
- LogEventHandlers.sharedInstance = function () {
- if (LogEventHandlers.instance) {
- return LogEventHandlers.instance;
- }
- else {
- throw new Error('[BitAnalytics] LogEventHandlers need to be initialized');
- }
- };
- LogEventHandlers.prototype.postEvent = function (logEvent) {
- var _this = this;
- /**
- * 0 is shared params
- * 1 is first channel
- * 2 is second channel
- * ...
- */
- var logEventParams = logEvent.params;
- // params
- var params = {
- 'os': this.os,
- 'appVersion': this.appVersion
- };
- // Concat the shared params
- if (logEventParams.length > 0) {
- // concat specific params needed
- params = this.concatObject(logEventParams[0], params);
- }
- // Post event depending of the channel
- logEvent.channelNames.map(function (channelName, i) {
- var channel = _this.getChannelByName(channelName);
- if (channel) {
- // Real index (first param is shared by all channels)
- var index = i + 1;
- // concat if needed
- if (logEventParams.length > index) {
- // concat specific params needed
- params = _this.concatObject(logEventParams[index], params);
- }
- console.log('[BitAnalytics] Params: ' + JSON.stringify(params));
- try {
- channel.postEvent(logEvent.name, params);
- console.log('[BitAnalytics] LogEvent "' + logEvent.name + '" sent to ' + channelName + '.');
- }
- catch (e) {
- console.error('[BitAnalytics] LogEvent "' + logEvent.name + '" failed to send with "' + channelName + '. ');
- console.log(e);
- }
- }
- else {
- // Channel not available
- console.log('[BitAnalytics] LogEvent "' + logEvent.name + '" cannot send to ' + channelName + ', this channel is not available.');
- }
- });
- };
- /**
- *
- * Private methods
- *
- */
- LogEventHandlers.prototype.concatObject = function (from, to) {
- var keys = Object.keys(from);
- keys.map(function (key) {
- if (!to[key]) {
- to[key] = from[key];
- }
- });
- return to;
- };
- LogEventHandlers.prototype.getChannelByName = function (channelName) {
- var channels = this.channels.filter(function (channel) { return channel.name == channelName; });
- if (channels.length > 0) {
- return channels[0];
- }
- else {
- return undefined;
- }
- };
- LogEventHandlers.prototype.initializeChannels = function (channelConfigs) {
- var _this = this;
- // Get the channel names by the keys
- var channelNames = Object.keys(channelConfigs);
- // Iterate to init the several channels given in the config
- channelNames.map(function (channelName) {
- var channelConfig = channelConfigs[channelName];
- // OS shared to check the availability of this channel on this OS.
- channelConfig.os = _this.os;
- channelConfig.appVersion = _this.appVersion;
- try {
- var channel = channel_factory_1.default.createChannel(channelName, channelConfig);
- _this.channels.push(channel);
- }
- catch (error) {
- console.log(error.message);
- }
- });
- };
- return LogEventHandlers;
-}());
-exports.default = LogEventHandlers;
-
-},{"./channel-factory":7}],16:[function(require,module,exports){
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var LogEvent = /** @class */ (function () {
- function LogEvent(name, params, channelNames) {
- if (channelNames.length == 0) {
- throw new Error('[BitAnalytics] Minimum one channel is needed.');
- }
- this.name = name;
- this.params = params;
- this.channelNames = channelNames;
- }
- return LogEvent;
-}());
-exports.default = LogEvent;
-
-},{}]},{},[6])(6)
-});
diff --git a/bitcoin-cash-js/index.js b/bitcoin-cash-js/index.js
index b3cda7ed4..462c939ed 100644
--- a/bitcoin-cash-js/index.js
+++ b/bitcoin-cash-js/index.js
@@ -1,5 +1,5 @@
var bitcoinCashJsModule = angular.module('bitcoinCashJsModule', []);
-var bchjs = require('../node_modules/bitcoincashjs-fork');
+var bchjs = require('../node_modules/bitcoincashjs');
bitcoinCashJsModule.constant('MODULE_VERSION', '1.0.0');
diff --git a/bower.json b/bower.json
index d94800d24..08a82d9b8 100644
--- a/bower.json
+++ b/bower.json
@@ -24,6 +24,6 @@
},
"resolutions": {
"angular": "1.5.3",
- "ionic": "eefba1331b"
+ "ionic": "1b7414faba"
}
}
diff --git a/fix-asn1.sh b/fix-asn1.sh
deleted file mode 100755
index 1dbca6a67..000000000
--- a/fix-asn1.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-firstLine=`awk 'NR < 2 {print}' node_modules/asn1.js-rfc5280/index.js`
-
-if [ "$firstLine" = "try {" ]; then
- echo "var asn1 = require('asn1.js');" > node_modules/asn1.js-rfc5280/index.new.js
- awk 'NR > 6 {print}' node_modules/asn1.js-rfc5280/index.js >> node_modules/asn1.js-rfc5280/index.new.js
- rm node_modules/asn1.js-rfc5280/index.js
- mv node_modules/asn1.js-rfc5280/index.new.js node_modules/asn1.js-rfc5280/index.js
- echo "node_modules/asn1.js-rfc5280/index.js fixed"
-fi
\ No newline at end of file
diff --git a/i18n/crowdin_download.js b/i18n/crowdin_download.js
index ad8078d23..61e6f8928 100644
--- a/i18n/crowdin_download.js
+++ b/i18n/crowdin_download.js
@@ -2,8 +2,6 @@
'use strict';
-const blankOrEmptyTranslationRegex = /^\s*"\s*"$/
-
if (process.argv[2]) {
var no_build = (process.argv[2].toLowerCase() == '--nobuild')
if (no_build == false) {
@@ -24,7 +22,19 @@ var path = require('path');
var https = require('https');
var AdmZip = require('adm-zip');
-var crowdin_identifier = 'bitcoincom-wallet'
+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
@@ -50,22 +60,105 @@ if (no_build == false) { // Reminder: Any changes to the script below must also
'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 Bitcoin.com Wallet\'s Crowdin Settings and click the "Build Project" button to assure it is built recently, and then run this ' +
+ '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);
};
- downloadAllTranslationsAfterLastBuild();
+ // 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.
- downloadAllTranslationsAfterLastBuild();
-};
-function downloadAllTranslationsAfterLastBuild () {
// 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;
@@ -79,85 +172,77 @@ function downloadAllTranslationsAfterLastBuild () {
data[i].copy(buf, pos);
pos += data[i].length;
};
-
- updateLocalFilesFromDownloadedZipBuffer(buf);
+ 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.');
+
});
});
-}
-
-function updateLocalFilesFromDownloadedZipBuffer(buf) {
-
- var zip = new AdmZip(buf);
- const extractionPath = path.join(__dirname, 'po')
- zip.extractAllTo(extractionPath, true);
- console.log('Done extracting ZIP file.');
-
- let untranslatedPoFileDeletedCount = 0;
- var files = fs.readdirSync(extractionPath);
-
- for (var i in files) {
- const name = files[i];
- if (name == 'template.pot') {
- continue;
- }
-
- const fullPath = path.join(extractionPath, name);
- const status = fs.statSync(fullPath);
- if (!status.isDirectory()) {
- console.log(`Not a directory. Don't know what to do with "%{name}", skipping.`);
- continue;
- }
-
- const filePath = path.join(fullPath, `template-${name}.po`);
-
- if (name === "zh-HK") {
- console.log("Deleting zh-HK, because we also have zh-CN and the app uses 2-character locales. Also zh-HK was untranslated at time of writing.");
- fs.unlinkSync(filePath);
- continue
- }
-
- var po_file = fs.readFileSync(filePath, 'utf8');
- var po_array = po_file.split('\n');
- const linesCount = po_array.length;
- for (let j = 0; j < linesCount; j++) {
- 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 at least one translation. Keep this entire file.
- if ((!blankOrEmptyTranslationRegex.test(translate_text)) &&
- source_text !== translate_text) {
- console.log(`Keeping ${name}`);
- // erase email addresses of last translator for privacy
- po_file = po_file.replace(/ <.+@.+\..+>/, '')
- fs.writeFileSync(filePath, 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.
- // TODO: Fix how this is done, because it won't work properly for
- // Chinese, Traditional and Chinese, Simplified, they will clash.
- if (po_locale.search('_') > 0) {
- fs.writeFileSync(filePath, po_start + po_locale.slice(0,2) + po_end);
- po_start = '';
- po_locale = '';
- po_end = '';
- };
- break;
- };
- };
- if (j === (linesCount - 1)) { // All strings are exactly identical to English. Delete po file.
- fs.unlinkSync(filePath);
- console.log(`Deleted ${name}`)
- untranslatedPoFileDeletedCount++;
- };
-
- };
- };
-
- console.log(`Completely untranslated po files cleaned out: ${untranslatedPoFileDeletedCount} (Not including zh-HK)`);
-}
\ No newline at end of file
+};
diff --git a/i18n/crowdin_update.js b/i18n/crowdin_update.js
index 30748a455..b69d276ec 100644
--- a/i18n/crowdin_update.js
+++ b/i18n/crowdin_update.js
@@ -7,7 +7,7 @@ var path = require('path');
var https = require('https');
var bhttp = require('bhttp');
-var crowdin_identifier = 'bitcoincom-wallet'
+var crowdin_identifier = 'copay'
var local_file_name1 = path.join(__dirname, 'po/template.pot')
@@ -45,7 +45,9 @@ var crowdin_api_key = fs.readFileSync(path.join(__dirname, 'crowdin_api_key.txt'
if (crowdin_api_key != '') {
var payload = {
- 'files[template.pot]': local_file1
+ '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) {
diff --git a/i18n/docs/appstore_en.txt b/i18n/docs/appstore_en.txt
index 6b7cd0a60..bdcad6673 100644
--- a/i18n/docs/appstore_en.txt
+++ b/i18n/docs/appstore_en.txt
@@ -1,23 +1,23 @@
-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).
+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/updateinfo_en.txt b/i18n/docs/updateinfo_en.txt
index d3f5a12fa..8b1378917 100644
--- a/i18n/docs/updateinfo_en.txt
+++ b/i18n/docs/updateinfo_en.txt
@@ -1 +1 @@
-
+
diff --git a/i18n/po/ca/template-ca.po b/i18n/po/ca/template-ca.po
deleted file mode 100644
index 0fa97d8ab..000000000
--- a/i18n/po/ca/template-ca.po
+++ /dev/null
@@ -1,3943 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
-"X-Crowdin-Language: ca\n"
-"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
-"Language-Team: Catalan\n"
-"Language: ca\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
-
-#: www/views/modals/paypro.html:34
-msgid "(Trusted)"
-msgstr "(De confiança)"
-
-#: www/views/includes/txp.html:23
-#: www/views/includes/walletHistory.html:64
-msgid "(possible double spend)"
-msgstr "(possible doble despesa)"
-
-#: www/views/modals/txp-details.html:159
-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 de pagament es pot suprimir si 1) en sou el creador i si cap altre copagador l'ha firmat, o 2) si han passat 24 hores des de la creació de la proposta."
-
-#: www/views/tx-details.html:82
-msgid "- {{btx.feeRateStr}} of the transaction"
-msgstr "- {{btx.feeRateStr}} de la transacció"
-
-#: www/views/modals/txp-details.html:102
-msgid "- {{tx.feeRateStr}} of the transaction"
-msgstr "- {{tx.feeRateStr}} de la transacció"
-
-#: 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 valoració de 5 estrelles ens ajuda a ampliar la utilització de {{appName}}. Com més usuaris tingui, més recursos es podran dedicar a l'aplicació!"
-
-#: www/views/mercadoLibre.html:18
-#: www/views/mercadoLibre.html:40
-msgid "Only redeemable on Mercado Livre (Brazil)"
-msgstr "Només bescanviable a Mercado Livre (Brasil)"
-
-#: 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'equip revisarà els vostres comentaris al més aviat possible."
-
-#: src/js/controllers/confirm.js:401
-msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded."
-msgstr "S'han exclòs un total de {{amountAboveMaxSizeStr}}. S'ha superat el màxim permès per a una transacció."
-
-#: src/js/controllers/confirm.js:395
-msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided."
-msgstr "S'han exclòs un total de {{amountBelowFeeStr}}. Aquests fons provenen d'UTXOs més petits que la comissió de xarxa prevista."
-
-#: src/js/controllers/preferencesAbout.js:6
-#: www/views/tab-settings.html:156
-msgid "About"
-msgstr "Informació"
-
-#: src/js/controllers/modals/txpDetails.js:62
-#: src/js/controllers/tx-details.js:79
-msgid "Accepted"
-msgstr "Acceptada"
-
-#: www/views/preferencesInformation.html:72
-msgid "Account"
-msgstr "Compte"
-
-#: www/views/join.html:72
-#: www/views/tab-create-personal.html:45
-#: www/views/tab-create-shared.html:74
-#: www/views/tab-import-hardware.html:19
-msgid "Account Number"
-msgstr "Número de compte"
-
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Transaccions instantànies amb comissions baixes"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Fons insuficients"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Canvia de moneda"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Fons disponibles"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Utilitza tots els fons disponibles"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Següent"
-
-#: www/views/preferencesBitpayServices.html:23
-msgid "Accounts"
-msgstr "Comptes"
-
-#: www/views/bitpayCard.html:56
-msgid "Activity"
-msgstr "Activitat"
-
-#: src/js/services/bitpayAccountService.js:83
-msgid "Add Account"
-msgstr "Afegeix un compte"
-
-#: src/js/services/bitpayAccountService.js:69
-msgid "Add BitPay Account?"
-msgstr "Voleu afegir un compte de BitPay?"
-
-#: www/views/addressbook.add.html:4
-#: www/views/addressbook.html:22
-msgid "Add Contact"
-msgstr "Afegeix un contacte"
-
-#: www/views/bitpayCard.html:28
-msgid "Add Funds"
-msgstr "Afegeix fons"
-
-#: www/views/confirm.html:94
-msgid "Add Memo"
-msgstr "Afegeix una nota"
-
-#: www/views/join.html:87
-#: www/views/tab-create-personal.html:59
-#: www/views/tab-create-shared.html:88
-msgid "Add a password"
-msgstr "Afegiu una contrasenya"
-
-#: www/views/includes/accountSelector.html:27
-msgid "Add account"
-msgstr "Afegeix un compte"
-
-#: www/views/join.html:90
-#: www/views/tab-create-personal.html:62
-#: www/views/tab-create-shared.html:91
-msgid "Add an optional password to secure the recovery phrase"
-msgstr "Afegeix una contrasenya opcional per assegurar la frase de recuperació"
-
-#: www/views/includes/incomingDataMenu.html:41
-msgid "Add as a contact"
-msgstr "Afegeix com a contacte"
-
-#: src/js/controllers/confirm.js:424
-msgid "Add description"
-msgstr "Afegeix una descripció"
-
-#: www/views/topup.html:6
-msgid "Add funds"
-msgstr "Afegeix fons"
-
-#: src/js/services/bitpayAccountService.js:78
-msgid "Add this BitPay account ({{email}})?"
-msgstr "Voleu afegir aquest compte de BitPay ({{email}})?"
-
-#: www/views/add.html:3
-msgid "Add wallet"
-msgstr "Afegeix una cartera"
-
-#: www/views/addressbook.view.html:26
-#: www/views/customAmount.html:28
-#: www/views/modals/paypro.html:24
-msgid "Address"
-msgstr "Adreça"
-
-#: www/views/addressbook.html:6
-#: www/views/tab-settings.html:13
-msgid "Address Book"
-msgstr "Llibreta d'adreces"
-
-#: www/views/preferencesInformation.html:41
-msgid "Address Type"
-msgstr "Tipus d'adreça"
-
-#: www/views/addresses.html:64
-msgid "Addresses With Balance"
-msgstr "Adreces amb saldo"
-
-#: www/views/tab-settings.html:149
-msgid "Advanced"
-msgstr "Avançats"
-
-#: www/views/advancedSettings.html:3
-msgid "Advanced Settings"
-msgstr "Paràmetres avançats"
-
-#: www/views/bitpayCard.html:62
-msgid "All"
-msgstr "Tots"
-
-#: www/views/allAddresses.html:3
-msgid "All Addresses"
-msgstr "Totes les adreces"
-
-#: www/views/modals/wallet-balance.html:18
-msgid "All of your bitcoin wallet balance may not be available for immediate spending."
-msgstr "És possible que no tot el saldo de la vostra cartera de bitcoins estigui disponible per a despeses immediates."
-
-#: www/views/tab-receive.html:25
-msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created."
-msgstr "Tots els dispositius dels firmants s'han d'afegir a aquesta cartera multifirma abans que es puguin crear adreces bitcoin."
-
-#: www/views/tab-scan.html:21
-msgid "Allow Camera Access"
-msgstr "Permet l'accés a la càmera"
-
-#: www/views/onboarding/notifications.html:7
-msgid "Allow notifications"
-msgstr "Permet les notificacions"
-
-#: www/views/onboarding/disclaimer.html:14
-msgid "Almost done! Let's review."
-msgstr "Gairebé ja estem! Repassem-ho."
-
-#: www/views/preferencesAltCurrency.html:4
-#: www/views/tab-settings.html:79
-msgid "Alternative Currency"
-msgstr "Moneda alternativa"
-
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Visualització del preu"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Criptomoneda"
-
-#: src/js/controllers/buyAmazon.js:98
-msgid "Amazon.com is not available at this moment. Please try back later."
-msgstr "Amazon.com no està disponible en aquest moment. Torneu-ho a provar més tard."
-
-#: www/views/amount.html:44
-#: www/views/customAmount.html:34
-#: www/views/includes/output.html:7
-msgid "Amount"
-msgstr "Import"
-
-#: src/js/services/bwcError.js:110
-msgid "Amount below minimum allowed"
-msgstr "Import inferior al mínim permès"
-
-#: src/js/controllers/confirm.js:216
-msgid "Amount too big"
-msgstr "Import massa gran"
-
-#: www/views/includes/walletHistory.html:31
-msgid "Amount too low to spend"
-msgstr "Import massa petit per gastar-lo"
-
-#: 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 "Hi ha una actualització d'aquesta aplicació. Per seguretat, actualitzeu-la amb la darrera versió."
-
-#: www/views/backupWarning.html:14
-msgid "Anyone with your backup phrase can access or spend your bitcoin."
-msgstr "Qualsevol persona que tingui la vostra frase de seguretat pot gastar els vostres bitcoins o accedir-hi."
-
-#: www/views/addresses.html:94
-msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-msgstr "Comissió aproximada de la de xarxa Bitcoin per transferir el saldo de la cartera (amb prioritat normal)"
-
-#: www/views/backupWarning.html:10
-msgid "Are you being watched?"
-msgstr "Us vigilen?"
-
-#: src/js/controllers/preferencesExternal.js:15
-msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin."
-msgstr "Us vigilen? Qualsevol persona que tingui la vostra frase de recuperació pot gastar els vostres bitcoins o accedir-hi."
-
-#: src/js/controllers/copayers.js:56
-msgid "Are you sure you want to cancel and delete this wallet?"
-msgstr "Segur que voleu cancel·lar i suprimir aquesta cartera?"
-
-#: src/js/controllers/addressbookView.js:37
-msgid "Are you sure you want to delete this contact?"
-msgstr "Segur que voleu suprimir aquest contacte?"
-
-#: src/js/controllers/preferencesDelete.js:25
-msgid "Are you sure you want to delete this wallet?"
-msgstr "Segur que voleu suprimir aquesta cartera?"
-
-#: src/js/controllers/modals/txpDetails.js:154
-msgid "Are you sure you want to reject this transaction?"
-msgstr "Segur que voleu rebutjar aquesta transacció?"
-
-#: src/js/controllers/modals/txpDetails.js:171
-msgid "Are you sure you want to remove this transaction?"
-msgstr "Segur que voleu suprimir aquesta transacció?"
-
-#: src/js/controllers/onboarding/backupRequest.js:23
-msgid "Are you sure you want to skip it?"
-msgstr "Segur que el voleu ometre?"
-
-#: www/views/modals/bitpay-card-confirmation.html:4
-msgid "Are you sure you would like to log out of your BitPay Card account?"
-msgstr "Segur que voleu sortir del 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 "Segur que voleu suprimir la BitPay Card ({{lastFourDigits}}) d'aquest dispositiu?"
-
-#: www/views/includes/walletInfo.html:10
-msgid "Auditable"
-msgstr "Auditable"
-
-#: www/views/modals/wallet-balance.html:42
-msgid "Available"
-msgstr "Disponible"
-
-#: www/views/includes/available-balance.html:3
-msgid "Available Balance"
-msgstr "Saldo disponible"
-
-#: www/views/modals/chooseFeeLevel.html:24
-#: www/views/preferencesFee.html:15
-msgid "Average confirmation time"
-msgstr "Temps de mitjà de confirmació"
-
-#: www/views/join.html:143
-#: www/views/tab-create-personal.html:113
-#: www/views/tab-create-shared.html:142
-#: www/views/tab-import-phrase.html:51
-msgid "BIP32 path for address derivation"
-msgstr "Camí BIP32 per a la derivació de l'adreça"
-
-#: www/views/cashScan.html:25
-msgid "BTC wallets"
-msgstr "Carteres BTC"
-
-#: www/views/preferences.html:34
-msgid "Backup"
-msgstr "Còpia de seguretat"
-
-#: www/views/includes/backupNeededPopup.html:7
-msgid "Backup Needed"
-msgstr "Cal còpia de seguretat"
-
-#: src/js/controllers/lockSetup.js:87
-msgid "Backup all livenet wallets before using this function"
-msgstr "Feu còpia de seguretat de totes les carteres (livenet) abans de fer servir aquesta funció"
-
-#: src/js/controllers/cashScan.js:64
-#: www/views/includes/walletListSettings.html:12
-#: www/views/preferences.html:36
-msgid "Backup needed"
-msgstr "Cal còpia de seguretat"
-
-#: www/views/includes/backupNeededPopup.html:9
-msgid "Backup now"
-msgstr "Feu còpia de seguretat ara"
-
-#: www/views/onboarding/backupRequest.html:11
-#: www/views/tab-export-file.html:89
-msgid "Backup wallet"
-msgstr "Fes còpia de seguretat de la cartera"
-
-#: src/js/controllers/lockSetup.js:84
-msgid "Backup your wallet before using this function"
-msgstr "Feu còpia de seguretat de la cartera abans de fer servir aquesta funció"
-
-#: src/js/services/profileService.js:446
-msgid "Bad wallet invitation"
-msgstr "Invitació de cartera incorrecta"
-
-#: www/views/preferencesInformation.html:102
-msgid "Balance By Address"
-msgstr "Saldo per adreça"
-
-#: 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 "Sobretot, deseu la vostra frase de recuperació en un lloc segur. Si se suprimeix aquesta aplicació, no podreu recuperar els diners sense la frase."
-
-#: www/views/preferencesBitpayServices.html:9
-msgid "BitPay Visa® Cards"
-msgstr "Targetes BitPay Visa®"
-
-#: www/views/addressbook.add.html:38
-#: www/views/includes/incomingDataMenu.html:29
-msgid "Bitcoin Address"
-msgstr "Adreça Bitcoin"
-
-#: www/views/cashScan.html:4
-msgid "Bitcoin Cash (BCH) Balances"
-msgstr "Saldos Bitcoin Cash (BCH)"
-
-#: www/views/preferencesCash.html:3
-#: www/views/tab-settings.html:47
-msgid "Bitcoin Cash Support"
-msgstr "Assistència Bitcoin Cash"
-
-#: www/views/tab-home.html:98
-#: www/views/tab-settings.html:115
-msgid "Bitcoin Cash Wallets"
-msgstr "Carteres Bitcoin Cash"
-
-#: www/views/modals/chooseFeeLevel.html:4
-#: www/views/preferencesFee.html:4
-#: www/views/tab-settings.html:90
-msgid "Bitcoin Network Fee Policy"
-msgstr "Política de comissions de la xarxa Bitcoin"
-
-#: www/views/tab-home.html:83
-#: www/views/tab-settings.html:107
-msgid "Bitcoin Core Wallets"
-msgstr "Carteres Bitcoin Core"
-
-#: src/js/services/incomingData.js:151
-msgid "Bitcoin cash Payment"
-msgstr "Pagament en Bitcoin Cash"
-
-#: www/views/onboarding/tour.html:31
-msgid "Bitcoin is a currency."
-msgstr "Bitcoin és 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 és diferent – no es pot guardar amb seguretat en un banc o servei web."
-
-#: www/views/onboarding/tour.html:18
-msgid "Bitcoin is secure, digital money."
-msgstr "Bitcoin es una moneda, digital segura."
-
-#: www/views/preferencesFee.html:11
-msgid "Bitcoin transactions include a fee collected by miners on the network."
-msgstr "Les transaccions de bitcoins inclouen una comissió que cobren els miners de la xarxa."
-
-#: www/views/buyAmazon.html:108
-msgid "Bought {{amountUnitStr}}"
-msgstr "{{amountUnitStr}} comprats"
-
-#: www/views/modals/txp-details.html:36
-msgid "Broadcast Payment"
-msgstr "Emet el pagament"
-
-#: src/js/controllers/modals/txpDetails.js:64
-#: src/js/controllers/tx-details.js:81
-msgid "Broadcasted"
-msgstr "Emès"
-
-#: src/js/services/onGoingProcess.js:11
-msgid "Broadcasting transaction"
-msgstr "S'està emetent la transacció"
-
-#: www/views/unsupported.html:6
-msgid "Browser unsupported"
-msgstr "Navegador no compatible"
-
-#: www/views/buyAmazon.html:5
-#: www/views/buyMercadoLibre.html:6
-msgid "Buy"
-msgstr "Compra"
-
-#: www/views/includes/buyAndSellCard.html:3
-msgid "Buy & Sell Bitcoin"
-msgstr "Compra & ven bitcoins"
-
-#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
-msgid "Buy Bitcoin"
-msgstr "Compra bitcoins"
-
-#: www/views/mercadoLibre.html:22
-#: www/views/mercadoLibre.html:50
-msgid "Buy a Gift Card"
-msgstr "Compra una targeta regal"
-
-#: src/js/controllers/buyAmazon.js:334
-msgid "Buy from"
-msgstr "Compra des de"
-
-#: src/js/services/onGoingProcess.js:40
-msgid "Buying Bitcoin..."
-msgstr "S'estan comprant bitcoins..."
-
-#: src/js/services/onGoingProcess.js:12
-msgid "Calculating fee"
-msgstr "S'està calculant la comissió"
-
-#: src/js/controllers/buyAmazon.js:313
-#: src/js/controllers/buyMercadoLibre.js:307
-#: src/js/controllers/confirm.js:550
-#: src/js/controllers/topup.js:287
-#: src/js/services/incomingData.js:154
-#: 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 "Cancel·la"
-
-#: www/views/copayers.html:36
-msgid "Cancel invitation"
-msgstr "Cancel·la la invitació"
-
-#: src/js/controllers/onboarding/tour.js:52
-msgid "Cannot Create Wallet"
-msgstr "No es pot crear la cartera"
-
-#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
-msgstr "No us podeu unir a la mateixa cartera més d'un cop"
-
-#: www/views/includes/bitpayCardsCard.html:2
-msgid "Cards"
-msgstr "Targetes"
-
-#: www/views/modals/paypro.html:30
-msgid "Certified by"
-msgstr "Certificat per"
-
-#: www/views/preferencesExternal.html:19
-msgid "Check installation and retry."
-msgstr "Comproveu la instal·lació i torneu-ho a provar."
-
-#: www/views/tab-import-file.html:4
-msgid "Choose a backup file from your computer"
-msgstr "Trieu un fitxer de còpia de seguretat de l'ordinador"
-
-#: www/views/modals/wallets.html:9
-msgid "Choose your destination wallet"
-msgstr "Trieu la cartera de destinació"
-
-#: www/views/modals/wallets.html:10
-msgid "Choose your source wallet"
-msgstr "Trieu la cartera d'origen"
-
-#: www/views/backup.html:61
-msgid "Clear"
-msgstr "Esborra"
-
-#: www/views/preferencesHistory.html:24
-msgid "Clear cache"
-msgstr "Esborra la memòria cau"
-
-#: src/js/controllers/confirm.js:373
-#: src/js/controllers/modals/txpDetails.js:49
-msgid "Click to accept"
-msgstr "Feu clic per acceptar"
-
-#: src/js/controllers/confirm.js:367
-msgid "Click to pay"
-msgstr "Feu clic per pagar"
-
-#: src/js/controllers/confirm.js:379
-#: src/js/controllers/modals/txpDetails.js:42
-msgid "Click to send"
-msgstr "Feu clic per enviar"
-
-#: www/views/customAmount.html:4
-#: www/views/modals/mercadolibre-card-details.html:3
-#: 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 "Tanca"
-
-#: www/views/includes/cash.html:2
-#: www/views/preferencesInformation.html:17
-msgid "Coin"
-msgstr "Moneda"
-
-#: www/views/preferences.html:22
-msgid "Color"
-msgstr "Color"
-
-#: www/views/preferencesAbout.html:21
-msgid "Commit hash"
-msgstr "Hash de confirmació"
-
-#: www/views/preferences.html:49
-msgid "Complete the backup process to use this option"
-msgstr "Completeu el procés de còpia de seguretat per utilitzar aquesta opció"
-
-#: www/views/bitpayCard.html:93
-msgid "Completed"
-msgstr "Completat"
-
-#: src/js/controllers/buyAmazon.js:311
-#: src/js/controllers/buyMercadoLibre.js:305
-#: src/js/controllers/confirm.js:549
-#: src/js/controllers/copayers.js:55
-#: src/js/controllers/topup.js:285
-#: www/views/backup.html:60
-#: www/views/backup.html:79
-#: www/views/confirm.html:4
-#: www/views/onboarding/collectEmail.html:32
-msgid "Confirm"
-msgstr "Confirma"
-
-#: www/views/modals/terms.html:26
-#: www/views/onboarding/disclaimer.html:44
-msgid "Confirm & Finish"
-msgstr "Confirmeu & finalitzeu"
-
-#: www/views/buyAmazon.html:90
-msgid "Confirm purchase"
-msgstr "Confirmeu la compra"
-
-#: www/views/modals/pin.html:10
-msgid "Confirm your PIN"
-msgstr "Confirmeu el PIN"
-
-#: src/js/services/walletService.js:1033
-msgid "Confirm your new spending password"
-msgstr "Confirmeu la nova contrasenya de despeses"
-
-#: www/views/tx-details.html:98
-msgid "Confirmations"
-msgstr "Confirmacions"
-
-#: www/views/bitpayCard.html:68
-#: www/views/modals/wallet-balance.html:61
-msgid "Confirming"
-msgstr "S'està confirmant"
-
-#: www/views/bitpayCardIntro.html:37
-msgid "Connect my BitPay Card"
-msgstr "Connecta la meva BitPay Card"
-
-#: src/js/services/onGoingProcess.js:13
-msgid "Connecting to Coinbase..."
-msgstr "S'està connectant a Coinbase..."
-
-#: src/js/services/onGoingProcess.js:14
-msgid "Connecting to Glidera..."
-msgstr "S'està connectant a Glidera..."
-
-#: src/js/services/bwcError.js:53
-msgid "Connection reset by peer"
-msgstr "Connexió reiniciada per un parell"
-
-#: www/views/tab-send.html:85
-msgid "Contacts"
-msgstr "Contactes"
-
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Adreces utilitzades freqüentment desades"
-
-#: www/views/onboarding/notifications.html:9
-msgid "Continue"
-msgstr "Continua"
-
-#: www/views/preferencesLanguage.html:26
-msgid "Contribute Translations"
-msgstr "Contribuïu a les traduccions"
-
-#: src/js/controllers/confirm.js:130
-msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-msgstr "Copay només admet Bitcoin Cash si s'utilitza la nova versió d'adreces"
-
-#: src/js/services/bwcError.js:62
-msgid "Copayer already in this wallet"
-msgstr "Copayer ja és en aquesta cartera"
-
-#: src/js/services/bwcError.js:77
-msgid "Copayer already voted on this spend proposal"
-msgstr "Copayer ja ha votat aquesta proposta de despesa"
-
-#: src/js/services/bwcError.js:107
-msgid "Copayer data mismatch"
-msgstr "Discrepància en les dades de Copayer"
-
-#: www/views/includes/walletActivity.html:2
-msgid "Copayer joined"
-msgstr "Copayer s'ha unit"
-
-#: www/views/preferencesInformation.html:94
-msgid "Copayer {{$index}}"
-msgstr "Copayer {{$index}}"
-
-#: src/js/controllers/copayers.js:79
-#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
-#: www/views/includes/copyToClipboard.html:4
-msgid "Copied to clipboard"
-msgstr "Copiat al porta-retalls"
-
-#: www/views/tab-export-file.html:94
-msgid "Copy this text as it is to a safe place (notepad or email)"
-msgstr "Copieu aquest text tal qual en un lloc segur (bloc de notes o correu electrònic)"
-
-#: www/views/includes/incomingDataMenu.html:51
-#: www/views/includes/incomingDataMenu.html:70
-#: www/views/includes/incomingDataMenu.html:94
-#: www/views/includes/logOptions.html:9
-#: www/views/tab-export-file.html:78
-msgid "Copy to clipboard"
-msgstr "Copia al porta-retalls"
-
-#: src/js/controllers/buyMercadoLibre.js:102
-msgid "Could not access Gift Card Service"
-msgstr "No s'ha pogut accedir al servei de targetes regal"
-
-#: www/views/tab-import-phrase.html:2
-msgid "Could not access the wallet at the server. Please check:"
-msgstr "No s'ha pogut accedir a la cartera al servidor. Comproveu:"
-
-#: src/js/controllers/buyAmazon.js:102
-msgid "Could not access to Amazon.com"
-msgstr "No s'ha pogut accedir a Amazon.com"
-
-#: src/js/services/profileService.js:511
-msgid "Could not access wallet"
-msgstr "No s'ha pogut accedir a la cartera"
-
-#: src/js/controllers/confirm.js:210
-msgid "Could not add message to imported wallet without shared encrypting key"
-msgstr "No s'ha pogut afegir cap missatge a la cartera importada sense la clau d'encriptatge compartida"
-
-#: src/js/controllers/modals/txpDetails.js:199
-msgid "Could not broadcast payment"
-msgstr "No s'ha pogut emetre el pagament"
-
-#: src/js/services/bwcError.js:41
-msgid "Could not build transaction"
-msgstr "No s'ha pogut generar una transacció"
-
-#: src/js/services/walletService.js:854
-msgid "Could not create address"
-msgstr "No s'ha pogut crear una adreça"
-
-#: src/js/controllers/topup.js:92
-msgid "Could not create the invoice"
-msgstr "No s'ha pogut crear la factura"
-
-#: src/js/controllers/buyAmazon.js:164
-#: src/js/controllers/buyMercadoLibre.js:164
-#: src/js/controllers/topup.js:142
-msgid "Could not create transaction"
-msgstr "No s'ha pogut crear una transacció"
-
-#: src/js/services/profileService.js:350
-msgid "Could not create using the specified extended private key"
-msgstr "No s'ha pogut crear utilitzant la clau privada ampliada especificada"
-
-#: src/js/services/profileService.js:362
-msgid "Could not create using the specified extended public key"
-msgstr "No s'ha pogut crear utilitzant la clau pública ampliada especificada"
-
-#: src/js/services/profileService.js:338
-msgid "Could not create: Invalid wallet recovery phrase"
-msgstr "No s'ha pogut crear: la frase de recuperació de la cartera no és vàlida"
-
-#: src/js/controllers/import.js:114
-msgid "Could not decrypt file, check your password"
-msgstr "No s'ha pogut desencriptar el fitxer; comproveu la contrasenya"
-
-#: src/js/controllers/modals/txpDetails.js:181
-msgid "Could not delete payment proposal"
-msgstr "No s'ha pogut suprimir la proposta de pagament"
-
-#: src/js/controllers/cashScan.js:117
-msgid "Could not duplicate"
-msgstr "No s'ha pogut duplicar"
-
-#: src/js/services/feeService.js:73
-msgid "Could not get dynamic fee"
-msgstr "No s'ha pogut obtenir una comissió dinàmica"
-
-#: src/js/services/feeService.js:43
-msgid "Could not get dynamic fee for level: {{feeLevel}}"
-msgstr "No s'ha pogut obtenir la comissió dinàmica per al nivell: {{feeLevel}}"
-
-#: src/js/controllers/modals/feeLevels.js:112
-msgid "Could not get fee levels"
-msgstr "No s'han pogut obtenir els nivells de comissió"
-
-#: src/js/controllers/buyAmazon.js:122
-#: src/js/controllers/buyMercadoLibre.js:122
-#: src/js/controllers/topup.js:100
-msgid "Could not get the invoice"
-msgstr "No s'ha pogut obtenir la factura"
-
-#: src/js/controllers/bitpayCard.js:66
-msgid "Could not get transactions"
-msgstr "No s'han pogut obtenir les transaccions"
-
-#: src/js/services/profileService.js:615
-#: src/js/services/profileService.js:650
-#: src/js/services/profileService.js:674
-msgid "Could not import"
-msgstr "No s'ha pogut importar"
-
-#: src/js/services/profileService.js:584
-msgid "Could not import. Check input file and spending password"
-msgstr "No s'ha pogut importar. Comproveu el fitxer d'entrada i la contrasenya de despeses"
-
-#: src/js/services/profileService.js:457
-msgid "Could not join wallet"
-msgstr "No s'ha pogut unir a la cartera"
-
-#: src/js/controllers/modals/txpDetails.js:161
-msgid "Could not reject payment"
-msgstr "No s'ha pogut rebutjar el pagament"
-
-#: src/js/controllers/preferencesBitpayServices.js:33
-msgid "Could not remove account"
-msgstr "No s'ha pogut suprimir el compte"
-
-#: src/js/controllers/preferencesBitpayCard.js:20
-#: src/js/controllers/preferencesBitpayServices.js:50
-msgid "Could not remove card"
-msgstr "No s'ha pogut suprimir la targeta"
-
-#: src/js/services/walletService.js:776
-msgid "Could not save preferences on the server"
-msgstr "No s'han pogut desar les preferències al servidor"
-
-#: src/js/controllers/modals/txpDetails.js:147
-msgid "Could not send payment"
-msgstr "No s'ha pogut enviar el pagament"
-
-#: src/js/controllers/buyAmazon.js:325
-#: src/js/controllers/buyMercadoLibre.js:318
-#: src/js/controllers/topup.js:299
-msgid "Could not send transaction"
-msgstr "No s'ha pogut enviar la transacció"
-
-#: www/views/walletDetails.html:210
-msgid "Could not update transaction history"
-msgstr "No s'ha pogut actualitzar l'historial de transaccions"
-
-#: src/js/controllers/addresses.js:29
-#: src/js/controllers/addresses.js:37
-#: src/js/controllers/copayers.js:30
-#: src/js/controllers/walletDetails.js:78
-msgid "Could not update wallet"
-msgstr "No s'ha pogut actualitzar la cartera"
-
-#: www/views/tab-create-personal.html:3
-msgid "Create Personal Wallet"
-msgstr "Crea una cartera personal"
-
-#: www/views/tab-create-shared.html:3
-msgid "Create Shared Wallet"
-msgstr "Crea una cartera compartida"
-
-#: www/views/onboarding/tour.html:51
-#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
-msgid "Create bitcoin wallet"
-msgstr "Crea una cartera bitcoin"
-
-#: www/views/tab-create-personal.html:131
-msgid "Create new wallet"
-msgstr "Crea una cartera nova"
-
-#: www/views/add.html:22
-msgid "Create shared wallet"
-msgstr "Crea una cartera compartida"
-
-#: www/views/tab-create-shared.html:160
-msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet"
-msgstr "Crea una cartera {{formData.requiredCopayers}}-de-{{formData.totalCopayers}}"
-
-#: www/views/modals/txp-details.html:81
-#: www/views/tx-details.html:60
-msgid "Created by"
-msgstr "Creada per"
-
-#: src/js/services/onGoingProcess.js:18
-msgid "Creating Wallet..."
-msgstr "S'està creant la cartera..."
-
-#: src/js/services/onGoingProcess.js:17
-msgid "Creating transaction"
-msgstr "S'està creant la transacció"
-
-#: www/views/modals/chooseFeeLevel.html:34
-#: www/views/preferencesFee.html:20
-msgid "Current fee rate for this policy"
-msgstr "Comissió actual d'aquesta política"
-
-#: src/js/services/feeService.js:15
-msgid "Custom"
-msgstr "Personalitzada"
-
-#: www/views/customAmount.html:9
-msgid "Custom Amount"
-msgstr "Quantitat personalitzada"
-
-#: src/js/controllers/preferencesFee.js:85
-msgid "Custom Fee"
-msgstr "Comissió personalitzada"
-
-#: www/views/modals/mercadolibre-card-details.html:56
-#: www/views/modals/txp-details.html:87
-#: www/views/tx-details.html:66
-msgid "Date"
-msgstr "Data"
-
-#: www/views/preferencesDeleteWallet.html:21
-msgid "Delete"
-msgstr "Suprimeix"
-
-#: www/views/modals/txp-details.html:164
-msgid "Delete Payment Proposal"
-msgstr "Suprimeix la proposta de pagament"
-
-#: www/views/preferencesAdvanced.html:33
-#: www/views/preferencesDeleteWallet.html:3
-msgid "Delete Wallet"
-msgstr "Suprimeix la cartera"
-
-#: www/views/copayers.html:59
-msgid "Delete it and create a new one"
-msgstr "Suprimeix-la i crea'n una de nova"
-
-#: src/js/services/onGoingProcess.js:19
-msgid "Deleting Wallet..."
-msgstr "S'està suprimint la cartera..."
-
-#: src/js/services/onGoingProcess.js:28
-msgid "Deleting payment proposal"
-msgstr "S'està suprimint la proposta de pagament"
-
-#: www/views/join.html:141
-#: www/views/tab-create-personal.html:111
-#: www/views/tab-create-shared.html:140
-#: www/views/tab-import-phrase.html:49
-msgid "Derivation Path"
-msgstr "Camí de derivació"
-
-#: www/views/preferencesInformation.html:47
-msgid "Derivation Strategy"
-msgstr "Estratègia de derivació"
-
-#: www/views/buyAmazon.html:39
-#: www/views/buyMercadoLibre.html:38
-#: www/views/modals/mercadolibre-card-details.html:6
-#: www/views/topup.html:45
-msgid "Details"
-msgstr "Detalls"
-
-#: src/js/controllers/lockSetup.js:9
-#: src/js/controllers/tab-settings.js:65
-#: www/views/tab-settings.html:50
-msgid "Disabled"
-msgstr "Deshabilitat"
-
-#: www/views/includes/backupNeededPopup.html:10
-#: www/views/onboarding/backupRequest.html:12
-msgid "Do it later"
-msgstr "Ho faré més tard"
-
-#: www/views/tab-export-file.html:29
-msgid "Do not include private key"
-msgstr "No incloguis la clau 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 la vostra llengua a Crowdin? Poseu-vos en contacte amb el propietari a Crowdin! Ens agradaria molt incloure-hi la vostra llengua."
-
-#: www/views/tab-export-file.html:59
-#: www/views/tab-home.html:22
-msgid "Download"
-msgstr "Descarrega"
-
-#: www/views/cashScan.html:37
-msgid "Duplicate for BCH"
-msgstr "Duplica per BCH"
-
-#: src/js/services/onGoingProcess.js:49
-msgid "Duplicating wallet..."
-msgstr "S'està duplicant la cartera..."
-
-#: 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 cartera bitcoin pot generar milers de milions d'adreces a partir de les vostres 12 paraules de seguretat. Cada cop que rebeu un pagament es genera i es mostra una nova adreça automàticament."
-
-#: src/js/services/feeService.js:13
-msgid "Economy"
-msgstr "Econòmic"
-
-#: www/views/onboarding/collectEmail.html:27
-msgid "Edit"
-msgstr "Edita"
-
-#: www/views/addressbook.add.html:29
-#: www/views/addressbook.view.html:22
-msgid "Email"
-msgstr "Correu electrònic"
-
-#: www/views/preferencesNotifications.html:42
-msgid "Email Address"
-msgstr "Adreça electrònica"
-
-#: src/js/services/bwcError.js:122
-msgid "Empty addresses limit reached. New addresses cannot be generated."
-msgstr "S'ha assolit el límit d'adreces buides. No poden generar adreces noves."
-
-#: www/views/preferencesCash.html:17
-msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-msgstr "Habiliteu la creació de la cartera de Bitcoin Cash i la gestió dins de l'aplicació."
-
-#: www/views/tab-scan.html:19
-msgid "Enable camera access in your device settings to get started."
-msgstr "Habiliteu l'accés a la càmera des dels paràmetres del vostre dispositiu per començar."
-
-#: www/views/preferencesNotifications.html:29
-msgid "Enable email notifications"
-msgstr "Habiliteu les notificacions de correu electrònic"
-
-#: www/views/preferencesNotifications.html:12
-msgid "Enable push notifications"
-msgstr "Habiliteu les notificacions push"
-
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Habiliteu el so"
-
-#: www/views/tab-scan.html:18
-msgid "Enable the camera to get started."
-msgstr "Habiliteu la càmera per començar."
-
-#: www/views/tab-settings.html:49
-msgid "Enabled"
-msgstr "S'ha habilitat"
-
-#: src/js/services/walletService.js:1047
-#: src/js/services/walletService.js:1062
-msgid "Enter Spending Password"
-msgstr "Introduïu la contrasenya de despeses"
-
-#: src/js/services/bitpayAccountService.js:110
-msgid "Enter Two Factor for your BitPay account"
-msgstr "Introduïu l'autenticació de doble factor per al vostre compte BitPay"
-
-#: www/views/amount.html:4
-msgid "Enter amount"
-msgstr "Introduïu la quantitat"
-
-#: www/views/modals/chooseFeeLevel.html:41
-msgid "Enter custom fee"
-msgstr "Introduïu la comissió personalitzada"
-
-#: src/js/services/walletService.js:1029
-msgid "Enter new spending password"
-msgstr "Introduïu la nova contrasenya de despeses"
-
-#: www/views/join.html:79
-#: www/views/tab-create-personal.html:51
-#: www/views/tab-create-shared.html:80
-msgid "Enter the recovery phrase (BIP39)"
-msgstr "Introduïu la frase de recuperació (BIP39)"
-
-#: www/views/onboarding/collectEmail.html:13
-msgid "Enter your email"
-msgstr "Introduïu l'adreça electrònica"
-
-#: www/views/backup.html:69
-msgid "Enter your password"
-msgstr "Introduïu la contrasenya"
-
-#. 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:42
-#: src/js/controllers/addresses.js:125
-#: src/js/controllers/addresses.js:126
-#: src/js/controllers/bitpayCard.js:66
-#: src/js/controllers/bitpayCardIntro.js:40
-#: src/js/controllers/bitpayCardIntro.js:81
-#: src/js/controllers/buyAmazon.js:24
-#: src/js/controllers/buyAmazon.js:35
-#: src/js/controllers/buyMercadoLibre.js:24
-#: src/js/controllers/buyMercadoLibre.js:35
-#: src/js/controllers/confirm.js:307
-#: src/js/controllers/copayers.js:67
-#: src/js/controllers/create.js:161
-#: src/js/controllers/create.js:174
-#: src/js/controllers/create.js:180
-#: src/js/controllers/create.js:186
-#: src/js/controllers/create.js:208
-#: src/js/controllers/create.js:215
-#: src/js/controllers/create.js:233
-#: 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:119
-#: src/js/controllers/import.js:131
-#: src/js/controllers/import.js:149
-#: src/js/controllers/import.js:200
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:238
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:266
-#: src/js/controllers/import.js:278
-#: src/js/controllers/import.js:288
-#: src/js/controllers/import.js:312
-#: src/js/controllers/import.js:325
-#: src/js/controllers/import.js:335
-#: src/js/controllers/import.js:345
-#: src/js/controllers/import.js:369
-#: src/js/controllers/import.js:382
-#: src/js/controllers/import.js:85
-#: src/js/controllers/import.js:98
-#: src/js/controllers/join.js:125
-#: src/js/controllers/join.js:139
-#: src/js/controllers/join.js:145
-#: src/js/controllers/join.js:151
-#: src/js/controllers/join.js:174
-#: src/js/controllers/join.js:182
-#: src/js/controllers/join.js:200
-#: src/js/controllers/modals/feeLevels.js:9
-#: src/js/controllers/modals/txpDetails.js:140
-#: 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:36
-#: src/js/controllers/preferencesExternal.js:20
-#: src/js/controllers/tab-home.js:174
-#: src/js/controllers/tab-send.js:143
-#: src/js/controllers/tabsController.js:36
-#: src/js/controllers/tabsController.js:7
-#: src/js/controllers/topup.js:21
-#: src/js/controllers/topup.js:32
-#: src/js/controllers/tx-details.js:119
-#: src/js/services/incomingData.js:101
-#: src/js/services/incomingData.js:125
-#: src/js/services/incomingData.js:168
-#: www/views/mercadoLibreCards.html:19
-#: www/views/modals/mercadolibre-card-details.html:45
-msgid "Error"
-msgstr "Error"
-
-#: src/js/controllers/confirm.js:502
-msgid "Error at confirm"
-msgstr "Error en confirmar"
-
-#: src/js/controllers/buyAmazon.js:179
-msgid "Error creating gift card"
-msgstr "Error en crear la targeta regal"
-
-#: src/js/controllers/buyAmazon.js:94
-#: src/js/controllers/buyMercadoLibre.js:94
-msgid "Error creating the invoice"
-msgstr "Error en crear la factura"
-
-#: src/js/services/profileService.js:412
-msgid "Error creating wallet"
-msgstr "Error en crear la cartera"
-
-#: src/js/controllers/confirm.js:296
-msgid "Error getting SendMax information"
-msgstr "Error en obtenir la informació SendMax"
-
-#: src/js/controllers/buyAmazon.js:136
-#: src/js/controllers/buyMercadoLibre.js:136
-#: src/js/controllers/topup.js:114
-msgid "Error in Payment Protocol"
-msgstr "Error al protocol de pagament"
-
-#: src/js/controllers/bitpayCardIntro.js:14
-msgid "Error pairing BitPay Account"
-msgstr "Error de sincronització amb el compte de BitPay"
-
-#: src/js/controllers/paperWallet.js:41
-msgid "Error scanning funds:"
-msgstr "Error en escanejar els fons:"
-
-#: src/js/controllers/paperWallet.js:90
-msgid "Error sweeping wallet:"
-msgstr "Error en escombrar la cartera:"
-
-#: src/js/controllers/bitpayCardIntro.js:20
-msgid "Error updating Debit Cards"
-msgstr "Error en actualitzar les targetes de dèbit"
-
-#: src/js/services/bwcError.js:143
-msgid "Exceeded daily limit of $500 per user"
-msgstr "Superat el límit diari de 500 $ per usuari"
-
-#: src/js/controllers/confirm.js:461
-#: www/views/confirm.html:27
-#: www/views/mercadoLibreCards.html:25
-#: www/views/modals/mercadolibre-card-details.html:34
-#: www/views/modals/txp-details.html:119
-msgid "Expired"
-msgstr "Caducada"
-
-#: www/views/modals/paypro.html:54
-#: www/views/modals/txp-details.html:125
-msgid "Expires"
-msgstr "Caduca el"
-
-#: www/views/preferencesAdvanced.html:21
-msgid "Export Wallet"
-msgstr "Exporta la cartera"
-
-#: www/views/preferencesHistory.html:11
-#: www/views/preferencesHistory.html:14
-msgid "Export to file"
-msgstr "Exporta a un fitxer"
-
-#: www/views/export.html:3
-msgid "Export wallet"
-msgstr "Exporta la cartera"
-
-#: src/js/services/walletService.js:1174
-#: www/views/tab-export-qrCode.html:9
-msgid "Exporting via QR not supported for this wallet"
-msgstr "Aquesta cartera no admet l'exportació mitjançant QR"
-
-#: www/views/preferencesInformation.html:89
-msgid "Extended Public Keys"
-msgstr "Claus públiques ampliades"
-
-#: src/js/services/onGoingProcess.js:20
-msgid "Extracting Wallet information..."
-msgstr "S'està extraient informació de la cartera..."
-
-#: 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 "L'exportació ha fallat"
-
-#: www/views/tab-create-personal.html:14
-#: www/views/tab-create-shared.html:14
-msgid "Family vacation funds"
-msgstr "Fons per a les vacances familiars"
-
-#: www/views/tx-details.html:79
-msgid "Fee"
-msgstr "Comissió"
-
-#: www/views/modals/chooseFeeLevel.html:75
-msgid "Fee level"
-msgstr "Nivell de comissió"
-
-#: src/js/controllers/modals/feeLevels.js:100
-msgid "Fee level is not defined"
-msgstr "El nivell de comissió no està definit"
-
-#: www/views/confirm.html:79
-#: www/views/modals/txp-details.html:99
-msgid "Fee:"
-msgstr "Comissió:"
-
-#: src/js/controllers/feedback/send.js:23
-msgid "Feedback could not be submitted. Please try again later."
-msgstr "No s'ha pogut enviar el comentari. Torneu-ho a provar més tard."
-
-#: src/js/services/onGoingProcess.js:42
-msgid "Fetching BitPay Account..."
-msgstr "S'està obtenint el compte BitPay..."
-
-#: src/js/services/onGoingProcess.js:21
-msgid "Fetching payment information"
-msgstr "S'està obtenint la informació del pagament"
-
-#: www/views/export.html:14
-#: www/views/import.html:16
-msgid "File/Text"
-msgstr "Fitxer/Text"
-
-#: www/views/preferencesLogs.html:17
-msgid "Filter setting"
-msgstr "Paràmetres del filtre"
-
-#: src/js/services/fingerprintService.js:43
-#: src/js/services/fingerprintService.js:48
-msgid "Finger Scan Failed"
-msgstr "L'escaneig del dit ha fallat"
-
-#: src/js/controllers/feedback/send.js:34
-#: www/views/feedback/complete.html:7
-msgid "Finish"
-msgstr "Finalitza"
-
-#: www/views/tab-create-personal.html:123
-#: www/views/tab-create-shared.html:152
-msgid "For audit purposes"
-msgstr "Amb finalitats d'auditoria"
-
-#: src/js/controllers/topup.js:308
-#: www/views/buyAmazon.html:29
-#: www/views/buyMercadoLibre.html:28
-#: www/views/confirm.html:65
-#: www/views/modals/txp-details.html:74
-#: www/views/topup.html:34
-#: www/views/tx-details.html:52
-#: www/views/review.html:22
-msgid "From"
-msgstr "Des de"
-
-#: src/js/controllers/bitpayCardIntro.js:71
-msgid "From BitPay account"
-msgstr "Des del compte de BitPay"
-
-#: www/views/tab-import-phrase.html:57
-msgid "From Hardware Wallet"
-msgstr "Des d'una cartera 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 "Des del dispositiu de destinació, aneu a Afegeix cartera > Importa cartera i escanegeu aquest codi QR"
-
-#: src/js/services/bwcError.js:74
-msgid "Funds are locked by pending spend proposals"
-msgstr "Els fons estan bloquejats per propostes de despeses pendents"
-
-#: www/views/paperWallet.html:16
-msgid "Funds found:"
-msgstr "Fons trobats:"
-
-#: www/views/topup.html:49
-msgid "Funds to be added"
-msgstr "Fons per afegir"
-
-#: www/views/paperWallet.html:51
-msgid "Funds transferred"
-msgstr "Fons transferits"
-
-#: www/views/topup.html:103
-msgid "Funds were added to debit card"
-msgstr "Els fons s'han afegit a la targeta de dèbit"
-
-#: www/views/paperWallet.html:22
-msgid "Funds will be transferred to"
-msgstr "Els fons es transferiran a"
-
-#: www/views/tab-receive.html:51
-msgid "Generate new address"
-msgstr "Genera una adreça nova"
-
-#: src/js/services/onGoingProcess.js:22
-msgid "Generating .csv file..."
-msgstr "S'està generant un fitxer. csv..."
-
-#: src/js/services/onGoingProcess.js:37
-msgid "Generating new address..."
-msgstr "S'està generant una adreça nova..."
-
-#: www/views/bitpayCardIntro.html:23
-msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply."
-msgstr "Retireu moneda local a qualsevol lloc on aneu, des de qualsevol caixer automàtic compatible amb Visa® . Pot ser que el banc del caixer apliqui comissions."
-
-#: www/views/onboarding/collectEmail.html:15
-msgid "Get news and updates from BitPay"
-msgstr "Rebeu notícies i actualitzacions de BitPay"
-
-#: www/views/onboarding/welcome.html:8
-#: www/views/bitpayCard.html:49
-msgid "Get started"
-msgstr "Comença"
-
-#: www/views/addressbook.html:20
-msgid "Get started by adding your first one."
-msgstr "Comenceu afegint el primer contacte."
-
-#: src/js/services/onGoingProcess.js:23
-msgid "Getting fee levels..."
-msgstr "S'estan obtenint els nivells de comissió..."
-
-#: www/views/buyAmazon.html:43
-#: www/views/buyMercadoLibre.html:42
-msgid "Gift Card"
-msgstr "Targeta regal"
-
-#: www/views/modals/mercadolibre-card-details.html:30
-#: www/views/modals/mercadolibre-card-details.html:35
-msgid "Gift Card is not available to use anymore"
-msgstr "La targeta regal ja no està disponible"
-
-#: src/js/controllers/buyAmazon.js:204
-msgid "Gift card expired"
-msgstr "La targeta regal ha caducat"
-
-#: www/views/buyAmazon.html:111
-msgid "Gift card generated and ready to use."
-msgstr "Targeta regal generada i a punt per ser utilitzada."
-
-#: src/js/controllers/bitpayCard.js:114
-#: src/js/controllers/bitpayCard.js:124
-#: src/js/controllers/cashScan.js:20
-#: src/js/controllers/onboarding/terms.js:23
-#: src/js/controllers/preferences.js:67
-#: src/js/controllers/preferencesAbout.js:16
-#: src/js/controllers/preferencesCash.js:34
-#: src/js/controllers/preferencesLanguage.js:14
-#: src/js/controllers/tab-home.js:149
-#: src/js/controllers/tab-settings.js:53
-#: src/js/controllers/tx-details.js:193
-#: src/js/controllers/tx-details.js:56
-msgid "Go Back"
-msgstr "Enrere"
-
-#: src/js/controllers/confirm.js:131
-#: src/js/controllers/onboarding/backupRequest.js:20
-#: src/js/controllers/onboarding/backupRequest.js:26
-#: src/js/services/bitpayAccountService.js:84
-msgid "Go back"
-msgstr "Enrere"
-
-#: www/views/backupWarning.html:15
-#: www/views/includes/confirmBackupPopup.html:8
-#: www/views/onboarding/tour.html:23
-msgid "Got it"
-msgstr "Entesos"
-
-#: www/views/preferencesInformation.html:53
-#: www/views/preferencesInformation.html:59
-msgid "Hardware Wallet"
-msgstr "Cartera física"
-
-#: www/views/preferencesExternal.html:18
-msgid "Hardware not connected."
-msgstr "Equip no connectat."
-
-#: www/views/import.html:20
-msgid "Hardware wallet"
-msgstr "Cartera física"
-
-#: src/js/controllers/create.js:180
-#: src/js/controllers/join.js:145
-msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr "Bitcoin Cash encara no admet les carteres físiques"
-
-#: www/views/tab-settings.html:20
-msgid "Help & Support"
-msgstr "Ajuda i assistència"
-
-#: src/js/controllers/bitpayCard.js:112
-#: src/js/controllers/tab-settings.js:51
-msgid "Help and support information is available at the website."
-msgstr "La informació d'ajuda i assistència està disponible al lloc web."
-
-#: www/views/addresses.html:25
-msgid "Hide"
-msgstr "Oculta"
-
-#: www/views/preferences.html:27
-msgid "Hide Balance"
-msgstr "Oculta el saldo"
-
-#: www/views/advancedSettings.html:30
-msgid "Hide Next Steps Card"
-msgstr "Oculta la targeta \"Pròxims passos\""
-
-#: www/views/join.html:49
-#: www/views/tab-create-personal.html:28
-#: www/views/tab-create-shared.html:57
-#: www/views/tab-export-file.html:25
-#: www/views/tab-import-file.html:30
-#: www/views/tab-import-hardware.html:31
-#: www/views/tab-import-phrase.html:36
-msgid "Hide advanced options"
-msgstr "Oculta les opcions avançades"
-
-#: www/views/tabs.html:3
-msgid "Home"
-msgstr "Inici"
-
-#: 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 "Com podríem millorar la vostra experiència?"
-
-#: www/views/feedback/rateCard.html:3
-msgid "How do you like {{appName}}?"
-msgstr "Us agrada {{appName}}?"
-
-#: src/js/controllers/feedback/rateCard.js:29
-msgid "I don't like it"
-msgstr "No m'agrada"
-
-#: www/views/onboarding/disclaimer.html:43
-msgid "I have read, understood, and agree to the Terms of Use ."
-msgstr "He llegit, entès i acceptat les Condicions d'ús ."
-
-#: www/views/modals/terms.html:22
-msgid "I have read, understood, and agree with the Terms of use."
-msgstr "He llegit, entès i acceptat les condicions d'ús."
-
-#: www/views/join.html:137
-#: www/views/tab-create-personal.html:107
-#: www/views/tab-create-shared.html:136
-msgid "I have written it down"
-msgstr "M'ho he apuntat"
-
-#: src/js/controllers/feedback/rateCard.js:35
-msgid "I like the app"
-msgstr "M'agrada l'aplicació"
-
-#: src/js/controllers/feedback/rateCard.js:26
-msgid "I think this app is terrible."
-msgstr "Crec que aquesta aplicació és terrible."
-
-#: src/js/controllers/onboarding/backupRequest.js:19
-#: www/views/includes/screenshotWarningModal.html:9
-msgid "I understand"
-msgstr "Ho entenc"
-
-#: 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 "Entenc que si aquesta aplicació es desplaça a un altre dispositiu o se suprimeix, els meus bitcoins només es podran recuperar amb la frase de seguretat."
-
-#: www/views/onboarding/disclaimer.html:18
-msgid "I understand that my funds are held securely on this device, not by a company."
-msgstr "Entenc que els meus fons estan protegits per aquest dispositiu i no per una empresa."
-
-#: www/views/backup.html:36
-msgid "I've written it down"
-msgstr "M'ho he apuntat"
-
-#: 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 s'habilita aquesta opció, tota la informació sensible (clau privada i frase de recuperació) i les accions (gastar i exportar) associades a aquesta cartera estaran protegides."
-
-#: www/views/advancedSettings.html:23
-msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab."
-msgstr "Si s'habilita aquesta opció, la targeta de transaccions recents (una llista de les transaccions efectuades en totes les carteres) apareixerà a la pestanya d'Inici."
-
-#: www/views/advancedSettings.html:14
-msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays."
-msgstr "Si s'habilita aquesta opció, les carteres també intentaran gastar fons no confirmats. Aquesta opció pot provocar retards en la transacció."
-
-#: 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 aquest dispositiu se substitueix o si se suprimeix aquesta aplicació, ni BitPay ni vós podreu recuperar els fons sense una còpia de seguretat."
-
-#: 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 ens voleu comentar alguna altra cosa, toqueu l'opció \"Envia comentaris\" a la pestanya de Paràmetres."
-
-#: 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 feu una captura de pantalla, altres aplicacions podran veure la còpia de seguretat. Podeu fer una còpia de seguretat amb un paper i un llapis físics."
-
-#: www/views/tab-import-hardware.html:42
-#: www/views/tab-import-phrase.html:80
-msgid "Import"
-msgstr "Importa"
-
-#: www/views/import.html:3
-msgid "Import Wallet"
-msgstr "Importa la cartera"
-
-#: www/views/tab-import-file.html:41
-msgid "Import backup"
-msgstr "Importa la còpia de seguretat"
-
-#: www/views/add.html:38
-msgid "Import wallet"
-msgstr "Importa la cartera"
-
-#: src/js/services/onGoingProcess.js:24
-msgid "Importing Wallet..."
-msgstr "S'està important la cartera..."
-
-#: www/views/backup.html:72
-msgid "In order to verify your wallet backup, please type your password."
-msgstr "Per verificar la còpia de seguretat de la cartera, escriviu la contrasenya."
-
-#: www/views/mercadoLibreCards.html:24
-#: www/views/modals/mercadolibre-card-details.html:29
-msgid "Inactive"
-msgstr "Inactiva"
-
-#: www/views/includes/walletItem.html:9
-#: www/views/includes/walletList.html:6
-#: www/views/includes/walletListSettings.html:9
-#: www/views/includes/walletSelector.html:16
-msgid "Incomplete"
-msgstr "Incompleta"
-
-#: www/views/tab-receive.html:22
-msgid "Incomplete wallet"
-msgstr "Cartera incompleta"
-
-#: www/views/modals/pin.html:12
-msgid "Incorrect PIN, try again."
-msgstr "PIN incorrecte; torneu-ho a provar."
-
-#. Trying to import a malformed wallet export QR code
-#: src/js/controllers/import.js:85
-msgid "Incorrect code format"
-msgstr "Format de codi incorrecte"
-
-#: src/js/services/bwcError.js:113
-msgid "Incorrect network address"
-msgstr "Adreça de xarxa incorrecta"
-
-#: src/js/controllers/confirm.js:114
-#: src/js/controllers/confirm.js:306
-#: src/js/services/bwcError.js:44
-msgid "Insufficient confirmed funds"
-msgstr "Fons confirmats insuficients"
-
-#: src/js/controllers/topup.js:165
-#: src/js/controllers/topup.js:177
-#: src/js/services/bwcError.js:71
-msgid "Insufficient funds for fee"
-msgstr "Fons insuficients per la comissió"
-
-#: www/views/tab-settings.html:123
-msgid "Integrations"
-msgstr "Integracions"
-
-#: www/views/includes/walletHistory.html:49
-msgid "Invalid"
-msgstr "No vàlid"
-
-#: src/js/controllers/buyAmazon.js:137
-#: src/js/controllers/buyMercadoLibre.js:137
-#: src/js/controllers/topup.js:115
-msgid "Invalid URL"
-msgstr "L'URL no és vàlid"
-
-#: src/js/controllers/create.js:186
-#: src/js/controllers/import.js:345
-#: src/js/controllers/join.js:151
-msgid "Invalid account number"
-msgstr "Número de compte no vàlid"
-
-#: src/js/services/bwcError.js:119
-msgid "Invalid address"
-msgstr "Adreça no vàlida"
-
-#: src/js/controllers/tabsController.js:7
-msgid "Invalid data"
-msgstr "Dades no vàlides"
-
-#: src/js/controllers/create.js:161
-#: src/js/controllers/import.js:266
-#: src/js/controllers/join.js:125
-msgid "Invalid derivation path"
-msgstr "Camí de derivació no vàlid"
-
-#: src/js/controllers/copayers.js:90
-msgid "Invitation to share a {{appName}} Wallet"
-msgstr "Invitació per compartir una cartera {{appName}}"
-
-#: www/views/mercadoLibreCards.html:20
-#: www/views/modals/mercadolibre-card-details.html:48
-msgid "Invoice expired"
-msgstr "La factura ha vençut"
-
-#: src/js/controllers/feedback/send.js:79
-msgid "Is there anything we could do better?"
-msgstr "Podríem fer millor alguna cosa?"
-
-#: www/views/backup.html:54
-msgid "Is this correct?"
-msgstr "És correcte?"
-
-#: www/views/onboarding/collectEmail.html:22
-msgid "Is this email address correct?"
-msgstr "És correcta, aquesta adreça electrònica?"
-
-#: 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 "És aconsellable no reutilitzar les adreces. Això protegeix la vostra privadesa i els vostres bitcoins contra atacs hipotètics d'ordinadors quàntics."
-
-#: 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 "És important que copieu la vostra frase de seguretat correctament. Si li passés alguna cosa a la cartera, necessitaríeu aquesta frase de seguretat per recuperar els vostres diners. Reviseu la frase de seguretat i torneu-ho a provar."
-
-#: www/views/join.html:151
-msgid "Join"
-msgstr "Uneix-t'hi"
-
-#: 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 "Uneix-te a la meva cartera {{appName}}. Aquí tens el codi d'invitació: {{secret}} Et pots descarregar {{appName}} per al teu telèfon o ordinador de taula a {{appUrl}}"
-
-#: www/views/add.html:30
-#: www/views/join.html:5
-msgid "Join shared wallet"
-msgstr "Uneix-te a la cartera compartida"
-
-#: src/js/services/onGoingProcess.js:25
-msgid "Joining Wallet..."
-msgstr "S'està unint a la cartera..."
-
-#: www/views/onboarding/tour.html:22
-msgid "Just scan the code to pay."
-msgstr "Escanegeu el codi per pagar."
-
-#: src/js/services/bwcError.js:116
-msgid "Key already associated with an existing wallet"
-msgstr "Clau ja associada a una cartera existent"
-
-#: www/views/preferencesLanguage.html:4
-#: www/views/tab-settings.html:68
-msgid "Language"
-msgstr "Llengua"
-
-#: www/views/bitpayCard.html:61
-msgid "Last Month"
-msgstr "Mes passat"
-
-#: src/js/controllers/confirm.js:132
-#: www/views/preferences.html:48
-#: www/views/preferencesCash.html:18
-#: www/views/tx-details.html:94
-msgid "Learn more"
-msgstr "Més informació"
-
-#: www/views/backup.html:43
-msgid "Let's verify your backup phrase."
-msgstr "Verifiquem la vostra frase de seguretat."
-
-#: www/views/addresses.html:45
-#: www/views/allAddresses.html:14
-msgid "Loading addresses..."
-msgstr "S'estan carregant les adreces..."
-
-#: src/js/services/onGoingProcess.js:35
-msgid "Loading transaction info..."
-msgstr "S'està carregant la informació de la transacció..."
-
-#: www/views/tab-settings.html:100
-msgid "Lock App"
-msgstr "Bloqueja l'aplicació"
-
-#: src/js/controllers/lockSetup.js:23
-msgid "Lock by Fingerprint"
-msgstr "Bloqueja amb empremta digital"
-
-#: src/js/controllers/lockSetup.js:14
-msgid "Lock by PIN"
-msgstr "Bloqueja amb PIN"
-
-#: www/views/modals/wallet-balance.html:80
-msgid "Locked"
-msgstr "Bloquejat"
-
-#: src/js/services/bwcError.js:86
-msgid "Locktime in effect. Please wait to create a new spend proposal"
-msgstr "Bloqueig temporal. Espereu per crear una nova proposta de despesa"
-
-#: src/js/services/bwcError.js:89
-msgid "Locktime in effect. Please wait to remove this spend proposal"
-msgstr "Bloqueig temporal. Espereu per suprimir aquesta proposta de despesa"
-
-#: www/views/includes/logOptions.html:3
-msgid "Log options"
-msgstr "Opcions de registre"
-
-#: www/views/modals/bitpay-card-confirmation.html:14
-msgid "Log out"
-msgstr "Finalitza la sessió"
-
-#: www/views/addresses.html:87
-msgid "Low amount inputs"
-msgstr "Entrades d'import baix"
-
-#: www/views/includes/walletHistory.html:27
-msgid "Low fees"
-msgstr "Comissions baixes"
-
-#: www/views/onboarding/tour.html:38
-msgid "Makes sense"
-msgstr "És lògic"
-
-#: src/js/controllers/modals/search.js:61
-msgid "Matches:"
-msgstr "Coincidències:"
-
-#: www/views/includes/copayers.html:4
-#: www/views/preferencesInformation.html:85
-msgid "Me"
-msgstr "Jo"
-
-#: src/js/controllers/feedback/rateCard.js:32
-msgid "Meh - it's alright"
-msgstr "Entesos"
-
-#: src/js/controllers/tx-details.js:165
-#: www/views/modals/paypro.html:48
-#: www/views/modals/txp-details.html:93
-#: www/views/tx-details.html:72
-msgid "Memo"
-msgstr "Nota"
-
-#: www/views/mercadoLibre.html:6
-msgid "Mercado Livre Brazil Gift Cards"
-msgstr "Targetes regal de Mercado Livre Brasil"
-
-#: src/js/controllers/buyMercadoLibre.js:98
-msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr "El servei de targetes de regal de Mercadolibre no està disponible en aquest moment. Torneu-ho a provar més tard."
-
-#: www/views/modals/txp-details.html:131
-msgid "Merchant Message"
-msgstr "Missatge del comerciant"
-
-#: www/views/buyAmazon.html:55
-#: www/views/buyMercadoLibre.html:54
-#: www/views/topup.html:63
-msgid "Miner Fee"
-msgstr "Comissió del miner"
-
-#: src/js/services/bwcError.js:134
-msgid "Missing parameter"
-msgstr "Falta un paràmetre"
-
-#: src/js/services/bwcError.js:32
-msgid "Missing private keys to sign"
-msgstr "Falten claus privades per firmar"
-
-#: www/views/preferences.html:61
-#: www/views/preferencesAdvanced.html:3
-msgid "More Options"
-msgstr "Més opcions"
-
-#: www/views/includes/walletHistory.html:47
-#: www/views/tx-details.html:19
-msgid "Moved"
-msgstr "Desplaçats"
-
-#: src/js/controllers/tx-details.js:131
-msgid "Moved Funds"
-msgstr "Fons desplaçats"
-
-#: www/views/modals/txp-details.html:57
-msgid "Multiple recipients"
-msgstr "Múltiples destinataris"
-
-#: 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 importar una cartera des d'un programari d'un tercer, aneu a Afegeix cartera > Crea cartera i especifiqueu la frase de recuperació."
-
-#: 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:49
-#: www/views/buyMercadoLibre.html:48
-#: www/views/topup.html:56
-msgid "Network Cost"
-msgstr "Cost de la xarxa"
-
-#: src/js/services/bwcError.js:47
-msgid "Network error"
-msgstr "Error de xarxa"
-
-#: www/views/includes/walletActivity.html:43
-msgid "New Proposal"
-msgstr "Nova proposta"
-
-#: src/js/controllers/addresses.js:126
-msgid "New address could not be generated. Please try again."
-msgstr "No s'ha pogut generar l'adreça nova. Torneu-ho a provar."
-
-#: www/views/add.html:14
-msgid "New personal wallet"
-msgstr "Nova cartera personal"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Next steps"
-msgstr "Pròxims passos"
-
-#: www/views/tab-receive.html:16
-msgid "No Wallet"
-msgstr "No hi ha cap cartera"
-
-#: src/js/controllers/buyAmazon.js:115
-#: src/js/controllers/buyMercadoLibre.js:115
-msgid "No access key defined"
-msgstr "No s'ha definit cap clau d'accés"
-
-#: www/views/onboarding/backupRequest.html:5
-msgid "No backup, no bitcoin."
-msgstr "No hi ha cap còpia de seguretat, cap bitcoin."
-
-#: www/views/addressbook.html:19
-msgid "No contacts yet"
-msgstr "Encara no hi ha cap contacte"
-
-#: www/views/preferencesLogs.html:16
-msgid "No entries for this log level"
-msgstr "No hi ha entrades per a aquest nivell de registre"
-
-#: www/views/preferencesExternal.html:12
-msgid "No hardware information available."
-msgstr "No hi ha cap informació de maquinari disponible."
-
-#: www/views/tab-import-hardware.html:3
-msgid "No hardware wallets supported on this device"
-msgstr "Aquest dispositiu no admet cap cartera física"
-
-#: www/views/proposals.html:24
-msgid "No pending proposals"
-msgstr "No hi ha cap proposta pendent"
-
-#: www/views/activity.html:25
-msgid "No recent transactions"
-msgstr "No hi ha transaccions recents"
-
-#: src/js/controllers/buyAmazon.js:44
-#: src/js/controllers/topup.js:47
-msgid "No signing proposal: No private key"
-msgstr "No hi ha cap proposta de firma: cap clau privada"
-
-#: www/views/walletDetails.html:204
-msgid "No transactions yet"
-msgstr "Encara no hi ha cap transacció"
-
-#: src/js/controllers/preferencesDelete.js:15
-msgid "No wallet found"
-msgstr "No s'ha trobat cap cartera"
-
-#: src/js/controllers/preferencesDelete.js:8
-msgid "No wallet selected"
-msgstr "No s'ha seleccionat cap cartera"
-
-#: src/js/controllers/buyAmazon.js:300
-#: src/js/controllers/buyMercadoLibre.js:292
-#: src/js/controllers/confirm.js:85
-#: src/js/controllers/topup.js:265
-msgid "No wallets available"
-msgstr "No hi ha cap cartera disponible"
-
-#: www/views/paperWallet.html:45
-msgid "No wallets available to receive funds"
-msgstr "No hi ha cap cartera disponible per rebre fons"
-
-#: www/views/cashScan.html:15
-msgid "No wallets eligible for Bitcoin Cash support"
-msgstr "No hi ha cap cartera compatible amb Bitcoin Cash"
-
-#: src/js/controllers/cashScan.js:58
-msgid "Non BIP44 wallet"
-msgstr "Cartera no BIP44"
-
-#: www/views/cashScan.html:46
-msgid "Non eligible BTC wallets"
-msgstr "Carteres BTC no compatibles"
-
-#: src/js/services/feeService.js:12
-msgid "Normal"
-msgstr "Normal"
-
-#: src/js/services/bwcError.js:80
-msgid "Not authorized"
-msgstr "No autoritzat"
-
-#: src/js/controllers/confirm.js:307
-msgid "Not enough funds for fee"
-msgstr "No hi ha prou fons per a la comissió"
-
-#: www/views/onboarding/tour.html:50
-msgid "Not even BitPay can access it."
-msgstr "Ni tan sols BitPay pot accedir-hi."
-
-#: src/js/controllers/paperWallet.js:47
-msgid "Not funds found"
-msgstr "No s'han trobat fons"
-
-#: www/views/feedback/rateApp.html:3
-#: www/views/onboarding/notifications.html:8
-msgid "Not now"
-msgstr "Ara no"
-
-#: www/views/includes/output.html:15
-msgid "Note"
-msgstr "Nota"
-
-#: www/views/backup.html:19
-msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-msgstr "Nota: Si aquesta cartera BCH s'ha duplicat des d'una cartera BTC, comparteixen la mateixa frase de recuperació."
-
-#: www/views/modals/wallets.html:25
-msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin"
-msgstr "Avís: Només es poden utilitzar les carteres 1-1 (de firma única) per vendre bitcoins"
-
-#: www/views/preferencesNotifications.html:3
-#: www/views/tab-settings.html:61
-msgid "Notifications"
-msgstr "Notificacions"
-
-#: www/views/onboarding/collectEmail.html:9
-msgid "Notifications by email"
-msgstr "Notificacions per correu electrònic"
-
-#: www/views/tx-details.html:117
-msgid "Notify me if confirmed"
-msgstr "Notifica-m'ho si es confirma"
-
-#: www/views/preferencesNotifications.html:24
-msgid "Notify me when transactions are confirmed"
-msgstr "Notifica-m'ho quan les transaccions es confirmin"
-
-#: 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 "Ara és el moment de fer una còpia de seguretat de la cartera. Si perdeu aquest dispositiu, serà impossible accedir als vostres fons sense una còpia de seguretat."
-
-#: www/views/backupWarning.html:11
-msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?"
-msgstr "Ara és el moment ideal per mirar al voltant. Finestres pròximes? Càmeres ocultes? Tafaners?"
-
-#: src/js/controllers/buyAmazon.js:312
-#: src/js/controllers/topup.js:286
-#: src/js/services/incomingData.js:153
-#: 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 "D'ACORD"
-
-#: www/views/modals/terms.html:15
-msgid "Official English Disclaimer"
-msgstr "Renúncia oficial en anglès"
-
-#: src/js/controllers/feedback/send.js:64
-msgid "Oh no!"
-msgstr "Ostres, no!"
-
-#: src/js/controllers/buyMercadoLibre.js:306
-msgid "Ok"
-msgstr "D'acord"
-
-#: www/views/tab-home.html:39
-msgid "On this screen you can see all your wallets, accounts, and assets."
-msgstr "En aquesta pantalla hi podeu veure totes les vostres carteres, comptes i actius."
-
-#: src/js/controllers/bitpayCard.js:113
-#: src/js/controllers/cashScan.js:19
-#: src/js/controllers/preferences.js:66
-#: src/js/controllers/preferencesCash.js:33
-#: src/js/controllers/tab-settings.js:52
-#: src/js/controllers/tx-details.js:55
-msgid "Open"
-msgstr "Obre"
-
-#: src/js/controllers/preferencesLanguage.js:13
-msgid "Open Crowdin"
-msgstr "Obre Crowdin"
-
-#: src/js/controllers/preferencesAbout.js:15
-msgid "Open GitHub"
-msgstr "Obre GitHub"
-
-#: src/js/controllers/preferencesAbout.js:13
-msgid "Open GitHub Project"
-msgstr "Obre el projecte GitHub"
-
-#: src/js/controllers/bitpayCard.js:123
-#: src/js/controllers/tx-details.js:192
-msgid "Open Explorer"
-msgstr "Obre l'explorador"
-
-#: www/views/tab-scan.html:22
-msgid "Open Settings"
-msgstr "Obre els paràmetres"
-
-#: src/js/controllers/preferencesLanguage.js:11
-msgid "Open Translation Community"
-msgstr "Obre la comunitat de traducció"
-
-#: src/js/controllers/onboarding/terms.js:22
-msgid "Open Website"
-msgstr "Obre el lloc web"
-
-#: src/js/controllers/preferencesCash.js:32
-msgid "Open bitcoincash.org?"
-msgstr "Voleu obrir bitcoincash.org?"
-
-#: src/js/controllers/cashScan.js:18
-msgid "Open the recovery tool."
-msgstr "Obre l'eina de recuperació."
-
-#: www/views/tab-receive.html:27
-msgid "Open wallet"
-msgstr "Obre la cartera"
-
-#: www/views/includes/incomingDataMenu.html:19
-msgid "Open website"
-msgstr "Obre el lloc web"
-
-#: www/views/bitpayCardIntro.html:34
-msgid "Order the BitPay Card"
-msgstr "Sol·licita la BitPay Card"
-
-#: www/views/join.html:105
-#: www/views/join.html:96
-#: www/views/tab-create-personal.html:69
-#: www/views/tab-create-personal.html:77
-#: www/views/tab-create-shared.html:106
-#: www/views/tab-create-shared.html:98
-#: www/views/tab-import-file.html:18
-#: www/views/tab-import-phrase.html:41
-msgid "Password"
-msgstr "Contrasenya"
-
-#: src/js/controllers/import.js:98
-msgid "Password required. Make sure to enter your password in advanced options"
-msgstr "Cal contrasenya. Recordeu-vos d'introduir la contrasenya a les opcions avançades"
-
-#: www/views/join.html:33
-msgid "Paste invitation here"
-msgstr "Enganxeu la invitació aquí"
-
-#: www/views/tab-import-file.html:13
-msgid "Paste the backup plain text code"
-msgstr "Enganxeu el codi del text net de seguretat"
-
-#: www/views/bitpayCardIntro.html:28
-msgid "Pay 0% fees to turn bitcoin into dollars."
-msgstr "Pagueu un 0% de comissió per convertir bitcoins a dòlars."
-
-#: www/views/modals/paypro.html:18
-msgid "Pay To"
-msgstr "Paga a"
-
-#: src/js/controllers/modals/txpDetails.js:51
-#: www/views/modals/tx-status.html:33
-msgid "Payment Accepted"
-msgstr "Pagament acceptat"
-
-#: www/views/confirm.html:25
-msgid "Payment Expires:"
-msgstr "El pagament venç:"
-
-#: www/views/modals/txp-details.html:6
-msgid "Payment Proposal"
-msgstr "Proposta de pagament"
-
-#: www/views/modals/tx-status.html:21
-msgid "Payment Proposal Created"
-msgstr "Proposta de pagament creada"
-
-#: www/views/tab-home.html:46
-msgid "Payment Proposals"
-msgstr "Propostes de pagament"
-
-#: src/js/services/payproService.js:32
-msgid "Payment Protocol Invalid"
-msgstr "Protocol de pagament no vàlid"
-
-#: src/js/services/payproService.js:18
-msgid "Payment Protocol not supported on Chrome App"
-msgstr "L'aplicació Chrome no admet el protocol de pagament"
-
-#: www/views/includes/walletActivity.html:20
-msgid "Payment Received"
-msgstr "Pagament rebut"
-
-#: www/views/modals/tx-status.html:43
-#: www/views/modals/txp-details.html:43
-msgid "Payment Rejected"
-msgstr "Pagament rebutjat"
-
-#: src/js/controllers/modals/txpDetails.js:44
-#: www/views/confirm.html:124
-#: www/views/includes/walletActivity.html:11
-#: www/views/modals/txp-details.html:42
-msgid "Payment Sent"
-msgstr "Pagament enviat"
-
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Comparteix aquesta transacció"
-
-#: www/views/modals/txp-details.html:32
-msgid "Payment accepted, but not yet broadcasted"
-msgstr "Pagament acceptat, però encara no emès"
-
-#: 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 "Pagament acceptat. S'emetrà amb Glidera. Si hi ha algun problema, es pot cancel·lar 6 hores després d'haver-lo creat."
-
-#: src/js/services/incomingData.js:152
-msgid "Payment address was translated to new Bitcoin Cash address format:"
-msgstr "L'adreça de pagament s'ha traduït al nou format d'adreça Bitcoin Cash:"
-
-#: www/views/modals/txp-details.html:107
-msgid "Payment details"
-msgstr "Dades de pagament"
-
-#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr "Sol·licitud de pagament"
-
-#: www/views/mercadoLibreCards.html:22
-#: www/views/modals/mercadolibre-card-details.html:39
-msgid "Pending"
-msgstr "Pendent"
-
-#: www/views/proposals.html:4
-msgid "Pending Proposals"
-msgstr "Propostes pendents"
-
-#: www/views/preferencesDeleteWallet.html:13
-msgid "Permanently delete this wallet."
-msgstr "Suprimeix definitivament aquesta cartera."
-
-#: src/js/services/profileService.js:403
-msgid "Personal Wallet"
-msgstr "Cartera personal"
-
-#: www/views/backup.html:25
-msgid "Please carefully write down this phrase."
-msgstr "Apunteu-vos bé aquesta frase."
-
-#: www/views/tab-scan.html:20
-msgid "Please connect a camera to get started."
-msgstr "Connecteu una càmera per començar."
-
-#: src/js/controllers/import.js:278
-msgid "Please enter the recovery phrase"
-msgstr "Introduïu la frase de recuperació"
-
-#: src/js/controllers/create.js:174
-#: src/js/controllers/join.js:139
-msgid "Please enter the wallet recovery phrase"
-msgstr "Introduïu la frase de recuperació de la cartera"
-
-#: www/views/modals/pin.html:9
-msgid "Please enter your PIN"
-msgstr "Introduïu el PIN"
-
-#: www/views/backup.html:53
-msgid "Please tap each word in the correct order."
-msgstr "Toqueu cada paraula en l'ordre correcte."
-
-#: src/js/services/bwcError.js:101
-msgid "Please upgrade Copay to perform this action"
-msgstr "Actualitzeu Copay per realitzar aquesta acció"
-
-#: www/views/walletDetails.html:142
-#: www/views/walletDetails.html:62
-msgid "Please wait"
-msgstr "Espereu"
-
-#: src/js/controllers/import.js:238
-msgid "Please, select your backup file"
-msgstr "Seleccioneu el vostre fitxer de còpia de seguretat"
-
-#: www/views/bitpayCard.html:81
-msgid "Pre-Auth Holds"
-msgstr "Retencions preautoritzades"
-
-#: www/views/tab-settings.html:40
-msgid "Preferences"
-msgstr "Preferències"
-
-#: src/js/services/onGoingProcess.js:38
-msgid "Preparing addresses..."
-msgstr "S'estan preparant les adreces..."
-
-#: src/js/controllers/export.js:198
-msgid "Preparing backup..."
-msgstr "S'està preparant la còpia de seguretat..."
-
-#: src/js/routes.js:1264
-msgid "Press again to exit"
-msgstr "Torneu a prémer per sortir"
-
-#: src/js/services/feeService.js:11
-msgid "Priority"
-msgstr "Prioritat"
-
-#: www/views/includes/incomingDataMenu.html:80
-msgid "Private Key"
-msgstr "Clau privada"
-
-#: src/js/controllers/paperWallet.js:136
-msgid "Private key encrypted. Enter password"
-msgstr "Clau privada encriptada. Introduïu la contrasenya"
-
-#: src/js/services/bwcError.js:35
-msgid "Private key is encrypted, cannot sign"
-msgstr "La clau privada està encriptada, no es pot firmar"
-
-#: www/views/includes/walletActivity.html:51
-msgid "Proposal Accepted"
-msgstr "Proposta acceptada"
-
-#: src/js/controllers/modals/txpDetails.js:61
-#: src/js/controllers/tx-details.js:78
-#: www/views/confirm.html:125
-msgid "Proposal Created"
-msgstr "Proposta creada"
-
-#: www/views/includes/walletActivity.html:27
-msgid "Proposal Deleted"
-msgstr "Proposta suprimida"
-
-#: www/views/includes/walletActivity.html:35
-msgid "Proposal Rejected"
-msgstr "Proposta rebutjada"
-
-#: www/views/walletDetails.html:189
-msgid "Proposals"
-msgstr "Propostes"
-
-#: src/js/controllers/buyAmazon.js:282
-msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
-msgstr "L'import de la compra està limitat a {{limitPerDay}} {{currency}} per día"
-
-#: src/js/controllers/buyMercadoLibre.js:281
-msgid "Purchase amount must be a value between 50 and 2000"
-msgstr "L'import de la compra ha de ser un valor entre 50 i 2000"
-
-#: www/views/onboarding/notifications.html:3
-msgid "Push Notifications"
-msgstr "Notificacions push"
-
-#: www/views/preferencesNotifications.html:17
-msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app."
-msgstr "Les notificacions push per a {{appName}} estan inhabilitades. Habiliteu-les als paràmetres de l'aplicació."
-
-#: www/views/export.html:17
-msgid "QR Code"
-msgstr "Codi QR"
-
-#: www/views/onboarding/disclaimer.html:13
-msgid "Quick review!"
-msgstr "Revisió ràpida!"
-
-#: src/js/controllers/create.js:84
-#: src/js/controllers/join.js:68
-msgid "Random"
-msgstr "Aleatori"
-
-#: www/views/feedback/rateApp.html:14
-msgid "Rate on the app store"
-msgstr "Valora'ns a la botiga d'aplicacions"
-
-#: www/views/addresses.html:52
-msgid "Read less"
-msgstr "Menys informació"
-
-#: www/views/addresses.html:51
-msgid "Read more"
-msgstr "Més informació"
-
-#: src/js/controllers/preferences.js:65
-#: src/js/controllers/tx-details.js:54
-msgid "Read more in our Wiki"
-msgstr "Més informació al nostre wiki"
-
-#: src/js/controllers/cashScan.js:61
-msgid "Read only wallet"
-msgstr "Cartera només de lectura"
-
-#: www/views/tab-receive.html:3
-#: www/views/tabs.html:7
-msgid "Receive"
-msgstr "Rep"
-
-#: www/views/customAmount.html:44
-msgid "Receive in"
-msgstr "Rebre en"
-
-#: www/views/includes/walletHistory.html:24
-#: www/views/tx-details.html:18
-msgid "Received"
-msgstr "Rebuts"
-
-#: src/js/controllers/tx-details.js:130
-msgid "Received Funds"
-msgstr "Fons rebuts"
-
-#: www/views/includes/walletHistory.html:57
-#: www/views/tx-details.html:24
-msgid "Receiving"
-msgstr "S'estan rebent"
-
-#: www/views/bitpayCard.html:60
-#: www/views/includes/walletHistory.html:3
-msgid "Recent"
-msgstr "Recents"
-
-#: www/views/advancedSettings.html:21
-msgid "Recent Transaction Card"
-msgstr "Targeta de transaccions recents"
-
-#: www/views/activity.html:4
-#: www/views/tab-home.html:58
-msgid "Recent Transactions"
-msgstr "Transaccions recents"
-
-#: www/views/amount.html:18
-#: www/views/tab-send.html:9
-msgid "Recipient"
-msgstr "Destinatari"
-
-#: www/views/modals/txp-details.html:62
-msgid "Recipients"
-msgstr "Destinataris"
-
-#: www/views/import.html:12
-msgid "Recovery phrase"
-msgstr "Frase de recuperació"
-
-#: src/js/services/onGoingProcess.js:26
-msgid "Recreating Wallet..."
-msgstr "S'està reproduint la cartera..."
-
-#: www/views/modals/mercadolibre-card-details.html:22
-msgid "Redeem now"
-msgstr "Bescanvia ara"
-
-#: src/js/controllers/modals/txpDetails.js:63
-#: src/js/controllers/tx-details.js:80
-msgid "Rejected"
-msgstr "Rebutjada"
-
-#: src/js/services/onGoingProcess.js:27
-msgid "Rejecting payment proposal"
-msgstr "S'està rebutjant la proposta de pagament"
-
-#: www/views/preferencesAbout.html:9
-msgid "Release information"
-msgstr "Informació de la versió"
-
-#: www/views/addressbook.view.html:36
-#: www/views/modals/mercadolibre-card-details.html:69
-msgid "Remove"
-msgstr "Suprimeix"
-
-#: src/js/controllers/preferencesBitpayServices.js:7
-msgid "Remove BitPay Account?"
-msgstr "Voleu suprimir el compte de BitPay?"
-
-#: src/js/controllers/preferencesBitpayServices.js:19
-msgid "Remove BitPay Card?"
-msgstr "Voleu suprimir la targeta 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 "Si suprimiu el compte de BitPay, se suprimiran totes les dades associades al compte de BitPay d'aquest dispositiu. Segur que voleu suprimir el compte de BitPay ({{email}}) d'aquest dispositiu?"
-
-#: www/views/join.html:116
-#: www/views/join.html:124
-#: www/views/tab-create-personal.html:86
-#: www/views/tab-create-personal.html:94
-#: www/views/tab-create-shared.html:115
-#: www/views/tab-create-shared.html:123
-#: www/views/tab-export-file.html:17
-msgid "Repeat password"
-msgstr "Repetiu contrasenya"
-
-#: www/views/tab-export-file.html:16
-msgid "Repeat the password"
-msgstr "Repetiu la contrasenya"
-
-#: www/views/preferences.html:56
-msgid "Request Fingerprint"
-msgstr "Sol·licita l'empremta digital"
-
-#: www/views/tab-receive.html:45
-msgid "Request Specific amount"
-msgstr "Sol·licita un import específic"
-
-#: www/views/preferences.html:42
-msgid "Request Spending Password"
-msgstr "Sol·licita contrasenya de despeses"
-
-#: www/views/tab-create-shared.html:44
-msgid "Required number of signatures"
-msgstr "Nombre de firmes requerit"
-
-#: www/views/onboarding/welcome.html:9
-msgid "Restore from backup"
-msgstr "Restaura des de la còpia de seguretat"
-
-#: src/js/services/onGoingProcess.js:29
-msgid "Retrieving inputs information"
-msgstr "S'està recuperant la informació d'entrades"
-
-#: src/js/controllers/onboarding/tour.js:56
-msgid "Retry"
-msgstr "Torna-ho a provar"
-
-#: www/views/tab-scan.html:23
-msgid "Retry Camera"
-msgstr "Torna a provar la càmera"
-
-#: 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 "Desa"
-
-#: www/views/tab-scan.html:3
-#: www/views/tabs.html:11
-msgid "Scan"
-msgstr "Escaneja"
-
-#: www/views/tab-scan.html:15
-msgid "Scan QR Codes"
-msgstr "Escaneja els codis QR"
-
-#: www/views/addresses.html:31
-msgid "Scan addresses for funds"
-msgstr "Escanegeu les adreces per trobar fons"
-
-#: www/views/modals/fingerprintCheck.html:11
-msgid "Scan again"
-msgstr "Torneu a escanejar"
-
-#: src/js/services/fingerprintService.js:56
-msgid "Scan your fingerprint please"
-msgstr "Escanegeu la vostra empremta digital"
-
-#: www/views/preferencesCash.html:23
-msgid "Scan your wallets for Bitcoin Cash"
-msgstr "Escanegeu les vostres carteres per trobar Bitcoin Cash"
-
-#: src/js/services/onGoingProcess.js:30
-msgid "Scanning Wallet funds..."
-msgstr "S'estan escanejant els fons de la cartera..."
-
-#: www/views/includes/walletList.html:11
-msgid "Scanning funds..."
-msgstr "S'estan escanejant els fons..."
-
-#: www/views/includes/screenshotWarningModal.html:7
-msgid "Screenshots are not secure"
-msgstr "Les captures de pantalla no són segures"
-
-#: www/views/modals/search.html:6
-msgid "Search Transactions"
-msgstr "Cerca transaccions"
-
-#: www/views/tab-send.html:13
-msgid "Search or enter bitcoin address"
-msgstr "Cerca o introdueix l'adreça bitcoin"
-
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Porta-retalls"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Teniu el porta-retalls buit"
-
-#: www/views/modals/search.html:16
-msgid "Search transactions"
-msgstr "Cerca transaccions"
-
-#: www/views/preferencesAltCurrency.html:14
-msgid "Search your currency"
-msgstr "Cerqueu la vostra moneda"
-
-#: www/views/preferences.html:30
-msgid "Security"
-msgstr "Seguretat"
-
-#: www/views/modals/mercadolibre-card-details.html:64
-msgid "See invoice"
-msgstr "Mostra la factura"
-
-#: www/views/tab-import-file.html:7
-msgid "Select a backup file"
-msgstr "Seleccioneu un fitxer de còpia de seguretat"
-
-#: src/js/controllers/tab-receive.js:139
-msgid "Select a wallet"
-msgstr "Seleccioneu una cartera"
-
-#: www/views/modals/paypro.html:38
-msgid "Self-signed Certificate"
-msgstr "Certificat autofirmat"
-
-#: src/js/services/onGoingProcess.js:41
-msgid "Selling Bitcoin..."
-msgstr "S'estan venent 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 "Envia"
-
-#: www/views/feedback/send.html:3
-#: www/views/tab-settings.html:29
-msgid "Send Feedback"
-msgstr "Envia comentaris"
-
-#: www/views/addressbook.view.html:31
-msgid "Send Money"
-msgstr "Envia diners"
-
-#: www/views/allAddresses.html:19
-msgid "Send addresses by email"
-msgstr "Envia adreces per correu electrònic"
-
-#: www/views/includes/logOptions.html:17
-#: www/views/tab-export-file.html:82
-msgid "Send by email"
-msgstr "Envia per correu electrònic"
-
-#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
-msgid "Send from"
-msgstr "Envia des de"
-
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Enviat a"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Enganxa des del porta-retalls"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Enganxa l'adreça"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Transferència entre carteres"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Escaneja el codi QR"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Envia bitcoins més ràpid!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Deseu adreces utilitzades freqüentment i envieu-los bitcoins d'un sol toc"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Afegiu el primer contacte"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "La vostra cartera bitcoin és buida"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Per començar, compreu Bitcoin Cash (BCH) o Bitcoin Core (BTC), o compartiu la vostra adreça."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "Podeu rebre bitcoins des de qualsevol cartera o servei."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr "Per començar, heu de crear una cartera bitcoin i obtenir uns quants bitcoins."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Compra Bitcoins ara"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Mostra la meva adreça"
-
-#: www/views/includes/itemSelector.html:8
-msgid "Send max amount"
-msgstr "Envia import màxim"
-
-#: www/views/includes/incomingDataMenu.html:46
-msgid "Send payment to this address"
-msgstr "Envia el pagament a aquesta adreça"
-
-#: www/views/feedback/rateApp.html:17
-msgid "Send us feedback instead"
-msgstr "Envieu-nos un comentari"
-
-#: 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 "S'està enviant"
-
-#: src/js/services/onGoingProcess.js:39
-msgid "Sending 2FA code..."
-msgstr "S'està enviant el codi 2FA..."
-
-#: src/js/services/onGoingProcess.js:36
-msgid "Sending feedback..."
-msgstr "S'està enviant el comentari..."
-
-#: www/views/confirm.html:16
-msgid "Sending maximum amount"
-msgstr "S'està enviant la quantitat màxima"
-
-#: src/js/services/onGoingProcess.js:31
-msgid "Sending transaction"
-msgstr "S'està enviant la transacció"
-
-#: src/js/controllers/confirm.js:545
-msgid "Sending {{amountStr}} from your {{name}} wallet"
-msgstr "S'estan enviant {{amountStr}} des de la vostra cartera {{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 "Enviats"
-
-#: src/js/controllers/tx-details.js:129
-msgid "Sent Funds"
-msgstr "Fons enviats"
-
-#: src/js/services/bwcError.js:38
-msgid "Server response could not be verified"
-msgstr "La resposta del servidor no s'ha pogut verificar"
-
-#: src/js/controllers/buyAmazon.js:97
-#: src/js/controllers/buyMercadoLibre.js:97
-msgid "Service not available"
-msgstr "Servei no disponible"
-
-#: www/views/includes/homeIntegrations.html:3
-msgid "Services"
-msgstr "Serveis"
-
-#: www/views/preferencesLogs.html:3
-msgid "Session Log"
-msgstr "Registre de la sessió"
-
-#: www/views/preferencesAbout.html:35
-msgid "Session log"
-msgstr "Registre de la sessió"
-
-#: www/views/tab-export-file.html:10
-msgid "Set up a password"
-msgstr "Especifiqueu una contrasenya"
-
-#: src/js/controllers/preferencesFee.js:85
-msgid "Set your own fee in satoshis/byte"
-msgstr "Especifiqueu una comissió en satoshis/byte"
-
-#: www/views/tab-settings.html:3
-#: www/views/tabs.html:19
-msgid "Settings"
-msgstr "Paràmetres"
-
-#: www/views/feedback/complete.html:17
-#: www/views/feedback/complete.html:26
-msgid "Share the love by inviting your friends."
-msgstr "Compartiu la passió convidant els amics."
-
-#: www/views/copayers.html:20
-msgid "Share this invitation with your copayers"
-msgstr "Compartiu aquesta invitació amb els copagadors"
-
-#: src/js/controllers/feedback/complete.js:5
-#: www/views/tab-settings.html:36
-msgid "Share {{appName}}"
-msgstr "Comparteix {{appName}}"
-
-#: www/views/tab-import-hardware.html:24
-msgid "Shared Wallet"
-msgstr "Cartera compartida"
-
-#: www/views/preferencesExternal.html:34
-msgid "Show Recovery Phrase"
-msgstr "Mostra la frase de recuperació"
-
-#: www/views/tab-receive.html:34
-msgid "Show address"
-msgstr "Mostra l'adreça"
-
-#: www/views/join.html:48
-#: www/views/tab-create-personal.html:27
-#: www/views/tab-create-shared.html:56
-#: www/views/tab-export-file.html:24
-#: www/views/tab-import-file.html:29
-#: www/views/tab-import-hardware.html:30
-#: www/views/tab-import-phrase.html:35
-msgid "Show advanced options"
-msgstr "Mostra les opcions avançades"
-
-#: www/views/tab-send.html:37
-msgid "Show bitcoin address"
-msgstr "Mostra l'adreça bitcoin"
-
-#: www/views/tab-send.html:59
-msgid "Show more"
-msgstr "Mostra més"
-
-#: src/js/services/bwcError.js:104
-msgid "Signatures rejected by server"
-msgstr "Firmes rebutjades pel servidor"
-
-#: src/js/services/onGoingProcess.js:32
-msgid "Signing transaction"
-msgstr "S'està firmant la transacció"
-
-#: 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 "Com que ningú més controla els vostres diners, heu de guardar la frase de seguretat per si aquesta aplicació s'esborra."
-
-#: www/views/tab-create-personal.html:122
-#: www/views/tab-create-shared.html:151
-msgid "Single Address Wallet"
-msgstr "Cartera d'adreça única"
-
-#: www/views/onboarding/collectEmail.html:40
-#: www/views/onboarding/tour.html:11
-msgid "Skip"
-msgstr "Omet"
-
-#: src/js/controllers/confirm.js:371
-#: src/js/controllers/modals/txpDetails.js:47
-msgid "Slide to accept"
-msgstr "Feu lliscar per acceptar"
-
-#: www/views/buyAmazon.html:96
-msgid "Slide to buy"
-msgstr "Feu lliscar per comprar"
-
-#: src/js/controllers/confirm.js:365
-msgid "Slide to pay"
-msgstr "Feu lliscar per pagar"
-
-#: src/js/controllers/confirm.js:377
-#: src/js/controllers/modals/txpDetails.js:40
-msgid "Slide to send"
-msgstr "Feu lliscar per enviar"
-
-#: www/views/cashScan.html:56
-msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-msgstr "Algunes de les vostres carteres no són compatibles amb Bitcoin Cash. Podeu provar d'accedir als fons BCH amb"
-
-#: src/js/controllers/create.js:88
-#: src/js/controllers/join.js:71
-msgid "Specify Recovery Phrase..."
-msgstr "Especifiqueu la frase de recuperació..."
-
-#: src/js/services/bwcError.js:92
-msgid "Spend proposal is not accepted"
-msgstr "La proposta de despesa no s'ha acceptat"
-
-#: src/js/services/bwcError.js:95
-msgid "Spend proposal not found"
-msgstr "La proposta de despesa no s'ha trobat"
-
-#: src/js/services/bwcError.js:137
-msgid "Spending Password needed"
-msgstr "Contrasenya de despeses obligatòria"
-
-#: www/views/walletDetails.html:173
-msgid "Spending this balance will need significant Bitcoin network fees"
-msgstr "Gastar aquest saldo requerirà importants comissions de la xarxa Bitcoin"
-
-#: www/views/tab-send.html:28
-msgid "Start sending bitcoin"
-msgstr "Comença a enviar bitcoins"
-
-#: www/views/lockSetup.html:3
-msgid "Startup Lock"
-msgstr "Bloqueig inicial"
-
-#: www/views/mercadoLibreCards.html:21
-#: www/views/modals/mercadolibre-card-details.html:42
-msgid "Still pending"
-msgstr "Encara pendent"
-
-#: www/views/topup.html:101
-msgid "Success"
-msgstr "Correcte"
-
-#: src/js/services/feeService.js:14
-msgid "Super Economy"
-msgstr "Súper econòmic"
-
-#: www/views/preferencesCash.html:11
-msgid "Support Bitcoin Cash"
-msgstr "Compatible amb Bitcoin Cash"
-
-#: www/views/paperWallet.html:7
-msgid "Sweep"
-msgstr "Escombratge"
-
-#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Escombra la cartera de paper"
-
-#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
-msgstr "Escombra la cartera de paper"
-
-#: src/js/services/onGoingProcess.js:33
-msgid "Sweeping Wallet..."
-msgstr "S'està escombrant la cartera..."
-
-#: www/views/preferencesDeleteWallet.html:16
-msgid "THIS ACTION CANNOT BE REVERSED"
-msgstr "AQUESTA ACCIÓ NO ES POT REVERTIR"
-
-#: www/views/onboarding/welcome.html:5
-msgid "Take control of your money, get started with bitcoin."
-msgstr "Controleu els vostres diners, inicieu-vos al món dels bitcoins."
-
-#: www/views/walletDetails.html:132
-#: www/views/walletDetails.html:52
-msgid "Tap and hold to show"
-msgstr "Manteniu premut per mostrar"
-
-#: www/views/includes/walletInfo.html:3
-msgid "Tap to recreate"
-msgstr "Toqueu per reproduir"
-
-#: www/views/includes/walletInfo.html:4
-msgid "Tap to retry"
-msgstr "Toqueu per reintentar"
-
-#: www/views/termsOfUse.html:3
-msgid "Terms Of Use"
-msgstr "Condicions d'ús"
-
-#: 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 "Condicions d'ús"
-
-#: www/views/tab-create-personal.html:118
-#: www/views/tab-import-phrase.html:68
-msgid "Testnet"
-msgstr "Testnet"
-
-#: www/views/includes/incomingDataMenu.html:61
-msgid "Text"
-msgstr "Text"
-
-#: 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 "Gràcies!"
-
-#: src/js/controllers/feedback/send.js:72
-msgid "Thanks!"
-msgstr "Gràcies!"
-
-#: 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 "Ens en alegrem. Ens encantaria que ens donéssiu 5 estrelles. Com podem millorar la vostra experiència?"
-
-#: src/js/services/ledger.js:152
-msgid "The Ledger Chrome application is not installed"
-msgstr "L'aplicació Ledger de Chrome no està instal·lada"
-
-#: www/views/modals/wallet-balance.html:55
-msgid "The amount of bitcoin immediately spendable from this wallet."
-msgstr "Quantitat de bitcoins que es poden gastar immediatament des d'aquesta cartera."
-
-#: 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 quantitat de bitcoins emmagatzemada en aquesta cartera que s'assigna com a entrades a les vostres propostes de transacció pendents. L'import es determina en base a les sortides de transacció no gastades associades a aquesta cartera i pot superar les quantitats reals associades a les vostres propostes de transacció pendents."
-
-#: www/views/modals/wallet-balance.html:74
-msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation."
-msgstr "La quantitat de bitcoins emmagatzemada en aquesta cartera amb menys d'una confirmació blockchain."
-
-#: www/views/tab-import-phrase.html:5
-msgid "The derivation path"
-msgstr "El camí de derivació"
-
-#: www/views/onboarding/tour.html:37
-msgid "The exchange rate changes with the market."
-msgstr "El tipus de canvi canvia amb el mercat."
-
-#: 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 "Com més alta és la comissió, més incentius té un miner per incloure la vostra transacció en un bloc. Les comissions es determinen a cada moment en funció de la càrrega de la xarxa i de la política seleccionada."
-
-#: 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 "S'ha assolit el nombre màxim d'adreces consecutives sense utilitzar (20). Quan una de les vostres adreces sense utilitzar rebi un pagament, es generarà una adreça nova que es mostrarà a la pestanya Rep."
-
-#: src/js/controllers/onboarding/terms.js:21
-msgid "The official English Terms of Service are available on the BitPay website."
-msgstr "Les condicions de servei oficials estan disponibles en anglès al lloc web de BitPay."
-
-#: www/views/tab-import-phrase.html:4
-msgid "The password of the recovery phrase (if set)"
-msgstr "La contrasenya de la frase de recuperació (si s'ha establert)"
-
-#: src/js/services/walletService.js:1139
-msgid "The payment was created but could not be completed. Please try again from home screen"
-msgstr "El pagament s'ha creat però no s'ha pogut completar. Torneu-ho a provar des de la pantalla d'inici"
-
-#: www/views/modals/txp-details.html:26
-msgid "The payment was removed by creator"
-msgstr "El creador ha eliminat el pagament"
-
-#: www/views/join.html:91
-#: www/views/tab-create-personal.html:63
-#: www/views/tab-create-shared.html:92
-#: www/views/tab-import-phrase.html:43
-msgid "The recovery phrase could require a password to be imported"
-msgstr "La frase de recuperació pot requerir una contrasenya a l'hora d'importar-la"
-
-#: src/js/services/bwcError.js:56
-msgid "The request could not be understood by the server"
-msgstr "El servidor no ha entès la petició"
-
-#: 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 procés de restauració s'atura quan s'han generat 20 adreces seguides sense fons. Per generar més adreces de manera segura, efectueu un pagament a una de les adreces sense utilitzar que ja s'hagi generat."
-
-#: src/js/services/bwcError.js:98
-msgid "The spend proposal is not pending"
-msgstr "La proposta de despesa no està pendent"
-
-#: www/views/modals/wallet-balance.html:36
-msgid "The total amount of bitcoin stored in this wallet."
-msgstr "La quantitat total de bitcoins emmagatzemats en aquesta cartera."
-
-#: 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'historial de les transaccions i cada transacció nova entrant es guarden a la memòria cau de l'aplicació. Aquesta funció ho esborra tot i torna a sincronitzar des del servidor"
-
-#: www/views/tab-import-phrase.html:6
-msgid "The wallet service URL"
-msgstr "L'URL del servei de la cartera"
-
-#: src/js/controllers/tab-home.js:38
-msgid "There is a new version of {{appName}} available"
-msgstr "Hi ha una nova versió de {{appName}} disponible"
-
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:335
-msgid "There is an error in the form"
-msgstr "Hi ha un error al formulari"
-
-#: src/js/controllers/feedback/send.js:61
-#: src/js/controllers/feedback/send.js:65
-msgid "There's obviously something we're doing wrong."
-msgstr "És evident que hi ha alguna cosa que estem fent malament."
-
-#: src/js/controllers/feedback/rateCard.js:38
-msgid "This app is fantastic!"
-msgstr "Aquesta aplicació és fantàstica!"
-
-#: www/views/onboarding/tour.html:47
-msgid "This app stores your bitcoin with cutting-edge security."
-msgstr "Aquesta aplicació emmagatzema els vostres bitcoins amb una seguretat de tecnologia punta."
-
-#: src/js/controllers/confirm.js:523
-msgid "This bitcoin payment request has expired."
-msgstr "Aquesta sol·licitud de pagament bitcoin ha caducat."
-
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "El pagament venç:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "La sol·licitud de pagament ha vençut"
-
-#: www/views/join.html:133
-#: www/views/tab-create-personal.html:103
-#: www/views/tab-create-shared.html:132
-msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds."
-msgstr "Aquesta contrasenya no es pot recuperar. Si la contrasenya es perd, no es poden recuperar els fons de cap manera."
-
-#: www/views/backup.html:31
-msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed."
-msgstr "Aquesta frase de recuperació s'ha creat amb una contrasenya. Per recuperar aquesta cartera es necessita tant la frase de recuperació com la contrasenya."
-
-#: www/views/tx-details.html:91
-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 "Aquest import de transacció és massa petit comparat amb les comissions actuals de la xarxa Bitcoin. Gastar aquests fons suposarà una comissió de la xarxa Bitcoin comparable als fons en si."
-
-#: www/views/tx-details.html:87
-msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender"
-msgstr "Aquesta transacció pot trigar molta estona a confirmar-se o es pot anul·lar a causa de la baixa comissió establerta pel remitent"
-
-#: www/views/walletDetails.html:109
-#: www/views/walletDetails.html:29
-msgid "This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information."
-msgstr "Aquesta cartera no està registrada al Bitcore Wallet Service (BWS). Podeu tornar a crear-la a partir de la informació local."
-
-#: www/views/modals/txp-details.html:136
-#: 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:109
-#: www/views/modals/txp-details.html:53
-#: www/views/tx-details.html:41
-#: www/views/tx-details.html:53
-msgid "To"
-msgstr "Per 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 començar, compreu bitcoins o compartiu la vostra adreça. Podeu rebre bitcoins de qualsevol cartera o servei."
-
-#: src/js/services/bitpayAccountService.js:73
-msgid "To {{reason}} you must first add your BitPay account - {{email}}"
-msgstr "Per {{reason}} ja heu d'haver afegit el vostre compte BitPay - {{email}}"
-
-#: src/js/services/onGoingProcess.js:48
-msgid "Top up in progress..."
-msgstr "Recàrrega en curs..."
-
-#: src/js/controllers/topup.js:206
-msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-msgstr "Recàrrega de {{amountStr}} a la targeta de dèbit ({{cardLastNumber}})"
-
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "Inicia ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Canvieu de BTC a BCH en minuts."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Per iniciar el procés heu d'afegir fons a la cartera."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "El procés és ràpid i rebreu l'import canviat a la vostra cartera."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Aquest servei el presta un tercer, ShapeShift, que cobrarà una petita comissió pel servei. Veureu la comissió abans d'iniciar la transacció."
-
-#: www/views/buyAmazon.html:61
-#: www/views/buyMercadoLibre.html:60
-#: www/views/modals/wallet-balance.html:23
-#: www/views/topup.html:70
-msgid "Total"
-msgstr "Total"
-
-#: www/views/walletDetails.html:196
-msgid "Total Locked Balance"
-msgstr "Total del saldo bloquejat"
-
-#: www/views/tab-create-shared.html:35
-msgid "Total number of copayers"
-msgstr "Nombre total de copagadors"
-
-#: www/views/addresses.html:81
-msgid "Total wallet inputs"
-msgstr "Total d'entrades de la cartera"
-
-#: src/js/services/fingerprintService.js:63
-#: src/js/services/fingerprintService.js:68
-msgid "Touch ID Failed"
-msgstr "Touch ID ha fallat"
-
-#: src/js/controllers/tx-details.js:12
-msgid "Transaction"
-msgstr "Transacció"
-
-#: www/views/confirm.html:126
-msgid "Transaction Created"
-msgstr "Transacció creada"
-
-#: www/views/preferencesAdvanced.html:29
-#: www/views/preferencesHistory.html:3
-msgid "Transaction History"
-msgstr "Historial de transaccions"
-
-#: src/js/services/bwcError.js:83
-msgid "Transaction already broadcasted"
-msgstr "La transacció ja s'ha emès"
-
-#: src/js/controllers/buyAmazon.js:308
-#: src/js/controllers/buyMercadoLibre.js:301
-#: src/js/controllers/topup.js:281
-msgid "Transaction has not been created"
-msgstr "La transacció no s'ha creat"
-
-#: www/views/topup.html:104
-msgid "Transaction initiated"
-msgstr "Transacció iniciada"
-
-#: src/js/controllers/tx-details.js:119
-msgid "Transaction not available at this time"
-msgstr "La transacció no està disponible en aquest moment"
-
-#: src/js/controllers/activity.js:45
-#: src/js/controllers/tab-home.js:174
-msgid "Transaction not found"
-msgstr "No s'ha trobat la transacció"
-
-#: www/views/modals/chooseFeeLevel.html:55
-msgid "Transactions without fee are not supported."
-msgstr "No s'admeten transaccions sense comissió."
-
-#: src/js/controllers/paperWallet.js:109
-msgid "Transfer to"
-msgstr "Transfereix a"
-
-#: www/views/tab-send.html:67
-msgid "Transfer to Wallet"
-msgstr "Transfereix a la cartera"
-
-#: www/views/modals/pin.html:13
-msgid "Try again in {{expires}}"
-msgstr "Torneu-ho a provar d'aquí {{expires}}"
-
-#: www/views/bitpayCardIntro.html:18
-msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted."
-msgstr "Converteix bitcoins a dòlars, paga a qualsevol lloc on acceptin Visa® ."
-
-#: www/views/tab-import-phrase.html:17
-msgid "Type the Recovery Phrase (usually 12 words)"
-msgstr "Escriviu la frase de recuperació (normalment 12 paraules)"
-
-#: src/js/controllers/backup.js:75
-msgid "Uh oh..."
-msgstr "Vaja..."
-
-#: www/views/tx-details.html:100
-msgid "Unconfirmed"
-msgstr "Sense confirmar"
-
-#: www/views/walletDetails.html:190
-msgid "Unsent transactions"
-msgstr "Transaccions no enviades"
-
-#: www/views/addresses.html:39
-msgid "Unused Addresses"
-msgstr "Adreces sense utilitzar"
-
-#: www/views/addresses.html:50
-msgid "Unused Addresses Limit"
-msgstr "Límit d'adreces sense utilitzar"
-
-#: src/js/controllers/tab-home.js:146
-msgid "Update Available"
-msgstr "Actualització disponible"
-
-#: www/views/proposals.html:14
-msgid "Updating pending proposals. Please stand by"
-msgstr "S'estan actualitzant les propostes pendents. Espereu"
-
-#: www/views/walletDetails.html:217
-msgid "Updating transaction history. Please stand by."
-msgstr "S'està actualitzant l'historial de transaccions. Espereu."
-
-#: www/views/activity.html:14
-msgid "Updating... Please stand by"
-msgstr "S'està actualitzant... Espereu"
-
-#: src/js/services/feeService.js:10
-msgid "Urgent"
-msgstr "Urgent"
-
-#: www/views/advancedSettings.html:12
-msgid "Use Unconfirmed Funds"
-msgstr "Utilitza els fons sense confirmar"
-
-#: src/js/services/onGoingProcess.js:34
-msgid "Validating recovery phrase..."
-msgstr "S'està validant la frase de recuperació..."
-
-#: www/views/modals/fingerprintCheck.html:4
-msgid "Verify your identity"
-msgstr "Verifiqueu la vostra identitat"
-
-#: www/views/preferencesAbout.html:14
-#: www/views/preferencesExternal.html:25
-msgid "Version"
-msgstr "Versió"
-
-#: www/views/tab-export-file.html:69
-msgid "View"
-msgstr "Mostra"
-
-#: www/views/addresses.html:34
-msgid "View All Addresses"
-msgstr "Mostra totes les adreces"
-
-#: src/js/controllers/onboarding/terms.js:20
-msgid "View Terms of Service"
-msgstr "Mostra les condicions de servei"
-
-#: src/js/controllers/bitpayCard.js:122
-#: src/js/controllers/tx-details.js:191
-msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Mostra la transacció a Explorer.Bitcoin.com"
-
-#: src/js/controllers/tab-home.js:148
-msgid "View Update"
-msgstr "Mostra l'actualització"
-
-#: www/views/tx-details.html:147
-msgid "View on blockchain"
-msgstr "Mostra a la blockchain"
-
-#: www/views/mercadoLibre.html:26
-msgid "Visit mercadolivre.com.br →"
-msgstr "Visiteu mercadolivre.com.br →"
-
-#: www/views/walletDetails.html:182
-msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet."
-msgstr "AVÍS: La derivació de clau no funciona en aquest dispositiu/cartera. No es poden realitzar accions en aquesta cartera."
-
-#: 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 "AVÍS: No incloure la clau privada permet comprovar el saldo de la cartera, l'historial de transaccions i crear propostes de despeses des del fitxer exportat. Ara bé, no permet aprovar (firmar) propostes; per tant els fons no seran accessibles des del fitxer exportat ."
-
-#: 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 "AVÍS: La clau privada d'aquesta cartera no està disponible. L'exportació permet comprovar el saldo de la cartera, l'historial de transaccions i crear propostes de despeses des del fitxer exportat. Ara bé, no permet aprovar (firmar) propostes; per tant els fons no seran accessibles des del fitxer exportat ."
-
-#: www/views/modals/paypro.html:42
-msgid "WARNING: UNTRUSTED CERTIFICATE"
-msgstr "AVÍS: EL CERTIFICAT NO ÉS DE CONFIANÇA"
-
-#: src/js/services/onGoingProcess.js:15
-msgid "Waiting for Ledger..."
-msgstr "Esperant el Ledger..."
-
-#: src/js/services/onGoingProcess.js:16
-msgid "Waiting for Trezor..."
-msgstr "Esperant el Trezor..."
-
-#: www/views/copayers.html:48
-msgid "Waiting for copayers"
-msgstr "Esperant els copagadors"
-
-#: www/views/copayers.html:53
-msgid "Waiting..."
-msgstr "Esperant..."
-
-#: www/views/addresses.html:3
-#: www/views/preferencesAdvanced.html:17
-msgid "Wallet Addresses"
-msgstr "Adreces de la cartera"
-
-#: www/views/preferencesColor.html:4
-msgid "Wallet Color"
-msgstr "Color de la cartera"
-
-#: www/views/preferencesInformation.html:29
-msgid "Wallet Configuration (m-n)"
-msgstr "Configuració de la cartera (m-n)"
-
-#: www/views/onboarding/collectEmail.html:5
-msgid "Wallet Created"
-msgstr "Cartera creada"
-
-#: www/views/preferencesInformation.html:23
-msgid "Wallet Id"
-msgstr "Id de la cartera"
-
-#: www/views/preferencesAdvanced.html:13
-#: www/views/preferencesInformation.html:3
-msgid "Wallet Information"
-msgstr "Informació de la cartera"
-
-#: www/views/addresses.html:76
-msgid "Wallet Inputs"
-msgstr "Entrades de la cartera"
-
-#: www/views/join.html:26
-msgid "Wallet Invitation"
-msgstr "Invitació de la cartera"
-
-#: www/views/join.html:60
-#: www/views/tab-create-personal.html:38
-#: www/views/tab-create-shared.html:67
-msgid "Wallet Key"
-msgstr "Clau de la cartera"
-
-#: www/views/preferencesAlias.html:4
-msgid "Wallet Name"
-msgstr "Nom de la cartera"
-
-#: www/views/preferencesInformation.html:11
-msgid "Wallet Name (at creation)"
-msgstr "Nom de la cartera (en crear-la)"
-
-#: www/views/preferencesInformation.html:35
-msgid "Wallet Network"
-msgstr "Xarxa de la cartera"
-
-#: www/views/join.html:77
-#: www/views/tab-create-personal.html:50
-#: www/views/tab-create-shared.html:79
-msgid "Wallet Recovery Phrase"
-msgstr "Frase de recuperació de la cartera"
-
-#: src/js/services/bwcError.js:26
-msgid "Wallet Recovery Phrase is invalid"
-msgstr "La frase de recuperació de la cartera no és vàlida"
-
-#: www/views/preferencesAdvanced.html:25
-#: www/views/tab-import-phrase.html:73
-msgid "Wallet Service URL"
-msgstr "URL del servei de la cartera"
-
-#: www/views/preferences.html:4
-msgid "Wallet Settings"
-msgstr "Paràmetres de la cartera"
-
-#: www/views/tab-import-hardware.html:11
-#: www/views/tab-import-phrase.html:61
-msgid "Wallet Type"
-msgstr "Tipus de cartera"
-
-#: src/js/services/bwcError.js:59
-msgid "Wallet already exists"
-msgstr "La cartera ja existeix"
-
-#: src/js/services/profileService.js:516
-msgid "Wallet already in {{appName}}"
-msgstr "La cartera ja existeix a {{appName}}"
-
-#: www/views/includes/walletActivity.html:6
-msgid "Wallet created"
-msgstr "Cartera creada"
-
-#: www/views/copayers.html:58
-msgid "Wallet incomplete and broken"
-msgstr "Cartera incompleta i trencada"
-
-#: src/js/services/bwcError.js:65
-msgid "Wallet is full"
-msgstr "La cartera està plena"
-
-#: src/js/services/bwcError.js:125
-msgid "Wallet is locked"
-msgstr "La cartera està bloquejada"
-
-#: src/js/services/bwcError.js:128
-msgid "Wallet is not complete"
-msgstr "La cartera no està completa"
-
-#: www/views/tab-create-personal.html:12
-#: www/views/tab-create-shared.html:12
-msgid "Wallet name"
-msgstr "Nom de la cartera"
-
-#: src/js/services/bwcError.js:131
-msgid "Wallet needs backup"
-msgstr "La cartera requereix una còpia de seguretat"
-
-#: www/views/tab-receive.html:59
-#: www/views/walletDetails.html:169
-msgid "Wallet not backed up"
-msgstr "Cartera sense còpia de seguretat"
-
-#: src/js/services/bwcError.js:68
-msgid "Wallet not found"
-msgstr "No s'ha trobat la cartera"
-
-#: src/js/controllers/cashScan.js:81
-#: src/js/controllers/tab-home.js:230
-msgid "Wallet not registered"
-msgstr "No s'ha registrat la cartera"
-
-#: 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 cartera no s'ha registrat a Wallet Service. Torneu-la a crear des de \"Crea cartera\" amb \"Opcions avançades\" per definir la vostra frase de recuperació"
-
-#: www/views/backup.html:12
-msgid "Wallet recovery phrase not available"
-msgstr "La frase de recuperació de la cartera no està disponible"
-
-#: src/js/services/bwcError.js:50
-msgid "Wallet service not found"
-msgstr "No s'ha trobat Wallet Service"
-
-#: www/views/tab-home.html:69
-msgid "Wallets"
-msgstr "Carteres"
-
-#: src/js/controllers/addressbookView.js:36
-#: src/js/controllers/modals/txpDetails.js:153
-#: src/js/controllers/modals/txpDetails.js:170
-#: src/js/controllers/preferencesDelete.js:24
-#: src/js/controllers/preferencesExternal.js:14
-#: www/views/preferencesDeleteWallet.html:11
-msgid "Warning!"
-msgstr "Avís!"
-
-#: www/views/modals/txp-details.html:47
-msgid "Warning: this transaction has unconfirmed inputs"
-msgstr "Avís: Aquesta transacció té entrades no confirmades"
-
-#: src/js/controllers/onboarding/backupRequest.js:17
-msgid "Watch out!"
-msgstr "Compte!"
-
-#: src/js/controllers/feedback/send.js:69
-msgid "We'd love to do better."
-msgstr "Ens agradaria fer-ho millor."
-
-#: www/views/backup.html:35
-msgid "We'll confirm on the next screen."
-msgstr "Ho confirmarem a la pantalla següent."
-
-#: src/js/controllers/feedback/send.js:77
-msgid "We're always looking for ways to improve {{appName}}."
-msgstr "Sempre intentem millorar {{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 "Sempre intentem millorar {{appName}}. Com podríem millorar la vostra experiència?"
-
-#: www/views/includes/incomingDataMenu.html:6
-msgid "Website"
-msgstr "Lloc 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 "Sempre busquem gent que contribueixi a les traduccions. Podeu fer correccions o ajudar a fer que aquesta aplicació estigui disponible en la vostra llengua unint-vos a la nostra comunitat de Crowdin."
-
-#: www/views/preferencesAlias.html:11
-msgid "What do you call this wallet?"
-msgstr "Quin nom voleu posar a aquesta cartera?"
-
-#: 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 "Quan es va crear aquesta cartera, va rebre el nom: “{{walletName}}”. Podeu canviar el nom que es mostra en aquest dispositiu a sota."
-
-#: www/views/onboarding/collectEmail.html:10
-msgid "Where would you like to receive email notifications about payments?"
-msgstr "A on voleu rebre les notificacions per e-mail sobre els pagaments?"
-
-#: www/views/addresses.html:19
-msgid "Why?"
-msgstr "Per què?"
-
-#: www/views/feedback/rateApp.html:10
-msgid "Would you be willing to rate {{appName}} in the app store?"
-msgstr "Voldríeu valorar {{appName}} a la botiga d'aplicacions?"
-
-#: www/views/onboarding/notifications.html:4
-msgid "Would you like to receive push notifications about payments?"
-msgstr "Voleu rebre notificacions push sobre els pagaments?"
-
-#: src/js/controllers/import.js:288
-msgid "Wrong number of recovery words:"
-msgstr "Nombre de paraules de recuperació incorrecte:"
-
-#: src/js/services/bwcError.js:140
-msgid "Wrong spending password"
-msgstr "Contrasenya de pagaments incorrecta"
-
-#: www/views/modals/confirmation.html:7
-msgid "Yes"
-msgstr "Sí"
-
-#: src/js/controllers/onboarding/backupRequest.js:25
-msgid "Yes, skip"
-msgstr "Sí, omet"
-
-#: src/js/controllers/onboarding/backupRequest.js:24
-msgid "You can create a backup later from your wallet settings."
-msgstr "Podeu crear una còpia de seguretat més tard des dels paràmetres de la cartera."
-
-#: 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 "Podeu fer contribucions registrant-vos al nostre web de la comunitat de traductors de Crowdin. Us hi esperem!"
-
-#: www/views/tab-scan.html:16
-msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more."
-msgstr "Podeu escanejar adreces bitcoin, sol·licituds de pagament, carteres de paper i més coses."
-
-#: 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 "Podeu veure les últimes novetats i contribuir a aquesta aplicació de codi obert visitant el nostre projecte a GitHub."
-
-#: www/views/onboarding/tour.html:19
-msgid "You can spend bitcoin at millions of websites and stores worldwide."
-msgstr "Podeu pagar amb bitcoins en milions de llocs web i botigues d'arreu del món."
-
-#: www/views/backup.html:15
-msgid "You can still export it from Advanced > Export."
-msgstr "Encara es pot exportar des d'Avançades > Exporta."
-
-#: www/views/onboarding/tour.html:32
-msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds."
-msgstr "Els podeu canviar per altres monedes com ara dòlars americans, euros o lliures esterlines."
-
-#: www/views/onboarding/tour.html:46
-msgid "You control your bitcoin."
-msgstr "Controleu els vostres bitcoins."
-
-#: www/views/modals/chooseFeeLevel.html:64
-msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte."
-msgstr "No hauríeu d'establir una comissió 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 "Haureu de tornar a iniciar la sessió per completar la BitPay Card."
-
-#: www/views/preferencesNotifications.html:34
-msgid "You'll receive email notifications about payments sent and received from your wallets."
-msgstr "Rebreu notificacions per e-mail sobre pagaments enviats i rebuts de les vostres carteres."
-
-#: 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 BitPay Card ja està a punt. Afegiu fons a la targeta per començar a utilitzar-la en botigues i caixers automàtics de tot el món."
-
-#: www/views/mercadoLibre.html:57
-#: www/views/mercadoLibreCards.html:6
-msgid "Your Gift Cards"
-msgstr "Les vostres targetes regal"
-
-#: www/views/includes/confirmBackupPopup.html:6
-msgid "Your bitcoin wallet is backed up!"
-msgstr "La vostra cartera bitcoin ja té una còpia de seguretat!"
-
-#: www/views/tab-home.html:36
-msgid "Your bitcoin wallet is ready!"
-msgstr "La vostra cartera bitcoin ja està a punt!"
-
-#: www/views/modals/chooseFeeLevel.html:61
-msgid "Your fee is lower than recommended."
-msgstr "La vostra comissió és inferior a la recomanada."
-
-#: www/views/feedback/send.html:42
-msgid "Your ideas, feedback, or comments"
-msgstr "Les vostres idees, opinions o comentaris"
-
-#: www/views/tab-create-shared.html:22
-msgid "Your name"
-msgstr "El vostre nom"
-
-#: www/views/join.html:16
-msgid "Your nickname"
-msgstr "El vostre sobrenom"
-
-#: www/views/tab-export-file.html:11
-#: www/views/tab-import-file.html:20
-msgid "Your password"
-msgstr "La vostra contrasenya"
-
-#: www/views/buyAmazon.html:102
-msgid "Your purchase could not be completed"
-msgstr "La compra no s'ha pogut completar"
-
-#: www/views/buyAmazon.html:105
-msgid "Your purchase was added to the list of pending"
-msgstr "La compra s'ha afegit a la llista de pendents"
-
-#: www/views/onboarding/backupRequest.html:10
-msgid "Your wallet is never saved to cloud storage or standard device backups."
-msgstr "La vostra cartera no es desa mai en un emmagatzematge al núvol ni en dispositius de còpies de seguretat estàndard."
-
-#: src/js/services/walletService.js:1030
-msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
-msgstr "La clau de la cartera s'encriptarà. La contrasenya de despeses no es pot recuperar. Sobretot, apunteu-vos-la."
-
-#: www/views/includes/walletList.html:13
-#: www/views/includes/walletSelector.html:21
-#: www/views/paperWallet.html:33
-#: www/views/tab-receive.html:72
-#: www/views/walletDetails.html:131
-#: www/views/walletDetails.html:51
-msgid "[Balance Hidden]"
-msgstr "[Saldo ocult]"
-
-#: www/views/walletDetails.html:141
-#: www/views/walletDetails.html:61
-msgid "[Scanning Funds]"
-msgstr "[S'estan escanejant els fons]"
-
-#: src/js/controllers/bitpayCardIntro.js:11
-msgid "add your BitPay Visa card(s)"
-msgstr "afegiu les vostres targetes BitPay Visa"
-
-#: www/views/includes/available-balance.html:8
-msgid "locked by pending payments"
-msgstr "bloquejat per pagaments pendents"
-
-#: src/js/services/profileService.js:404
-msgid "me"
-msgstr "jo"
-
-#: www/views/addressbook.add.html:32
-msgid "name@example.com"
-msgstr "nom@exemple.com"
-
-#: www/views/preferencesHistory.html:15
-msgid "preparing..."
-msgstr "s'està preparant..."
-
-#: www/views/cashScan.html:57
-msgid "recovery tool."
-msgstr "l'eina de recuperació."
-
-#: src/js/controllers/buyAmazon.js:239
-msgid "{{amountStr}} for Amazon.com Gift Card"
-msgstr "{{amountStr}} per a la targeta regal Amazon.com"
-
-#: src/js/controllers/buyMercadoLibre.js:237
-msgid "{{amountStr}} for Mercado Livre Brazil Gift Card"
-msgstr "{{amountStr}} per a la targeta regal Mercado Livre Brazil"
-
-#: 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}} depèn de Bitcore Wallet Service (BWS) per a la informació blockchain, la gestió de xarxes i la sincronització de Copayer. La configuració per defecte apunta a https://bws.bitpay.com (instància BWS pública de BitPay)."
-
-#: src/js/controllers/confirm.js:408
-msgid "{{fee}} will be deducted for bitcoin networking fees."
-msgstr "{{fee}} es descomptarà per la comissió de la xarxa bitcoin."
-
-#: www/views/confirm.html:85
-msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-msgstr "{{tx.txp[wallet.id].feeRatePerStr}} de l'import de l'enviament"
-
-#: www/views/walletDetails.html:218
-msgid "{{updatingTxHistoryProgress}} transactions downloaded"
-msgstr "{{updatingTxHistoryProgress}} transaccions descarregades"
-
-#: www/views/cashScan.html:33
-#: www/views/copayers.html:46
-#: www/views/includes/walletInfo.html:18
-msgid "{{wallet.m}}-of-{{wallet.n}}"
-msgstr "{{wallet.m}}-de-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Comunitat"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Reddit de Bitcoin Cash"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Twitter de Bitcoin.com"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Explora Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Jocs de Bitcoin Cash"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Comparteix l'aplicació de la cartera"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "Notícies"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Xarxa minera"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Eines"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Gràfiques de preus del bitcoin"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Bitcoin Cash gratis"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "Les vostres carteres bitcoin ja estan a punt!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "L'adreça no conté informació sobre la moneda. Comproveu que envieu la moneda correcta."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Reviseu la transacció"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Esteu enviant"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Esteu canviant"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "Per a:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Afegiu nota personal"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Suggerida pel comerciant:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Introduïu el text aquí"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Nota personal:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Menys d'1 cèntim"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "Aquesta factura ja no accepta pagaments"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Envia la quantitat màxima"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Error desconegut."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "No hi ha cap cartera de Bitcoin Cash per transferir els fons trobats."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "No s'ha trobat cap Bitcoin Cash."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "S'ha trobat Bitcoin Core:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "No hi ha cap cartera de Bitcoin Core per transferir els fons trobats."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "No s'ha trobat cap Bitcoin Core."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "L'escaneig ha fallat"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "No s'han reconegut les dades."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "No compatible"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet no és compatible."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Obre a l'explorador web"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Adreça no vàlida"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "No s'ha definit l'import"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "L'import és inferior al mínim"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "L'import supera el límit"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Resposta no vàlida de Shapeshift"
-
diff --git a/i18n/po/cs/template-cs.po b/i18n/po/cs/template-cs.po
deleted file mode 100644
index 970b81daf..000000000
--- a/i18n/po/cs/template-cs.po
+++ /dev/null
@@ -1,3943 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
-"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
-"X-Crowdin-Language: cs\n"
-"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
-"Language-Team: Czech\n"
-"Language: cs\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
-
-#: www/views/modals/paypro.html:34
-msgid "(Trusted)"
-msgstr "(Důvěryhodné)"
-
-#: www/views/includes/txp.html:23
-#: www/views/includes/walletHistory.html:64
-msgid "(possible double spend)"
-msgstr "(možnost dvojité platby)"
-
-#: www/views/modals/txp-details.html:159
-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 "* Návrh platby může být smazán 1) pokud jste jej vytvořili a nebyl podepsán nikým jiným, nebo 2) uběhlo 24 od doby, kdy byl návrh vytvořen."
-
-#: www/views/tx-details.html:82
-msgid "- {{btx.feeRateStr}} of the transaction"
-msgstr "- {{btx.feeRateStr}} transakce"
-
-#: www/views/modals/txp-details.html:102
-msgid "- {{tx.feeRateStr}} of the transaction"
-msgstr "- {{tx.feeRateStr}} transakce"
-
-#: 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-ti hvězdičkové hodnocení nám pomáhá dostat {{appName}} do rukou více uživatelů, a více uživatelů znamená více zdrojů pro zlepšování naší aplikace!"
-
-#: www/views/mercadoLibre.html:18
-#: www/views/mercadoLibre.html:40
-msgid "Only redeemable on Mercado Livre (Brazil)"
-msgstr "Může být uplatněno pouze na Mercado Livre (Brazílie)"
-
-#: 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 "Člen týmu se bude bezodkladně zabývat Vaší zpětnou vazbou."
-
-#: src/js/controllers/confirm.js:401
-msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded."
-msgstr "Celkem {{amountAboveMaxSizeStr}} bylo vyloučeno. Byla překročena maximální velikost povolená pro transakci."
-
-#: src/js/controllers/confirm.js:395
-msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided."
-msgstr "Celkem {{amountBelowFeeStr}} bylo vyloučeno. Tyto peníze pocházejí z UTXO menších než je poplatek za použití sítě."
-
-#: src/js/controllers/preferencesAbout.js:6
-#: www/views/tab-settings.html:156
-msgid "About"
-msgstr "O aplikaci"
-
-#: src/js/controllers/modals/txpDetails.js:62
-#: src/js/controllers/tx-details.js:79
-msgid "Accepted"
-msgstr "Přijato"
-
-#: www/views/preferencesInformation.html:72
-msgid "Account"
-msgstr "Účet"
-
-#: www/views/join.html:72
-#: www/views/tab-create-personal.html:45
-#: www/views/tab-create-shared.html:74
-#: www/views/tab-import-hardware.html:19
-msgid "Account Number"
-msgstr "Číslo účtu"
-
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Okamžité transakce s nízkými poplatky"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Nedostatek prostředků"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Změnit měnu"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Dostupné prostředky"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Použít všechny dostupné prostředky"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Další"
-
-#: www/views/preferencesBitpayServices.html:23
-msgid "Accounts"
-msgstr "Účty"
-
-#: www/views/bitpayCard.html:56
-msgid "Activity"
-msgstr "Aktivita"
-
-#: src/js/services/bitpayAccountService.js:83
-msgid "Add Account"
-msgstr "Přidat účet"
-
-#: src/js/services/bitpayAccountService.js:69
-msgid "Add BitPay Account?"
-msgstr "Přidat účet BitPay?"
-
-#: www/views/addressbook.add.html:4
-#: www/views/addressbook.html:22
-msgid "Add Contact"
-msgstr "Přidat kontakt"
-
-#: www/views/bitpayCard.html:28
-msgid "Add Funds"
-msgstr "Přidat peníze"
-
-#: www/views/confirm.html:94
-msgid "Add Memo"
-msgstr "Přidat poznámku"
-
-#: www/views/join.html:87
-#: www/views/tab-create-personal.html:59
-#: www/views/tab-create-shared.html:88
-msgid "Add a password"
-msgstr "Přidat heslo"
-
-#: www/views/includes/accountSelector.html:27
-msgid "Add account"
-msgstr "Přidat účet"
-
-#: www/views/join.html:90
-#: www/views/tab-create-personal.html:62
-#: www/views/tab-create-shared.html:91
-msgid "Add an optional password to secure the recovery phrase"
-msgstr "Přidat volitelné heslo zabezpečující frázi pro obnovení peněženky"
-
-#: www/views/includes/incomingDataMenu.html:41
-msgid "Add as a contact"
-msgstr "Přidat jako kontakt"
-
-#: src/js/controllers/confirm.js:424
-msgid "Add description"
-msgstr "Přidat popis"
-
-#: www/views/topup.html:6
-msgid "Add funds"
-msgstr "Přidat peníze"
-
-#: src/js/services/bitpayAccountService.js:78
-msgid "Add this BitPay account ({{email}})?"
-msgstr "Přidat tento účet BitPay ({{email}})?"
-
-#: www/views/add.html:3
-msgid "Add wallet"
-msgstr "Přidat peněženku"
-
-#: www/views/addressbook.view.html:26
-#: www/views/customAmount.html:28
-#: www/views/modals/paypro.html:24
-msgid "Address"
-msgstr "Adresa"
-
-#: www/views/addressbook.html:6
-#: www/views/tab-settings.html:13
-msgid "Address Book"
-msgstr "Adresář"
-
-#: www/views/preferencesInformation.html:41
-msgid "Address Type"
-msgstr "Typ adresy"
-
-#: www/views/addresses.html:64
-msgid "Addresses With Balance"
-msgstr "Adresy se zůstatkem"
-
-#: www/views/tab-settings.html:149
-msgid "Advanced"
-msgstr "Pokročilé"
-
-#: www/views/advancedSettings.html:3
-msgid "Advanced Settings"
-msgstr "Pokročilé nastavení"
-
-#: www/views/bitpayCard.html:62
-msgid "All"
-msgstr "Všechny"
-
-#: www/views/allAddresses.html:3
-msgid "All Addresses"
-msgstr "Všechny adresy"
-
-#: www/views/modals/wallet-balance.html:18
-msgid "All of your bitcoin wallet balance may not be available for immediate spending."
-msgstr "Ne všechny peníze ve Vaší Bitcoin peněžence mohou být v tomto okamžiku utraceny."
-
-#: www/views/tab-receive.html:25
-msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created."
-msgstr "Před vytvořením Bitcoin adres musí být všechna podepisující zařízení přidána do této multisig peněženky."
-
-#: www/views/tab-scan.html:21
-msgid "Allow Camera Access"
-msgstr "Povolit přístup k fotoaparátu"
-
-#: www/views/onboarding/notifications.html:7
-msgid "Allow notifications"
-msgstr "Povolit upozornění"
-
-#: www/views/onboarding/disclaimer.html:14
-msgid "Almost done! Let's review."
-msgstr "Téměř hotovo! Podívejme se."
-
-#: www/views/preferencesAltCurrency.html:4
-#: www/views/tab-settings.html:79
-msgid "Alternative Currency"
-msgstr "Alternativní měna"
-
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Zobrazení cen"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Nucený oběh"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Kryptoměna"
-
-#: src/js/controllers/buyAmazon.js:98
-msgid "Amazon.com is not available at this moment. Please try back later."
-msgstr "Amazon.com není v této chvíli k dispozici. Zkuste to prosím později."
-
-#: www/views/amount.html:44
-#: www/views/customAmount.html:34
-#: www/views/includes/output.html:7
-msgid "Amount"
-msgstr "Částka"
-
-#: src/js/services/bwcError.js:110
-msgid "Amount below minimum allowed"
-msgstr "Nižší než minimální povolená částka"
-
-#: src/js/controllers/confirm.js:216
-msgid "Amount too big"
-msgstr "Příliš velká částka"
-
-#: www/views/includes/walletHistory.html:31
-msgid "Amount too low to spend"
-msgstr "Příliš nízká částka k zaplacení"
-
-#: 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 "Aktualizace této aplikace je k dispozici. Pro Vaši bezpečnost proveďte aktualizaci na nejnovější verzi."
-
-#: www/views/backupWarning.html:14
-msgid "Anyone with your backup phrase can access or spend your bitcoin."
-msgstr "Kdokoliv, kdo disponuje Vaší frází k obnovení peněženky, má přístup k Vašim penězům."
-
-#: www/views/addresses.html:94
-msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-msgstr "Přibližný poplatek za použití Bitcoin sítě k převedení zůstatku peněženky (se standartní prioritou)"
-
-#: www/views/backupWarning.html:10
-msgid "Are you being watched?"
-msgstr "Sleduje Vás někdo?"
-
-#: src/js/controllers/preferencesExternal.js:15
-msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin."
-msgstr "Sleduje Vás někdo? Kdokoliv, kdo disponuje Vaší frází k obnovení peněženky, má přístup k Vašim penězům."
-
-#: src/js/controllers/copayers.js:56
-msgid "Are you sure you want to cancel and delete this wallet?"
-msgstr "Opravdu chcete zrušit a smazat tuto peněženku?"
-
-#: src/js/controllers/addressbookView.js:37
-msgid "Are you sure you want to delete this contact?"
-msgstr "Opravdu chcete vymazat tento kontakt?"
-
-#: src/js/controllers/preferencesDelete.js:25
-msgid "Are you sure you want to delete this wallet?"
-msgstr "Opravdu chcete vymazat tuto peněženku?"
-
-#: src/js/controllers/modals/txpDetails.js:154
-msgid "Are you sure you want to reject this transaction?"
-msgstr "Opravdu chcete odmítnout tuto transakci?"
-
-#: src/js/controllers/modals/txpDetails.js:171
-msgid "Are you sure you want to remove this transaction?"
-msgstr "Opravdu chcete odstranit tuto transakci?"
-
-#: src/js/controllers/onboarding/backupRequest.js:23
-msgid "Are you sure you want to skip it?"
-msgstr "Opravdu chcete přeskočit tento krok?"
-
-#: www/views/modals/bitpay-card-confirmation.html:4
-msgid "Are you sure you would like to log out of your BitPay Card account?"
-msgstr "Opravdu se chcete odhlásit ze svého účtu karty 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 "Opravdu chcete odebrat Váš účet karty BitPay ({{lastFourDigits}}) z tohoto zařízení?"
-
-#: www/views/includes/walletInfo.html:10
-msgid "Auditable"
-msgstr "Kontrolovatelné"
-
-#: www/views/modals/wallet-balance.html:42
-msgid "Available"
-msgstr "K dispozici"
-
-#: www/views/includes/available-balance.html:3
-msgid "Available Balance"
-msgstr "Dostupný zůstatek"
-
-#: www/views/modals/chooseFeeLevel.html:24
-#: www/views/preferencesFee.html:15
-msgid "Average confirmation time"
-msgstr "Průměrný čas potvrzení"
-
-#: www/views/join.html:143
-#: www/views/tab-create-personal.html:113
-#: www/views/tab-create-shared.html:142
-#: www/views/tab-import-phrase.html:51
-msgid "BIP32 path for address derivation"
-msgstr "Cesta pro odvození adresy podle BIP32"
-
-#: www/views/cashScan.html:25
-msgid "BTC wallets"
-msgstr "BTC peněženky"
-
-#: www/views/preferences.html:34
-msgid "Backup"
-msgstr "Zálohování"
-
-#: www/views/includes/backupNeededPopup.html:7
-msgid "Backup Needed"
-msgstr "Potřeba zálohovat"
-
-#: src/js/controllers/lockSetup.js:87
-msgid "Backup all livenet wallets before using this function"
-msgstr "Zálohujte všechny livenet peněženky před použitím této funkce"
-
-#: src/js/controllers/cashScan.js:64
-#: www/views/includes/walletListSettings.html:12
-#: www/views/preferences.html:36
-msgid "Backup needed"
-msgstr "Potřeba zálohovat"
-
-#: www/views/includes/backupNeededPopup.html:9
-msgid "Backup now"
-msgstr "Zálohujte nyní"
-
-#: www/views/onboarding/backupRequest.html:11
-#: www/views/tab-export-file.html:89
-msgid "Backup wallet"
-msgstr "Zálohovat peněženku"
-
-#: src/js/controllers/lockSetup.js:84
-msgid "Backup your wallet before using this function"
-msgstr "Zálohujte Vaši peněženku před použitím této funkce"
-
-#: src/js/services/profileService.js:446
-msgid "Bad wallet invitation"
-msgstr "Špatná pozvánka"
-
-#: www/views/preferencesInformation.html:102
-msgid "Balance By Address"
-msgstr "Zůstatek k adresám"
-
-#: 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 "Dbejte na bezpečné uschování fráze pro obnovení peněženky. Smaže-li se tato aplikace, Vaše peníze nemohou být bez fráze zpřístupněny."
-
-#: www/views/preferencesBitpayServices.html:9
-msgid "BitPay Visa® Cards"
-msgstr "BitPay Visa karty®"
-
-#: www/views/addressbook.add.html:38
-#: www/views/includes/incomingDataMenu.html:29
-msgid "Bitcoin Address"
-msgstr "Bitcoin adresa"
-
-#: www/views/cashScan.html:4
-msgid "Bitcoin Cash (BCH) Balances"
-msgstr "Bitcoin Cash (BCH) zůstatky"
-
-#: www/views/preferencesCash.html:3
-#: www/views/tab-settings.html:47
-msgid "Bitcoin Cash Support"
-msgstr "Podpora Bitcoin Cash"
-
-#: www/views/tab-home.html:98
-#: www/views/tab-settings.html:115
-msgid "Bitcoin Cash Wallets"
-msgstr "Peněženky Bitcoin Cash"
-
-#: www/views/modals/chooseFeeLevel.html:4
-#: www/views/preferencesFee.html:4
-#: www/views/tab-settings.html:90
-msgid "Bitcoin Network Fee Policy"
-msgstr "Poplatková politika sítě Bitcoin"
-
-#: www/views/tab-home.html:83
-#: www/views/tab-settings.html:107
-msgid "Bitcoin Core Wallets"
-msgstr "Peněženky Bitcoin Core"
-
-#: src/js/services/incomingData.js:151
-msgid "Bitcoin cash Payment"
-msgstr "Platba Bitcoin Cash"
-
-#: www/views/onboarding/tour.html:31
-msgid "Bitcoin is a currency."
-msgstr "Bitcoin je měna."
-
-#: www/views/onboarding/disclaimer.html:15
-msgid "Bitcoin is different – it cannot be safely held with a bank or web service."
-msgstr "Bitcoin je jiný – nemůže být bezpečně uložen bankou nebo pomocí webové služby."
-
-#: www/views/onboarding/tour.html:18
-msgid "Bitcoin is secure, digital money."
-msgstr "Bitcoin jsou bezpečné, digitální peníze."
-
-#: www/views/preferencesFee.html:11
-msgid "Bitcoin transactions include a fee collected by miners on the network."
-msgstr "Transakce Bitcoinu zahrnuje poplatek těžařům v síti."
-
-#: www/views/buyAmazon.html:108
-msgid "Bought {{amountUnitStr}}"
-msgstr "Nakoupeno {{amountUnitStr}}"
-
-#: www/views/modals/txp-details.html:36
-msgid "Broadcast Payment"
-msgstr "Odeslat platbu"
-
-#: src/js/controllers/modals/txpDetails.js:64
-#: src/js/controllers/tx-details.js:81
-msgid "Broadcasted"
-msgstr "Odesláno"
-
-#: src/js/services/onGoingProcess.js:11
-msgid "Broadcasting transaction"
-msgstr "Odesílání transakce"
-
-#: www/views/unsupported.html:6
-msgid "Browser unsupported"
-msgstr "Prohlížeč není podporován"
-
-#: www/views/buyAmazon.html:5
-#: www/views/buyMercadoLibre.html:6
-msgid "Buy"
-msgstr "Koupit"
-
-#: www/views/includes/buyAndSellCard.html:3
-msgid "Buy & Sell Bitcoin"
-msgstr "Koupit & prodat Bitcoin"
-
-#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
-msgid "Buy Bitcoin"
-msgstr "Koupit Bitcoin"
-
-#: www/views/mercadoLibre.html:22
-#: www/views/mercadoLibre.html:50
-msgid "Buy a Gift Card"
-msgstr "Koupit dárkovou kartu"
-
-#: src/js/controllers/buyAmazon.js:334
-msgid "Buy from"
-msgstr "Koupit od"
-
-#: src/js/services/onGoingProcess.js:40
-msgid "Buying Bitcoin..."
-msgstr "Nákup Bitcoinu..."
-
-#: src/js/services/onGoingProcess.js:12
-msgid "Calculating fee"
-msgstr "Výpočet poplatku"
-
-#: src/js/controllers/buyAmazon.js:313
-#: src/js/controllers/buyMercadoLibre.js:307
-#: src/js/controllers/confirm.js:550
-#: src/js/controllers/topup.js:287
-#: src/js/services/incomingData.js:154
-#: 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 "Zrušit"
-
-#: www/views/copayers.html:36
-msgid "Cancel invitation"
-msgstr "Zrušit pozvánku"
-
-#: src/js/controllers/onboarding/tour.js:52
-msgid "Cannot Create Wallet"
-msgstr "Není možné vytvořit peněženku"
-
-#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
-msgstr "Nelze se připojit vícekrát ke stejné peněžence"
-
-#: www/views/includes/bitpayCardsCard.html:2
-msgid "Cards"
-msgstr "Karty"
-
-#: www/views/modals/paypro.html:30
-msgid "Certified by"
-msgstr "Certifikováno"
-
-#: www/views/preferencesExternal.html:19
-msgid "Check installation and retry."
-msgstr "Zkontrolujte instalaci a akci opakujte."
-
-#: www/views/tab-import-file.html:4
-msgid "Choose a backup file from your computer"
-msgstr "Vyberte záložní soubor ze svého počítače"
-
-#: www/views/modals/wallets.html:9
-msgid "Choose your destination wallet"
-msgstr "Zvolte cílovou peněženku"
-
-#: www/views/modals/wallets.html:10
-msgid "Choose your source wallet"
-msgstr "Zvolte zdrojovou peněženku"
-
-#: www/views/backup.html:61
-msgid "Clear"
-msgstr "Vymazat"
-
-#: www/views/preferencesHistory.html:24
-msgid "Clear cache"
-msgstr "Vymazat mezipaměť"
-
-#: src/js/controllers/confirm.js:373
-#: src/js/controllers/modals/txpDetails.js:49
-msgid "Click to accept"
-msgstr "Kliknutím potvrďte"
-
-#: src/js/controllers/confirm.js:367
-msgid "Click to pay"
-msgstr "Kliknutím zaplaťte"
-
-#: src/js/controllers/confirm.js:379
-#: src/js/controllers/modals/txpDetails.js:42
-msgid "Click to send"
-msgstr "Kliknutím odešlete"
-
-#: www/views/customAmount.html:4
-#: www/views/modals/mercadolibre-card-details.html:3
-#: 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 "Zavřít"
-
-#: www/views/includes/cash.html:2
-#: www/views/preferencesInformation.html:17
-msgid "Coin"
-msgstr "Mince"
-
-#: www/views/preferences.html:22
-msgid "Color"
-msgstr "Barva"
-
-#: www/views/preferencesAbout.html:21
-msgid "Commit hash"
-msgstr "Potvrzení hodnoty hash"
-
-#: www/views/preferences.html:49
-msgid "Complete the backup process to use this option"
-msgstr "Dokončete proces zálohování pro použití této možnosti"
-
-#: www/views/bitpayCard.html:93
-msgid "Completed"
-msgstr "Dokončeno"
-
-#: src/js/controllers/buyAmazon.js:311
-#: src/js/controllers/buyMercadoLibre.js:305
-#: src/js/controllers/confirm.js:549
-#: src/js/controllers/copayers.js:55
-#: src/js/controllers/topup.js:285
-#: www/views/backup.html:60
-#: www/views/backup.html:79
-#: www/views/confirm.html:4
-#: www/views/onboarding/collectEmail.html:32
-msgid "Confirm"
-msgstr "Potvrdit"
-
-#: www/views/modals/terms.html:26
-#: www/views/onboarding/disclaimer.html:44
-msgid "Confirm & Finish"
-msgstr "Potvrdit & dokončit"
-
-#: www/views/buyAmazon.html:90
-msgid "Confirm purchase"
-msgstr "Potvrdit nákup"
-
-#: www/views/modals/pin.html:10
-msgid "Confirm your PIN"
-msgstr "Potvrdit PIN kód"
-
-#: src/js/services/walletService.js:1033
-msgid "Confirm your new spending password"
-msgstr "Potvrďte nové heslo pro potvrzování plateb"
-
-#: www/views/tx-details.html:98
-msgid "Confirmations"
-msgstr "Potvrzení"
-
-#: www/views/bitpayCard.html:68
-#: www/views/modals/wallet-balance.html:61
-msgid "Confirming"
-msgstr "Potvrzování"
-
-#: www/views/bitpayCardIntro.html:37
-msgid "Connect my BitPay Card"
-msgstr "Propojit s BitPay kartou"
-
-#: src/js/services/onGoingProcess.js:13
-msgid "Connecting to Coinbase..."
-msgstr "Připojování ke Coinbase..."
-
-#: src/js/services/onGoingProcess.js:14
-msgid "Connecting to Glidera..."
-msgstr "Připojování ke Glidera..."
-
-#: src/js/services/bwcError.js:53
-msgid "Connection reset by peer"
-msgstr "Připojení přerušeno druhou stranou"
-
-#: www/views/tab-send.html:85
-msgid "Contacts"
-msgstr "Kontakty"
-
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Uložené, často používané adresy"
-
-#: www/views/onboarding/notifications.html:9
-msgid "Continue"
-msgstr "Pokračovat"
-
-#: www/views/preferencesLanguage.html:26
-msgid "Contribute Translations"
-msgstr "Přispět k překladu"
-
-#: src/js/controllers/confirm.js:130
-msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-msgstr "Copay podporuje pouze novou verzi adres u Bitcoin Cash"
-
-#: src/js/services/bwcError.js:62
-msgid "Copayer already in this wallet"
-msgstr "Spoluplátce již v této peněžence je"
-
-#: src/js/services/bwcError.js:77
-msgid "Copayer already voted on this spend proposal"
-msgstr "Spoluplátce již hlasoval pro tento návrh platby"
-
-#: src/js/services/bwcError.js:107
-msgid "Copayer data mismatch"
-msgstr "Neshoda dat spoluplátce"
-
-#: www/views/includes/walletActivity.html:2
-msgid "Copayer joined"
-msgstr "Spoluplátce se připojil"
-
-#: www/views/preferencesInformation.html:94
-msgid "Copayer {{$index}}"
-msgstr "Spoluplátce {{$index}}"
-
-#: src/js/controllers/copayers.js:79
-#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
-#: www/views/includes/copyToClipboard.html:4
-msgid "Copied to clipboard"
-msgstr "Zkopírováno do schránky"
-
-#: www/views/tab-export-file.html:94
-msgid "Copy this text as it is to a safe place (notepad or email)"
-msgstr "Zkopírujte tento text na bezpečné místo (poznámkový blok nebo email)"
-
-#: www/views/includes/incomingDataMenu.html:51
-#: www/views/includes/incomingDataMenu.html:70
-#: www/views/includes/incomingDataMenu.html:94
-#: www/views/includes/logOptions.html:9
-#: www/views/tab-export-file.html:78
-msgid "Copy to clipboard"
-msgstr "Zkopírovat do schránky"
-
-#: src/js/controllers/buyMercadoLibre.js:102
-msgid "Could not access Gift Card Service"
-msgstr "Nelze se spojit se službou pro dárkové karty"
-
-#: www/views/tab-import-phrase.html:2
-msgid "Could not access the wallet at the server. Please check:"
-msgstr "Nelze se spojit s peněženkou na serveru. Prosím zkontrolujte:"
-
-#: src/js/controllers/buyAmazon.js:102
-msgid "Could not access to Amazon.com"
-msgstr "Nelze se spojit s Amazon.com"
-
-#: src/js/services/profileService.js:511
-msgid "Could not access wallet"
-msgstr "Nelze získat přístup k peněžence"
-
-#: src/js/controllers/confirm.js:210
-msgid "Could not add message to imported wallet without shared encrypting key"
-msgstr "Nelze přidat zprávu do importované peněženky bez sdíleného šifrovacího klíče"
-
-#: src/js/controllers/modals/txpDetails.js:199
-msgid "Could not broadcast payment"
-msgstr "Nelze odeslat platbu"
-
-#: src/js/services/bwcError.js:41
-msgid "Could not build transaction"
-msgstr "Nelze sestavit transakci"
-
-#: src/js/services/walletService.js:854
-msgid "Could not create address"
-msgstr "Nelze vytvořit adresu"
-
-#: src/js/controllers/topup.js:92
-msgid "Could not create the invoice"
-msgstr "Nelze vytvořit fakturu"
-
-#: src/js/controllers/buyAmazon.js:164
-#: src/js/controllers/buyMercadoLibre.js:164
-#: src/js/controllers/topup.js:142
-msgid "Could not create transaction"
-msgstr "Nelze vytvořit transakci"
-
-#: src/js/services/profileService.js:350
-msgid "Could not create using the specified extended private key"
-msgstr "Nelze vytvořit pomocí zadaného rozšířeného soukromého klíče"
-
-#: src/js/services/profileService.js:362
-msgid "Could not create using the specified extended public key"
-msgstr "Nelze vytvořit pomocí zadaného rozšířeného veřejného klíče"
-
-#: src/js/services/profileService.js:338
-msgid "Could not create: Invalid wallet recovery phrase"
-msgstr "Nelze vytvořit: neplatná fráze k obnovení peněženky"
-
-#: src/js/controllers/import.js:114
-msgid "Could not decrypt file, check your password"
-msgstr "Nelze dešifrovat soubor, zkontrolujte heslo"
-
-#: src/js/controllers/modals/txpDetails.js:181
-msgid "Could not delete payment proposal"
-msgstr "Nelze smazat návrh platby"
-
-#: src/js/controllers/cashScan.js:117
-msgid "Could not duplicate"
-msgstr "Nelze duplikovat"
-
-#: src/js/services/feeService.js:73
-msgid "Could not get dynamic fee"
-msgstr "Nelze získat dynamický poplatek"
-
-#: src/js/services/feeService.js:43
-msgid "Could not get dynamic fee for level: {{feeLevel}}"
-msgstr "Nelze získat dynamický poplatek pro úroveň: {{feeLevel}}"
-
-#: src/js/controllers/modals/feeLevels.js:112
-msgid "Could not get fee levels"
-msgstr "Nelze získat úrovně poplatků"
-
-#: src/js/controllers/buyAmazon.js:122
-#: src/js/controllers/buyMercadoLibre.js:122
-#: src/js/controllers/topup.js:100
-msgid "Could not get the invoice"
-msgstr "Nelze získat fakturu"
-
-#: src/js/controllers/bitpayCard.js:66
-msgid "Could not get transactions"
-msgstr "Nelze získat transakce"
-
-#: src/js/services/profileService.js:615
-#: src/js/services/profileService.js:650
-#: src/js/services/profileService.js:674
-msgid "Could not import"
-msgstr "Nelze importovat"
-
-#: src/js/services/profileService.js:584
-msgid "Could not import. Check input file and spending password"
-msgstr "Nelze importovat. Zkontrolujte vstupní soubor a heslo pro potvrzení platby"
-
-#: src/js/services/profileService.js:457
-msgid "Could not join wallet"
-msgstr "Nelze připojit peněženku"
-
-#: src/js/controllers/modals/txpDetails.js:161
-msgid "Could not reject payment"
-msgstr "Nelze odmítnout platbu"
-
-#: src/js/controllers/preferencesBitpayServices.js:33
-msgid "Could not remove account"
-msgstr "Nelze odebrat účet"
-
-#: src/js/controllers/preferencesBitpayCard.js:20
-#: src/js/controllers/preferencesBitpayServices.js:50
-msgid "Could not remove card"
-msgstr "Nelze odebrat kartu"
-
-#: src/js/services/walletService.js:776
-msgid "Could not save preferences on the server"
-msgstr "Nelze uložit předvolby na serveru"
-
-#: src/js/controllers/modals/txpDetails.js:147
-msgid "Could not send payment"
-msgstr "Nelze odeslat platbu"
-
-#: src/js/controllers/buyAmazon.js:325
-#: src/js/controllers/buyMercadoLibre.js:318
-#: src/js/controllers/topup.js:299
-msgid "Could not send transaction"
-msgstr "Nelze odeslat transakci"
-
-#: www/views/walletDetails.html:210
-msgid "Could not update transaction history"
-msgstr "Nelze aktualizovat historii transakcí"
-
-#: src/js/controllers/addresses.js:29
-#: src/js/controllers/addresses.js:37
-#: src/js/controllers/copayers.js:30
-#: src/js/controllers/walletDetails.js:78
-msgid "Could not update wallet"
-msgstr "Nelze aktualizovat peněženku"
-
-#: www/views/tab-create-personal.html:3
-msgid "Create Personal Wallet"
-msgstr "Vytvořit osobní peněženku"
-
-#: www/views/tab-create-shared.html:3
-msgid "Create Shared Wallet"
-msgstr "Vytvořit sdílenou peněženku"
-
-#: www/views/onboarding/tour.html:51
-#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
-msgid "Create bitcoin wallet"
-msgstr "Vytvořit Bitcoin peněženku"
-
-#: www/views/tab-create-personal.html:131
-msgid "Create new wallet"
-msgstr "Vytvořit novou peněženku"
-
-#: www/views/add.html:22
-msgid "Create shared wallet"
-msgstr "Vytvořit sdílenou peněženku"
-
-#: www/views/tab-create-shared.html:160
-msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet"
-msgstr "Vytvořit peněženku {{formData.requiredCopayers}}-z-{{formData.totalCopayers}}"
-
-#: www/views/modals/txp-details.html:81
-#: www/views/tx-details.html:60
-msgid "Created by"
-msgstr "Vytvořil(a)"
-
-#: src/js/services/onGoingProcess.js:18
-msgid "Creating Wallet..."
-msgstr "Vytváření peněženky..."
-
-#: src/js/services/onGoingProcess.js:17
-msgid "Creating transaction"
-msgstr "Vytváření transakce"
-
-#: www/views/modals/chooseFeeLevel.html:34
-#: www/views/preferencesFee.html:20
-msgid "Current fee rate for this policy"
-msgstr "Aktuální poplatek pro tuto politiku"
-
-#: src/js/services/feeService.js:15
-msgid "Custom"
-msgstr "Vlastní"
-
-#: www/views/customAmount.html:9
-msgid "Custom Amount"
-msgstr "Vlastní částka"
-
-#: src/js/controllers/preferencesFee.js:85
-msgid "Custom Fee"
-msgstr "Vlastní výše poplatku"
-
-#: www/views/modals/mercadolibre-card-details.html:56
-#: www/views/modals/txp-details.html:87
-#: www/views/tx-details.html:66
-msgid "Date"
-msgstr "Datum"
-
-#: www/views/preferencesDeleteWallet.html:21
-msgid "Delete"
-msgstr "Smazat"
-
-#: www/views/modals/txp-details.html:164
-msgid "Delete Payment Proposal"
-msgstr "Smazat návrh platby"
-
-#: www/views/preferencesAdvanced.html:33
-#: www/views/preferencesDeleteWallet.html:3
-msgid "Delete Wallet"
-msgstr "Smazat peněženku"
-
-#: www/views/copayers.html:59
-msgid "Delete it and create a new one"
-msgstr "Smazat tuto a vytvořit novou"
-
-#: src/js/services/onGoingProcess.js:19
-msgid "Deleting Wallet..."
-msgstr "Mazání peněženky..."
-
-#: src/js/services/onGoingProcess.js:28
-msgid "Deleting payment proposal"
-msgstr "Mazání návrhu platby"
-
-#: www/views/join.html:141
-#: www/views/tab-create-personal.html:111
-#: www/views/tab-create-shared.html:140
-#: www/views/tab-import-phrase.html:49
-msgid "Derivation Path"
-msgstr "Cesta pro odvození"
-
-#: www/views/preferencesInformation.html:47
-msgid "Derivation Strategy"
-msgstr "Odvozovací strategie"
-
-#: www/views/buyAmazon.html:39
-#: www/views/buyMercadoLibre.html:38
-#: www/views/modals/mercadolibre-card-details.html:6
-#: www/views/topup.html:45
-msgid "Details"
-msgstr "Podrobnosti"
-
-#: src/js/controllers/lockSetup.js:9
-#: src/js/controllers/tab-settings.js:65
-#: www/views/tab-settings.html:50
-msgid "Disabled"
-msgstr "Vypnuto"
-
-#: www/views/includes/backupNeededPopup.html:10
-#: www/views/onboarding/backupRequest.html:12
-msgid "Do it later"
-msgstr "Později"
-
-#: www/views/tab-export-file.html:29
-msgid "Do not include private key"
-msgstr "Nezahrnovat soukromý klíč"
-
-#: 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 "Není Váš jazyk zobrazen na Crowdin? Obraťte se na vlastníka Crowdin projektu! Rádi bychom Váš jazyk podporovali."
-
-#: www/views/tab-export-file.html:59
-#: www/views/tab-home.html:22
-msgid "Download"
-msgstr "Stáhnout"
-
-#: www/views/cashScan.html:37
-msgid "Duplicate for BCH"
-msgstr "Duplikovat pro BCH"
-
-#: src/js/services/onGoingProcess.js:49
-msgid "Duplicating wallet..."
-msgstr "Duplikování peněženky..."
-
-#: 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ždá Bitcoin peněženka může z 12-ti slov zálohovací fráze vygenerovat miliardy adres. Vždy, když přijímáte platbu, je automaticky vygenerována nová adresa."
-
-#: src/js/services/feeService.js:13
-msgid "Economy"
-msgstr "Ekonomická"
-
-#: www/views/onboarding/collectEmail.html:27
-msgid "Edit"
-msgstr "Upravit"
-
-#: 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-mailová adresa"
-
-#: src/js/services/bwcError.js:122
-msgid "Empty addresses limit reached. New addresses cannot be generated."
-msgstr "Vyčerpán limit pro počet prázdných adres. Nelze generovat nové adresy."
-
-#: www/views/preferencesCash.html:17
-msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-msgstr "Povolit vytváření a použití Bitcoin Cash peněženky v aplikaci."
-
-#: www/views/tab-scan.html:19
-msgid "Enable camera access in your device settings to get started."
-msgstr "Chcete-li začít, povolte přístup k fotoaparátu v nastavení Vašeho zařízení."
-
-#: www/views/preferencesNotifications.html:29
-msgid "Enable email notifications"
-msgstr "Povolit oznámení pomocí e-mailu"
-
-#: www/views/preferencesNotifications.html:12
-msgid "Enable push notifications"
-msgstr "Povolit push notifikace"
-
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Povolit zvuky"
-
-#: www/views/tab-scan.html:18
-msgid "Enable the camera to get started."
-msgstr "Chcete-li začít, povolte použití fotoaparátu."
-
-#: www/views/tab-settings.html:49
-msgid "Enabled"
-msgstr "Povoleno"
-
-#: src/js/services/walletService.js:1047
-#: src/js/services/walletService.js:1062
-msgid "Enter Spending Password"
-msgstr "Zadejte heslo pro potvrzení platby"
-
-#: src/js/services/bitpayAccountService.js:110
-msgid "Enter Two Factor for your BitPay account"
-msgstr "Zadejte dvoufázové ověření Vašeho BitPay účtu"
-
-#: www/views/amount.html:4
-msgid "Enter amount"
-msgstr "Zadejte částku"
-
-#: www/views/modals/chooseFeeLevel.html:41
-msgid "Enter custom fee"
-msgstr "Zadejte vlastní výši poplatku"
-
-#: src/js/services/walletService.js:1029
-msgid "Enter new spending password"
-msgstr "Zadejte nové heslo pro potvrzování plateb"
-
-#: www/views/join.html:79
-#: www/views/tab-create-personal.html:51
-#: www/views/tab-create-shared.html:80
-msgid "Enter the recovery phrase (BIP39)"
-msgstr "Zadejte frázi k obnovení (BIP39)"
-
-#: www/views/onboarding/collectEmail.html:13
-msgid "Enter your email"
-msgstr "Zadejte svůj e-mail"
-
-#: www/views/backup.html:69
-msgid "Enter your password"
-msgstr "Zadejte své heslo"
-
-#. 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:42
-#: src/js/controllers/addresses.js:125
-#: src/js/controllers/addresses.js:126
-#: src/js/controllers/bitpayCard.js:66
-#: src/js/controllers/bitpayCardIntro.js:40
-#: src/js/controllers/bitpayCardIntro.js:81
-#: src/js/controllers/buyAmazon.js:24
-#: src/js/controllers/buyAmazon.js:35
-#: src/js/controllers/buyMercadoLibre.js:24
-#: src/js/controllers/buyMercadoLibre.js:35
-#: src/js/controllers/confirm.js:307
-#: src/js/controllers/copayers.js:67
-#: src/js/controllers/create.js:161
-#: src/js/controllers/create.js:174
-#: src/js/controllers/create.js:180
-#: src/js/controllers/create.js:186
-#: src/js/controllers/create.js:208
-#: src/js/controllers/create.js:215
-#: src/js/controllers/create.js:233
-#: 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:119
-#: src/js/controllers/import.js:131
-#: src/js/controllers/import.js:149
-#: src/js/controllers/import.js:200
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:238
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:266
-#: src/js/controllers/import.js:278
-#: src/js/controllers/import.js:288
-#: src/js/controllers/import.js:312
-#: src/js/controllers/import.js:325
-#: src/js/controllers/import.js:335
-#: src/js/controllers/import.js:345
-#: src/js/controllers/import.js:369
-#: src/js/controllers/import.js:382
-#: src/js/controllers/import.js:85
-#: src/js/controllers/import.js:98
-#: src/js/controllers/join.js:125
-#: src/js/controllers/join.js:139
-#: src/js/controllers/join.js:145
-#: src/js/controllers/join.js:151
-#: src/js/controllers/join.js:174
-#: src/js/controllers/join.js:182
-#: src/js/controllers/join.js:200
-#: src/js/controllers/modals/feeLevels.js:9
-#: src/js/controllers/modals/txpDetails.js:140
-#: 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:36
-#: src/js/controllers/preferencesExternal.js:20
-#: src/js/controllers/tab-home.js:174
-#: src/js/controllers/tab-send.js:143
-#: src/js/controllers/tabsController.js:36
-#: src/js/controllers/tabsController.js:7
-#: src/js/controllers/topup.js:21
-#: src/js/controllers/topup.js:32
-#: src/js/controllers/tx-details.js:119
-#: src/js/services/incomingData.js:101
-#: src/js/services/incomingData.js:125
-#: src/js/services/incomingData.js:168
-#: www/views/mercadoLibreCards.html:19
-#: www/views/modals/mercadolibre-card-details.html:45
-msgid "Error"
-msgstr "Chyba"
-
-#: src/js/controllers/confirm.js:502
-msgid "Error at confirm"
-msgstr "Chyba při potvrzování"
-
-#: src/js/controllers/buyAmazon.js:179
-msgid "Error creating gift card"
-msgstr "Chyba při vytváření dárkové karty"
-
-#: src/js/controllers/buyAmazon.js:94
-#: src/js/controllers/buyMercadoLibre.js:94
-msgid "Error creating the invoice"
-msgstr "Chyba při vytváření faktury"
-
-#: src/js/services/profileService.js:412
-msgid "Error creating wallet"
-msgstr "Chyba při vytváření peněženky"
-
-#: src/js/controllers/confirm.js:296
-msgid "Error getting SendMax information"
-msgstr "Chyba při získávání SendMax informace"
-
-#: src/js/controllers/buyAmazon.js:136
-#: src/js/controllers/buyMercadoLibre.js:136
-#: src/js/controllers/topup.js:114
-msgid "Error in Payment Protocol"
-msgstr "Chyba v platebním protokolu"
-
-#: src/js/controllers/bitpayCardIntro.js:14
-msgid "Error pairing BitPay Account"
-msgstr "Chyba při párování s BitPay účtem"
-
-#: src/js/controllers/paperWallet.js:41
-msgid "Error scanning funds:"
-msgstr "Chyba při čtení dostupných prostředků:"
-
-#: src/js/controllers/paperWallet.js:90
-msgid "Error sweeping wallet:"
-msgstr "Chyba při sweepu peněženky:"
-
-#: src/js/controllers/bitpayCardIntro.js:20
-msgid "Error updating Debit Cards"
-msgstr "Chyba aktualizace debetní karty"
-
-#: src/js/services/bwcError.js:143
-msgid "Exceeded daily limit of $500 per user"
-msgstr "Byl překročen denní limit 500 $ na jednoho uživatele"
-
-#: src/js/controllers/confirm.js:461
-#: www/views/confirm.html:27
-#: www/views/mercadoLibreCards.html:25
-#: www/views/modals/mercadolibre-card-details.html:34
-#: www/views/modals/txp-details.html:119
-msgid "Expired"
-msgstr "Vypršela platnost"
-
-#: www/views/modals/paypro.html:54
-#: www/views/modals/txp-details.html:125
-msgid "Expires"
-msgstr "Vypršení platnosti"
-
-#: www/views/preferencesAdvanced.html:21
-msgid "Export Wallet"
-msgstr "Exportovat peněženku"
-
-#: www/views/preferencesHistory.html:11
-#: www/views/preferencesHistory.html:14
-msgid "Export to file"
-msgstr "Exportovat do souboru"
-
-#: www/views/export.html:3
-msgid "Export wallet"
-msgstr "Exportovat peněženku"
-
-#: src/js/services/walletService.js:1174
-#: www/views/tab-export-qrCode.html:9
-msgid "Exporting via QR not supported for this wallet"
-msgstr "Tato peněženka nepodporuje export pomocí QR"
-
-#: www/views/preferencesInformation.html:89
-msgid "Extended Public Keys"
-msgstr "Rozšířené veřejné klíče"
-
-#: src/js/services/onGoingProcess.js:20
-msgid "Extracting Wallet information..."
-msgstr "Extrahování informací o peněžence..."
-
-#: 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 "Export se nezdařil"
-
-#: www/views/tab-create-personal.html:14
-#: www/views/tab-create-shared.html:14
-msgid "Family vacation funds"
-msgstr "Peníze na rodinné dovolené"
-
-#: www/views/tx-details.html:79
-msgid "Fee"
-msgstr "Poplatek"
-
-#: www/views/modals/chooseFeeLevel.html:75
-msgid "Fee level"
-msgstr "Úroveň poplatků"
-
-#: src/js/controllers/modals/feeLevels.js:100
-msgid "Fee level is not defined"
-msgstr "Úroveň poplatků není definována"
-
-#: www/views/confirm.html:79
-#: www/views/modals/txp-details.html:99
-msgid "Fee:"
-msgstr "Poplatek:"
-
-#: src/js/controllers/feedback/send.js:23
-msgid "Feedback could not be submitted. Please try again later."
-msgstr "Nebylo možné odeslat zpětnou vazbu. Opakujte akci později."
-
-#: src/js/services/onGoingProcess.js:42
-msgid "Fetching BitPay Account..."
-msgstr "Získávání dat BitPay účtu..."
-
-#: src/js/services/onGoingProcess.js:21
-msgid "Fetching payment information"
-msgstr "Získávání informací o platbě"
-
-#: www/views/export.html:14
-#: www/views/import.html:16
-msgid "File/Text"
-msgstr "Soubor/Text"
-
-#: www/views/preferencesLogs.html:17
-msgid "Filter setting"
-msgstr "Nastavení filtru"
-
-#: src/js/services/fingerprintService.js:43
-#: src/js/services/fingerprintService.js:48
-msgid "Finger Scan Failed"
-msgstr "Sken otisku prstu se nezdařil"
-
-#: src/js/controllers/feedback/send.js:34
-#: www/views/feedback/complete.html:7
-msgid "Finish"
-msgstr "Dokončit"
-
-#: www/views/tab-create-personal.html:123
-#: www/views/tab-create-shared.html:152
-msgid "For audit purposes"
-msgstr "Pro účely auditu"
-
-#: src/js/controllers/topup.js:308
-#: www/views/buyAmazon.html:29
-#: www/views/buyMercadoLibre.html:28
-#: www/views/confirm.html:65
-#: www/views/modals/txp-details.html:74
-#: www/views/topup.html:34
-#: www/views/tx-details.html:52
-#: www/views/review.html:22
-msgid "From"
-msgstr "Od"
-
-#: src/js/controllers/bitpayCardIntro.js:71
-msgid "From BitPay account"
-msgstr "Z BitPay účtu"
-
-#: www/views/tab-import-phrase.html:57
-msgid "From Hardware Wallet"
-msgstr "Z hardwarové peněženky"
-
-#: 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 cílového zařízení, přejděte na Přidat peněženku > Importovat peněženku a načtěte tento QR kód"
-
-#: src/js/services/bwcError.js:74
-msgid "Funds are locked by pending spend proposals"
-msgstr "Peníze jsou blokovány čekajícími návrhy plateb"
-
-#: www/views/paperWallet.html:16
-msgid "Funds found:"
-msgstr "Nalezeny peníze:"
-
-#: www/views/topup.html:49
-msgid "Funds to be added"
-msgstr "Peníze k přidání"
-
-#: www/views/paperWallet.html:51
-msgid "Funds transferred"
-msgstr "Peníze převedeny"
-
-#: www/views/topup.html:103
-msgid "Funds were added to debit card"
-msgstr "Peníze byly přidány na debetní kartu"
-
-#: www/views/paperWallet.html:22
-msgid "Funds will be transferred to"
-msgstr "Peníze budou převedeny na"
-
-#: www/views/tab-receive.html:51
-msgid "Generate new address"
-msgstr "Generovat novou adresu"
-
-#: src/js/services/onGoingProcess.js:22
-msgid "Generating .csv file..."
-msgstr "Generování .csv souboru ..."
-
-#: src/js/services/onGoingProcess.js:37
-msgid "Generating new address..."
-msgstr "Generování nové adresy..."
-
-#: www/views/bitpayCardIntro.html:23
-msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply."
-msgstr "Získejte místní peníze kamkoli cestujete, pomocí jakékoliv bankomatem podporované karty Visa® . Banka si za výběr může účtovat poplatky."
-
-#: www/views/onboarding/collectEmail.html:15
-msgid "Get news and updates from BitPay"
-msgstr "Získávejte novinky a aktualizace z BitPay"
-
-#: www/views/onboarding/welcome.html:8
-#: www/views/bitpayCard.html:49
-msgid "Get started"
-msgstr "Začněte"
-
-#: www/views/addressbook.html:20
-msgid "Get started by adding your first one."
-msgstr "Začněte přidáním prvního."
-
-#: src/js/services/onGoingProcess.js:23
-msgid "Getting fee levels..."
-msgstr "Získávání úrovní poplatků..."
-
-#: www/views/buyAmazon.html:43
-#: www/views/buyMercadoLibre.html:42
-msgid "Gift Card"
-msgstr "Dárková karta"
-
-#: www/views/modals/mercadolibre-card-details.html:30
-#: www/views/modals/mercadolibre-card-details.html:35
-msgid "Gift Card is not available to use anymore"
-msgstr "Dárková karta již není k dispozici"
-
-#: src/js/controllers/buyAmazon.js:204
-msgid "Gift card expired"
-msgstr "Vypršela platnost dárkové karty"
-
-#: www/views/buyAmazon.html:111
-msgid "Gift card generated and ready to use."
-msgstr "Dárková karta byla vygenerován a je připravena k použití."
-
-#: src/js/controllers/bitpayCard.js:114
-#: src/js/controllers/bitpayCard.js:124
-#: src/js/controllers/cashScan.js:20
-#: src/js/controllers/onboarding/terms.js:23
-#: src/js/controllers/preferences.js:67
-#: src/js/controllers/preferencesAbout.js:16
-#: src/js/controllers/preferencesCash.js:34
-#: src/js/controllers/preferencesLanguage.js:14
-#: src/js/controllers/tab-home.js:149
-#: src/js/controllers/tab-settings.js:53
-#: src/js/controllers/tx-details.js:193
-#: src/js/controllers/tx-details.js:56
-msgid "Go Back"
-msgstr "Zpět"
-
-#: src/js/controllers/confirm.js:131
-#: src/js/controllers/onboarding/backupRequest.js:20
-#: src/js/controllers/onboarding/backupRequest.js:26
-#: src/js/services/bitpayAccountService.js:84
-msgid "Go back"
-msgstr "Zpět"
-
-#: www/views/backupWarning.html:15
-#: www/views/includes/confirmBackupPopup.html:8
-#: www/views/onboarding/tour.html:23
-msgid "Got it"
-msgstr "Jasně"
-
-#: www/views/preferencesInformation.html:53
-#: www/views/preferencesInformation.html:59
-msgid "Hardware Wallet"
-msgstr "Hardwarová peněženka"
-
-#: www/views/preferencesExternal.html:18
-msgid "Hardware not connected."
-msgstr "Hardware není připojen."
-
-#: www/views/import.html:20
-msgid "Hardware wallet"
-msgstr "Hardwarová peněženka"
-
-#: src/js/controllers/create.js:180
-#: src/js/controllers/join.js:145
-msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr "Hardwarové peněženky zatím nejsou u Bitcoin Cash podporovány"
-
-#: www/views/tab-settings.html:20
-msgid "Help & Support"
-msgstr "Nápověda & Podpora"
-
-#: src/js/controllers/bitpayCard.js:112
-#: src/js/controllers/tab-settings.js:51
-msgid "Help and support information is available at the website."
-msgstr "Informace nápovědy a podpory jsou k dispozici na webových stránkách."
-
-#: www/views/addresses.html:25
-msgid "Hide"
-msgstr "Skrýt"
-
-#: www/views/preferences.html:27
-msgid "Hide Balance"
-msgstr "Skrýt zůstatek"
-
-#: www/views/advancedSettings.html:30
-msgid "Hide Next Steps Card"
-msgstr "Skrýt kartu Následující kroky"
-
-#: www/views/join.html:49
-#: www/views/tab-create-personal.html:28
-#: www/views/tab-create-shared.html:57
-#: www/views/tab-export-file.html:25
-#: www/views/tab-import-file.html:30
-#: www/views/tab-import-hardware.html:31
-#: www/views/tab-import-phrase.html:36
-msgid "Hide advanced options"
-msgstr "Skrýt pokročilé možnosti"
-
-#: www/views/tabs.html:3
-msgid "Home"
-msgstr "Domů"
-
-#: 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 "Jak bychom mohli zlepšit Váš dojem?"
-
-#: www/views/feedback/rateCard.html:3
-msgid "How do you like {{appName}}?"
-msgstr "Jak se Vám líbí {{appName}}?"
-
-#: src/js/controllers/feedback/rateCard.js:29
-msgid "I don't like it"
-msgstr "Nelíbí se mi"
-
-#: www/views/onboarding/disclaimer.html:43
-msgid "I have read, understood, and agree to the Terms of Use ."
-msgstr "Přečetl jsem, chápu a souhlasím s Podmínkami použití ."
-
-#: www/views/modals/terms.html:22
-msgid "I have read, understood, and agree with the Terms of use."
-msgstr "Přečetl jsem, chápu a souhlasím s Podmínkami použití."
-
-#: www/views/join.html:137
-#: www/views/tab-create-personal.html:107
-#: www/views/tab-create-shared.html:136
-msgid "I have written it down"
-msgstr "Napsal jsem si ji"
-
-#: src/js/controllers/feedback/rateCard.js:35
-msgid "I like the app"
-msgstr "Aplikace se mi líbí"
-
-#: src/js/controllers/feedback/rateCard.js:26
-msgid "I think this app is terrible."
-msgstr "Myslím, že tato aplikace je hrozná."
-
-#: src/js/controllers/onboarding/backupRequest.js:19
-#: www/views/includes/screenshotWarningModal.html:9
-msgid "I understand"
-msgstr "Rozumím"
-
-#: 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 "Chápu, že pokud tato aplikace bude přesunuta do jiného zařízení nebo odstraněna, moje peníze lze obnovit pouze pomocí fráze k obnovení."
-
-#: www/views/onboarding/disclaimer.html:18
-msgid "I understand that my funds are held securely on this device, not by a company."
-msgstr "Chápu, že přístup k mým penězům je bezpečně držen tímto zařízením, nikoliv žádnou společností."
-
-#: www/views/backup.html:36
-msgid "I've written it down"
-msgstr "Napsal jsem si ji"
-
-#: 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 povoleno, budou chráněny veškeré citlivé informace (privátní klíč a fráze k obnovení) a akce (placení a exportování) spojené s touto peněženkou."
-
-#: www/views/advancedSettings.html:23
-msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab."
-msgstr "Je-li povoleno, zobrazí se na kartě Domů karta Nedávné transakce - seznam posledních transakcí napříč všemi peněženkami."
-
-#: www/views/advancedSettings.html:14
-msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays."
-msgstr "Je-li povoleno, peněženky se také pokusí utratit peníze z doposud nepotvrzených transakcí. Tato možnost může způsobit zpoždění následujících transakcí."
-
-#: 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 "Pokud je toto zařízení zaměněno nebo je aplikace smazána, ani Vy ani BitPay nedokáže obnovit Vaše peníze bez zálohy."
-
-#: 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 "Pokud máte další zpětnou vazbu, dejte nám prosím vědět klepnutím na možnost \"Odeslat zpětnou vazbu\" na kartě Nastavení."
-
-#: 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 "Pořídíte-li screenshot, Vaši zálohu si mohou prohlédnout ostatní aplikace. Bezpečnou zálohu můžete provést pomocí papíru a propisky."
-
-#: www/views/tab-import-hardware.html:42
-#: www/views/tab-import-phrase.html:80
-msgid "Import"
-msgstr "Importovat"
-
-#: www/views/import.html:3
-msgid "Import Wallet"
-msgstr "Importovat peněženku"
-
-#: www/views/tab-import-file.html:41
-msgid "Import backup"
-msgstr "Importovat zálohu"
-
-#: www/views/add.html:38
-msgid "Import wallet"
-msgstr "Importovat peněženku"
-
-#: src/js/services/onGoingProcess.js:24
-msgid "Importing Wallet..."
-msgstr "Importování peněženky..."
-
-#: www/views/backup.html:72
-msgid "In order to verify your wallet backup, please type your password."
-msgstr "Pro ověření zálohy Vaší peněženky zadejte své heslo."
-
-#: www/views/mercadoLibreCards.html:24
-#: www/views/modals/mercadolibre-card-details.html:29
-msgid "Inactive"
-msgstr "Neaktivní"
-
-#: www/views/includes/walletItem.html:9
-#: www/views/includes/walletList.html:6
-#: www/views/includes/walletListSettings.html:9
-#: www/views/includes/walletSelector.html:16
-msgid "Incomplete"
-msgstr "Neúplné"
-
-#: www/views/tab-receive.html:22
-msgid "Incomplete wallet"
-msgstr "Neúplná peněženka"
-
-#: www/views/modals/pin.html:12
-msgid "Incorrect PIN, try again."
-msgstr "Nesprávný PIN, zkuste to znovu."
-
-#. Trying to import a malformed wallet export QR code
-#: src/js/controllers/import.js:85
-msgid "Incorrect code format"
-msgstr "Chybný formát kódu"
-
-#: src/js/services/bwcError.js:113
-msgid "Incorrect network address"
-msgstr "Nesprávná síťová adresa"
-
-#: src/js/controllers/confirm.js:114
-#: src/js/controllers/confirm.js:306
-#: src/js/services/bwcError.js:44
-msgid "Insufficient confirmed funds"
-msgstr "Nedostatečné potvrzené prostředky"
-
-#: src/js/controllers/topup.js:165
-#: src/js/controllers/topup.js:177
-#: src/js/services/bwcError.js:71
-msgid "Insufficient funds for fee"
-msgstr "Nedostatek prostředků na poplatek"
-
-#: www/views/tab-settings.html:123
-msgid "Integrations"
-msgstr "Integrace"
-
-#: www/views/includes/walletHistory.html:49
-msgid "Invalid"
-msgstr "Neplatné"
-
-#: src/js/controllers/buyAmazon.js:137
-#: src/js/controllers/buyMercadoLibre.js:137
-#: src/js/controllers/topup.js:115
-msgid "Invalid URL"
-msgstr "Neplatná URL"
-
-#: src/js/controllers/create.js:186
-#: src/js/controllers/import.js:345
-#: src/js/controllers/join.js:151
-msgid "Invalid account number"
-msgstr "Neplatné číslo účtu"
-
-#: src/js/services/bwcError.js:119
-msgid "Invalid address"
-msgstr "Neplatná adresa"
-
-#: src/js/controllers/tabsController.js:7
-msgid "Invalid data"
-msgstr "Neplatná data"
-
-#: src/js/controllers/create.js:161
-#: src/js/controllers/import.js:266
-#: src/js/controllers/join.js:125
-msgid "Invalid derivation path"
-msgstr "Neplatná odvozovací cesta"
-
-#: src/js/controllers/copayers.js:90
-msgid "Invitation to share a {{appName}} Wallet"
-msgstr "Pozvánka ke sdílení {{appName}} peněženky"
-
-#: www/views/mercadoLibreCards.html:20
-#: www/views/modals/mercadolibre-card-details.html:48
-msgid "Invoice expired"
-msgstr "Vypršela platnost faktury"
-
-#: src/js/controllers/feedback/send.js:79
-msgid "Is there anything we could do better?"
-msgstr "Existuje něco, co bychom mohli dělat lépe?"
-
-#: www/views/backup.html:54
-msgid "Is this correct?"
-msgstr "Je to správně?"
-
-#: www/views/onboarding/collectEmail.html:22
-msgid "Is this email address correct?"
-msgstr "Je tato e-mailová adresa správná?"
-
-#: 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 "Je vhodné vyvarovat se opakovanému použití adres - chrání to jak Vaše soukromí, tak i Vaše peníze proti hypotetickému útoku kvantovým počítačem."
-
-#: 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 "Je důležité si správně napsat zálohovací frázi. Stane-li se něco Vaší peněžence, budete tuto zálohu potřebovat ke zpřístupnění peněz. Zkontrolujte prosím Vaši zálohu a zkuste to znovu."
-
-#: www/views/join.html:151
-msgid "Join"
-msgstr "Připojit"
-
-#: 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 "Připojte se k mé {{appName}} peněžence. Zde je kód pozvánky: {{secret}} - {{appName}} můžete stáhnout jak pro telefon tak i PC zde: {{appUrl}}"
-
-#: www/views/add.html:30
-#: www/views/join.html:5
-msgid "Join shared wallet"
-msgstr "Připojit ke sdílené peněžence"
-
-#: src/js/services/onGoingProcess.js:25
-msgid "Joining Wallet..."
-msgstr "Připojování peněženky..."
-
-#: www/views/onboarding/tour.html:22
-msgid "Just scan the code to pay."
-msgstr "Pro zaplacení jen naskenujte kód."
-
-#: src/js/services/bwcError.js:116
-msgid "Key already associated with an existing wallet"
-msgstr "Klíč je již asociován s existující peněženkou"
-
-#: www/views/preferencesLanguage.html:4
-#: www/views/tab-settings.html:68
-msgid "Language"
-msgstr "Jazyk"
-
-#: www/views/bitpayCard.html:61
-msgid "Last Month"
-msgstr "Minulý měsíc"
-
-#: src/js/controllers/confirm.js:132
-#: www/views/preferences.html:48
-#: www/views/preferencesCash.html:18
-#: www/views/tx-details.html:94
-msgid "Learn more"
-msgstr "Zjistěte více"
-
-#: www/views/backup.html:43
-msgid "Let's verify your backup phrase."
-msgstr "Ověřme Vaši zálohovací frázi."
-
-#: www/views/addresses.html:45
-#: www/views/allAddresses.html:14
-msgid "Loading addresses..."
-msgstr "Načítání adres..."
-
-#: src/js/services/onGoingProcess.js:35
-msgid "Loading transaction info..."
-msgstr "Načítání informací o transakci..."
-
-#: www/views/tab-settings.html:100
-msgid "Lock App"
-msgstr "Uzamknutí aplikace"
-
-#: src/js/controllers/lockSetup.js:23
-msgid "Lock by Fingerprint"
-msgstr "Uzamknout otiskem prstu"
-
-#: src/js/controllers/lockSetup.js:14
-msgid "Lock by PIN"
-msgstr "Uzamknout PIN kódem"
-
-#: www/views/modals/wallet-balance.html:80
-msgid "Locked"
-msgstr "Uzamčeno"
-
-#: src/js/services/bwcError.js:86
-msgid "Locktime in effect. Please wait to create a new spend proposal"
-msgstr "Uzamčeno časovým zámkem. Vyčkejte, než bude možné vytvořit nový návrh platby"
-
-#: src/js/services/bwcError.js:89
-msgid "Locktime in effect. Please wait to remove this spend proposal"
-msgstr "Uzamčeno časovým zámkem. Vyčkejte, než bude možné odstranit tento návrh platby"
-
-#: www/views/includes/logOptions.html:3
-msgid "Log options"
-msgstr "Možnosti logování"
-
-#: www/views/modals/bitpay-card-confirmation.html:14
-msgid "Log out"
-msgstr "Odhlásit se"
-
-#: www/views/addresses.html:87
-msgid "Low amount inputs"
-msgstr "Vstupy s nízkými částkami"
-
-#: www/views/includes/walletHistory.html:27
-msgid "Low fees"
-msgstr "Nízké poplatky"
-
-#: www/views/onboarding/tour.html:38
-msgid "Makes sense"
-msgstr "Dává to smysl"
-
-#: src/js/controllers/modals/search.js:61
-msgid "Matches:"
-msgstr "Odpovídá:"
-
-#: www/views/includes/copayers.html:4
-#: www/views/preferencesInformation.html:85
-msgid "Me"
-msgstr "Já"
-
-#: src/js/controllers/feedback/rateCard.js:32
-msgid "Meh - it's alright"
-msgstr "Ujde to"
-
-#: src/js/controllers/tx-details.js:165
-#: www/views/modals/paypro.html:48
-#: www/views/modals/txp-details.html:93
-#: www/views/tx-details.html:72
-msgid "Memo"
-msgstr "Poznámka"
-
-#: www/views/mercadoLibre.html:6
-msgid "Mercado Livre Brazil Gift Cards"
-msgstr "Dárkové karty Mercado Livre Brazil"
-
-#: src/js/controllers/buyMercadoLibre.js:98
-msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr "Služba Mercadolibre Gift Card není v tomto okamžiku k dispozici. Zkuste to prosím později."
-
-#: www/views/modals/txp-details.html:131
-msgid "Merchant Message"
-msgstr "Zpráva obchodníka"
-
-#: www/views/buyAmazon.html:55
-#: www/views/buyMercadoLibre.html:54
-#: www/views/topup.html:63
-msgid "Miner Fee"
-msgstr "Poplatek těžaře"
-
-#: src/js/services/bwcError.js:134
-msgid "Missing parameter"
-msgstr "Chybějící parametr"
-
-#: src/js/services/bwcError.js:32
-msgid "Missing private keys to sign"
-msgstr "Chybí soukromý klíč k podepsání"
-
-#: www/views/preferences.html:61
-#: www/views/preferencesAdvanced.html:3
-msgid "More Options"
-msgstr "Další možnosti"
-
-#: www/views/includes/walletHistory.html:47
-#: www/views/tx-details.html:19
-msgid "Moved"
-msgstr "Přesunuto"
-
-#: src/js/controllers/tx-details.js:131
-msgid "Moved Funds"
-msgstr "Prostředky přesunuty"
-
-#: www/views/modals/txp-details.html:57
-msgid "Multiple recipients"
-msgstr "Více příjemců"
-
-#: 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 "Poznámka: Pro importování peněženky ze softwaru třetí strany jděte na Přidat peněženku > Vytvořit peněženku, a zadejte frázi pro obnovení tam."
-
-#: 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 "Jméno"
-
-#: www/views/buyAmazon.html:49
-#: www/views/buyMercadoLibre.html:48
-#: www/views/topup.html:56
-msgid "Network Cost"
-msgstr "Náklady sítě"
-
-#: src/js/services/bwcError.js:47
-msgid "Network error"
-msgstr "Chyba sítě"
-
-#: www/views/includes/walletActivity.html:43
-msgid "New Proposal"
-msgstr "Nový návrh"
-
-#: src/js/controllers/addresses.js:126
-msgid "New address could not be generated. Please try again."
-msgstr "Nelze vygenerovat novou adresu. Opakujte akci."
-
-#: www/views/add.html:14
-msgid "New personal wallet"
-msgstr "Nová osobní peněženka"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Next steps"
-msgstr "Další kroky"
-
-#: www/views/tab-receive.html:16
-msgid "No Wallet"
-msgstr "Žádná peněženka"
-
-#: src/js/controllers/buyAmazon.js:115
-#: src/js/controllers/buyMercadoLibre.js:115
-msgid "No access key defined"
-msgstr "Nebyl definován přístupový klíč"
-
-#: www/views/onboarding/backupRequest.html:5
-msgid "No backup, no bitcoin."
-msgstr "Žádná záloha, žádný Bitcoin."
-
-#: www/views/addressbook.html:19
-msgid "No contacts yet"
-msgstr "Zatím žádné kontakty"
-
-#: www/views/preferencesLogs.html:16
-msgid "No entries for this log level"
-msgstr "Žádné záznamy pro tuto úroveň logování"
-
-#: www/views/preferencesExternal.html:12
-msgid "No hardware information available."
-msgstr "Žádné informace o hardwaru nejsou k dispozici."
-
-#: www/views/tab-import-hardware.html:3
-msgid "No hardware wallets supported on this device"
-msgstr "Žádné hardwarové peněženky na tomto zařízení nejsou podporovány"
-
-#: www/views/proposals.html:24
-msgid "No pending proposals"
-msgstr "Žádné čekající návrhy"
-
-#: www/views/activity.html:25
-msgid "No recent transactions"
-msgstr "Žádné nedávné transakce"
-
-#: src/js/controllers/buyAmazon.js:44
-#: src/js/controllers/topup.js:47
-msgid "No signing proposal: No private key"
-msgstr "Žádný návrh podpisu: žádný soukromý klíč"
-
-#: www/views/walletDetails.html:204
-msgid "No transactions yet"
-msgstr "Zatím žádné transakce"
-
-#: src/js/controllers/preferencesDelete.js:15
-msgid "No wallet found"
-msgstr "Nenalezena žádná peněženka"
-
-#: src/js/controllers/preferencesDelete.js:8
-msgid "No wallet selected"
-msgstr "Nebyla vybrána žádná peněženka"
-
-#: src/js/controllers/buyAmazon.js:300
-#: src/js/controllers/buyMercadoLibre.js:292
-#: src/js/controllers/confirm.js:85
-#: src/js/controllers/topup.js:265
-msgid "No wallets available"
-msgstr "Žádné peněženky k dispozici"
-
-#: www/views/paperWallet.html:45
-msgid "No wallets available to receive funds"
-msgstr "Žádné peněženky k příjmu peněz"
-
-#: www/views/cashScan.html:15
-msgid "No wallets eligible for Bitcoin Cash support"
-msgstr "Žádné peněženky podporující Bitcoin Cash"
-
-#: src/js/controllers/cashScan.js:58
-msgid "Non BIP44 wallet"
-msgstr "Jiná než BIP44 peněženka"
-
-#: www/views/cashScan.html:46
-msgid "Non eligible BTC wallets"
-msgstr "Peněženky nezpůsobilé pro BTC"
-
-#: src/js/services/feeService.js:12
-msgid "Normal"
-msgstr "Normální"
-
-#: src/js/services/bwcError.js:80
-msgid "Not authorized"
-msgstr "Neautorizováno"
-
-#: src/js/controllers/confirm.js:307
-msgid "Not enough funds for fee"
-msgstr "Nedostatek prostředků pro poplatek"
-
-#: www/views/onboarding/tour.html:50
-msgid "Not even BitPay can access it."
-msgstr "Dokonce ani BitPay k ní nemá přístup."
-
-#: src/js/controllers/paperWallet.js:47
-msgid "Not funds found"
-msgstr "Žádné peníze nenalezeny"
-
-#: www/views/feedback/rateApp.html:3
-#: www/views/onboarding/notifications.html:8
-msgid "Not now"
-msgstr "Teď ne"
-
-#: www/views/includes/output.html:15
-msgid "Note"
-msgstr "Poznámka"
-
-#: www/views/backup.html:19
-msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-msgstr "Poznámka: Pokud byla tato BCH peněženka duplikována z BTC peněženky, obě sdílejí stejnou frázi k obnovení."
-
-#: www/views/modals/wallets.html:25
-msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin"
-msgstr "Upozornění: pouze 1-1 peněženky (s jediným podpisem) lze použít pro prodej Bitcoinu"
-
-#: www/views/preferencesNotifications.html:3
-#: www/views/tab-settings.html:61
-msgid "Notifications"
-msgstr "Oznámení"
-
-#: www/views/onboarding/collectEmail.html:9
-msgid "Notifications by email"
-msgstr "Upozornění emailem"
-
-#: www/views/tx-details.html:117
-msgid "Notify me if confirmed"
-msgstr "Informujte mě, pokud je potvrzena"
-
-#: www/views/preferencesNotifications.html:24
-msgid "Notify me when transactions are confirmed"
-msgstr "Informujte mě při potvrzení transakce"
-
-#: 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 "Nyní je vhodná doba k zálohování Vaší peněženky. Ztratíte-li toto zařízení, není možné bez zálohy přistupovat k Vašim penězům."
-
-#: www/views/backupWarning.html:11
-msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?"
-msgstr "Teď je ideální čas prohlédnout si Vaše okolí. Nedaleká okna? Skryté kamery? Špioni dívající se přes rameno?"
-
-#: src/js/controllers/buyAmazon.js:312
-#: src/js/controllers/topup.js:286
-#: src/js/services/incomingData.js:153
-#: 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 "Oficiální anglické prohlášení"
-
-#: src/js/controllers/feedback/send.js:64
-msgid "Oh no!"
-msgstr "Ach ne!"
-
-#: src/js/controllers/buyMercadoLibre.js:306
-msgid "Ok"
-msgstr "Ok"
-
-#: www/views/tab-home.html:39
-msgid "On this screen you can see all your wallets, accounts, and assets."
-msgstr "Na této obrazovce můžete vidět všechny Vaše peněženky, účty a majetek."
-
-#: src/js/controllers/bitpayCard.js:113
-#: src/js/controllers/cashScan.js:19
-#: src/js/controllers/preferences.js:66
-#: src/js/controllers/preferencesCash.js:33
-#: src/js/controllers/tab-settings.js:52
-#: src/js/controllers/tx-details.js:55
-msgid "Open"
-msgstr "Otevřít"
-
-#: src/js/controllers/preferencesLanguage.js:13
-msgid "Open Crowdin"
-msgstr "Otevřít Crowdin"
-
-#: src/js/controllers/preferencesAbout.js:15
-msgid "Open GitHub"
-msgstr "Otevřít GitHub"
-
-#: src/js/controllers/preferencesAbout.js:13
-msgid "Open GitHub Project"
-msgstr "Otevřít GitHub projekt"
-
-#: src/js/controllers/bitpayCard.js:123
-#: src/js/controllers/tx-details.js:192
-msgid "Open Explorer"
-msgstr "Otevřít Explorer"
-
-#: www/views/tab-scan.html:22
-msgid "Open Settings"
-msgstr "Otevřít nastavení"
-
-#: src/js/controllers/preferencesLanguage.js:11
-msgid "Open Translation Community"
-msgstr "Komunita otevřených překladů"
-
-#: src/js/controllers/onboarding/terms.js:22
-msgid "Open Website"
-msgstr "Otevřít web"
-
-#: src/js/controllers/preferencesCash.js:32
-msgid "Open bitcoincash.org?"
-msgstr "Otevřít bitcoincash.org?"
-
-#: src/js/controllers/cashScan.js:18
-msgid "Open the recovery tool."
-msgstr "Otevřít nástroj pro obnovení."
-
-#: www/views/tab-receive.html:27
-msgid "Open wallet"
-msgstr "Otevřená peněženka"
-
-#: www/views/includes/incomingDataMenu.html:19
-msgid "Open website"
-msgstr "Otevřít web"
-
-#: www/views/bitpayCardIntro.html:34
-msgid "Order the BitPay Card"
-msgstr "Objednat kartu BitPay"
-
-#: www/views/join.html:105
-#: www/views/join.html:96
-#: www/views/tab-create-personal.html:69
-#: www/views/tab-create-personal.html:77
-#: www/views/tab-create-shared.html:106
-#: www/views/tab-create-shared.html:98
-#: www/views/tab-import-file.html:18
-#: www/views/tab-import-phrase.html:41
-msgid "Password"
-msgstr "Heslo"
-
-#: src/js/controllers/import.js:98
-msgid "Password required. Make sure to enter your password in advanced options"
-msgstr "Vyžadováno heslo. Určitě zadejte své heslo v pokročilých možnostech"
-
-#: www/views/join.html:33
-msgid "Paste invitation here"
-msgstr "Zde vložte pozvánku"
-
-#: www/views/tab-import-file.html:13
-msgid "Paste the backup plain text code"
-msgstr "Vložte záložní kód jako prostý text"
-
-#: www/views/bitpayCardIntro.html:28
-msgid "Pay 0% fees to turn bitcoin into dollars."
-msgstr "Plaťte nulové poplatky při změně Bitcoinu na dolary."
-
-#: www/views/modals/paypro.html:18
-msgid "Pay To"
-msgstr "Zaplatit"
-
-#: src/js/controllers/modals/txpDetails.js:51
-#: www/views/modals/tx-status.html:33
-msgid "Payment Accepted"
-msgstr "Platba přijata"
-
-#: www/views/confirm.html:25
-msgid "Payment Expires:"
-msgstr "Platba vyprší:"
-
-#: www/views/modals/txp-details.html:6
-msgid "Payment Proposal"
-msgstr "Návrh platby"
-
-#: www/views/modals/tx-status.html:21
-msgid "Payment Proposal Created"
-msgstr "Vytvořen návrh platby"
-
-#: www/views/tab-home.html:46
-msgid "Payment Proposals"
-msgstr "Návrhy plateb"
-
-#: src/js/services/payproService.js:32
-msgid "Payment Protocol Invalid"
-msgstr "Neplatný platební protokol"
-
-#: src/js/services/payproService.js:18
-msgid "Payment Protocol not supported on Chrome App"
-msgstr "Platební protokol není podporován v aplikaci Chrome"
-
-#: www/views/includes/walletActivity.html:20
-msgid "Payment Received"
-msgstr "Platba přijata"
-
-#: www/views/modals/tx-status.html:43
-#: www/views/modals/txp-details.html:43
-msgid "Payment Rejected"
-msgstr "Platba odmítnuta"
-
-#: src/js/controllers/modals/txpDetails.js:44
-#: www/views/confirm.html:124
-#: www/views/includes/walletActivity.html:11
-#: www/views/modals/txp-details.html:42
-msgid "Payment Sent"
-msgstr "Platba odeslána"
-
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Sdílet tuto transakci"
-
-#: www/views/modals/txp-details.html:32
-msgid "Payment accepted, but not yet broadcasted"
-msgstr "Platba přijata, ale zatím nerozeslána"
-
-#: 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 "Platba přijata. Bude rozeslána pomocí Glidera. V případě problému je možné ji smazat do 6-ti hodin od vytvoření."
-
-#: src/js/services/incomingData.js:152
-msgid "Payment address was translated to new Bitcoin Cash address format:"
-msgstr "Platební adresa byla přeložena do nového formátu adres Bitcoin Cash:"
-
-#: www/views/modals/txp-details.html:107
-msgid "Payment details"
-msgstr "Detaily platby"
-
-#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr "Žádost o platbu"
-
-#: www/views/mercadoLibreCards.html:22
-#: www/views/modals/mercadolibre-card-details.html:39
-msgid "Pending"
-msgstr "Čeká na vyřízení"
-
-#: www/views/proposals.html:4
-msgid "Pending Proposals"
-msgstr "Čekající návrhy"
-
-#: www/views/preferencesDeleteWallet.html:13
-msgid "Permanently delete this wallet."
-msgstr "Trvale odstranit tuto peněženku."
-
-#: src/js/services/profileService.js:403
-msgid "Personal Wallet"
-msgstr "Osobní peněženka"
-
-#: www/views/backup.html:25
-msgid "Please carefully write down this phrase."
-msgstr "Pečlivě si prosím zapište tuto frázi."
-
-#: www/views/tab-scan.html:20
-msgid "Please connect a camera to get started."
-msgstr "Chcete-li začít, připojte prosím fotoaparát."
-
-#: src/js/controllers/import.js:278
-msgid "Please enter the recovery phrase"
-msgstr "Zadejte prosím frázi k obnovení"
-
-#: src/js/controllers/create.js:174
-#: src/js/controllers/join.js:139
-msgid "Please enter the wallet recovery phrase"
-msgstr "Zadejte prosím frázi k obnovení peněženky"
-
-#: www/views/modals/pin.html:9
-msgid "Please enter your PIN"
-msgstr "Zadejte svůj PIN kód"
-
-#: www/views/backup.html:53
-msgid "Please tap each word in the correct order."
-msgstr "Klepněte prosím na každé slovo ve správném pořadí."
-
-#: src/js/services/bwcError.js:101
-msgid "Please upgrade Copay to perform this action"
-msgstr "Aktualizujte prosím Copay k provedení této akce"
-
-#: www/views/walletDetails.html:142
-#: www/views/walletDetails.html:62
-msgid "Please wait"
-msgstr "Čekejte prosím"
-
-#: src/js/controllers/import.js:238
-msgid "Please, select your backup file"
-msgstr "Prosím vyberte svůj soubor zálohy"
-
-#: www/views/bitpayCard.html:81
-msgid "Pre-Auth Holds"
-msgstr "Pre-Auth Holds"
-
-#: www/views/tab-settings.html:40
-msgid "Preferences"
-msgstr "Předvolby"
-
-#: src/js/services/onGoingProcess.js:38
-msgid "Preparing addresses..."
-msgstr "Příprava adres..."
-
-#: src/js/controllers/export.js:198
-msgid "Preparing backup..."
-msgstr "Příprava zálohy..."
-
-#: src/js/routes.js:1264
-msgid "Press again to exit"
-msgstr "Stiskněte znovu pro ukončení"
-
-#: src/js/services/feeService.js:11
-msgid "Priority"
-msgstr "Prioritní"
-
-#: www/views/includes/incomingDataMenu.html:80
-msgid "Private Key"
-msgstr "Soukromý klíč"
-
-#: src/js/controllers/paperWallet.js:136
-msgid "Private key encrypted. Enter password"
-msgstr "Soukromý klíč je šifrován. Zadejte heslo"
-
-#: src/js/services/bwcError.js:35
-msgid "Private key is encrypted, cannot sign"
-msgstr "Soukromý klíč je šifrován, nelze jím podepsat"
-
-#: www/views/includes/walletActivity.html:51
-msgid "Proposal Accepted"
-msgstr "Návrh přijat"
-
-#: src/js/controllers/modals/txpDetails.js:61
-#: src/js/controllers/tx-details.js:78
-#: www/views/confirm.html:125
-msgid "Proposal Created"
-msgstr "Návrh vytvořen"
-
-#: www/views/includes/walletActivity.html:27
-msgid "Proposal Deleted"
-msgstr "Návrh smazán"
-
-#: www/views/includes/walletActivity.html:35
-msgid "Proposal Rejected"
-msgstr "Návrh odmítnut"
-
-#: www/views/walletDetails.html:189
-msgid "Proposals"
-msgstr "Návrhy"
-
-#: src/js/controllers/buyAmazon.js:282
-msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
-msgstr "Částka pro nákup je omezena na {{limitPerDay}} {{currency}} denně"
-
-#: src/js/controllers/buyMercadoLibre.js:281
-msgid "Purchase amount must be a value between 50 and 2000"
-msgstr "Částka pro nákup musí být hodnota od 50 do 2000"
-
-#: www/views/onboarding/notifications.html:3
-msgid "Push Notifications"
-msgstr "Push notifikace"
-
-#: www/views/preferencesNotifications.html:17
-msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app."
-msgstr "Push notifikace pro {{appName}} jsou nyní vypnuty. Povolte je v Nastavení aplikace."
-
-#: www/views/export.html:17
-msgid "QR Code"
-msgstr "QR kód"
-
-#: www/views/onboarding/disclaimer.html:13
-msgid "Quick review!"
-msgstr "Rychlá kontrola!"
-
-#: src/js/controllers/create.js:84
-#: src/js/controllers/join.js:68
-msgid "Random"
-msgstr "Náhodné"
-
-#: www/views/feedback/rateApp.html:14
-msgid "Rate on the app store"
-msgstr "Ohodnotit v obchodě s aplikacemi"
-
-#: www/views/addresses.html:52
-msgid "Read less"
-msgstr "Přečíst méně"
-
-#: www/views/addresses.html:51
-msgid "Read more"
-msgstr "Přečíst více"
-
-#: src/js/controllers/preferences.js:65
-#: src/js/controllers/tx-details.js:54
-msgid "Read more in our Wiki"
-msgstr "Přečíst více na naší Wiki"
-
-#: src/js/controllers/cashScan.js:61
-msgid "Read only wallet"
-msgstr "Peněženka pouze pro čtení"
-
-#: www/views/tab-receive.html:3
-#: www/views/tabs.html:7
-msgid "Receive"
-msgstr "Přijmout"
-
-#: www/views/customAmount.html:44
-msgid "Receive in"
-msgstr "Přijmout do"
-
-#: www/views/includes/walletHistory.html:24
-#: www/views/tx-details.html:18
-msgid "Received"
-msgstr "Přijato"
-
-#: src/js/controllers/tx-details.js:130
-msgid "Received Funds"
-msgstr "Přijmout peníze"
-
-#: www/views/includes/walletHistory.html:57
-#: www/views/tx-details.html:24
-msgid "Receiving"
-msgstr "Přijímání"
-
-#: www/views/bitpayCard.html:60
-#: www/views/includes/walletHistory.html:3
-msgid "Recent"
-msgstr "Nedávné"
-
-#: www/views/advancedSettings.html:21
-msgid "Recent Transaction Card"
-msgstr "Karta nedávných transakcí"
-
-#: www/views/activity.html:4
-#: www/views/tab-home.html:58
-msgid "Recent Transactions"
-msgstr "Nedávné transakce"
-
-#: www/views/amount.html:18
-#: www/views/tab-send.html:9
-msgid "Recipient"
-msgstr "Příjemce"
-
-#: www/views/modals/txp-details.html:62
-msgid "Recipients"
-msgstr "Příjemci"
-
-#: www/views/import.html:12
-msgid "Recovery phrase"
-msgstr "Fráze k obnovení"
-
-#: src/js/services/onGoingProcess.js:26
-msgid "Recreating Wallet..."
-msgstr "Znovuvytváření peněženky..."
-
-#: www/views/modals/mercadolibre-card-details.html:22
-msgid "Redeem now"
-msgstr "Ihned využít"
-
-#: src/js/controllers/modals/txpDetails.js:63
-#: src/js/controllers/tx-details.js:80
-msgid "Rejected"
-msgstr "Odmítnuto"
-
-#: src/js/services/onGoingProcess.js:27
-msgid "Rejecting payment proposal"
-msgstr "Odmítání návrhu platby"
-
-#: www/views/preferencesAbout.html:9
-msgid "Release information"
-msgstr "Informace o vydání"
-
-#: www/views/addressbook.view.html:36
-#: www/views/modals/mercadolibre-card-details.html:69
-msgid "Remove"
-msgstr "Odebrat"
-
-#: src/js/controllers/preferencesBitpayServices.js:7
-msgid "Remove BitPay Account?"
-msgstr "Odebrat účet BitPay?"
-
-#: src/js/controllers/preferencesBitpayServices.js:19
-msgid "Remove BitPay Card?"
-msgstr "Odebrat kartu 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 "Odebráním účtu BitPay odeberete všechna přidružená data účtu BitPay z tohoto zařízení. Opravdu chcete odebrat účet BitPay ({{email}}) z tohoto zařízení?"
-
-#: www/views/join.html:116
-#: www/views/join.html:124
-#: www/views/tab-create-personal.html:86
-#: www/views/tab-create-personal.html:94
-#: www/views/tab-create-shared.html:115
-#: www/views/tab-create-shared.html:123
-#: www/views/tab-export-file.html:17
-msgid "Repeat password"
-msgstr "Opakujte heslo"
-
-#: www/views/tab-export-file.html:16
-msgid "Repeat the password"
-msgstr "Opakujte heslo"
-
-#: www/views/preferences.html:56
-msgid "Request Fingerprint"
-msgstr "Vyžadovat otisk prstu"
-
-#: www/views/tab-receive.html:45
-msgid "Request Specific amount"
-msgstr "Vyžadovat konkrétní částku"
-
-#: www/views/preferences.html:42
-msgid "Request Spending Password"
-msgstr "Vyžadovat heslo pro potvzení platby"
-
-#: www/views/tab-create-shared.html:44
-msgid "Required number of signatures"
-msgstr "Požadovaný počet podpisů"
-
-#: www/views/onboarding/welcome.html:9
-msgid "Restore from backup"
-msgstr "Obnovení ze zálohy"
-
-#: src/js/services/onGoingProcess.js:29
-msgid "Retrieving inputs information"
-msgstr "Načítání informací o vstupech"
-
-#: src/js/controllers/onboarding/tour.js:56
-msgid "Retry"
-msgstr "Opakovat"
-
-#: www/views/tab-scan.html:23
-msgid "Retry Camera"
-msgstr "Opakujte snímání"
-
-#: 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 "Uložit"
-
-#: www/views/tab-scan.html:3
-#: www/views/tabs.html:11
-msgid "Scan"
-msgstr "Skenovat"
-
-#: www/views/tab-scan.html:15
-msgid "Scan QR Codes"
-msgstr "Skenovat kódy QR"
-
-#: www/views/addresses.html:31
-msgid "Scan addresses for funds"
-msgstr "Vyhledat zůstatky na adresách"
-
-#: www/views/modals/fingerprintCheck.html:11
-msgid "Scan again"
-msgstr "Znovu skenovat"
-
-#: src/js/services/fingerprintService.js:56
-msgid "Scan your fingerprint please"
-msgstr "Skenujte prosím svůj otisk prstu"
-
-#: www/views/preferencesCash.html:23
-msgid "Scan your wallets for Bitcoin Cash"
-msgstr "Vyhledat Bitcoin Cash ve svých peněženkách"
-
-#: src/js/services/onGoingProcess.js:30
-msgid "Scanning Wallet funds..."
-msgstr "Vyhledávání zůstatků peněženky..."
-
-#: www/views/includes/walletList.html:11
-msgid "Scanning funds..."
-msgstr "Vyhledávání zůstatků..."
-
-#: www/views/includes/screenshotWarningModal.html:7
-msgid "Screenshots are not secure"
-msgstr "Screenshoty nejsou bezpečné"
-
-#: www/views/modals/search.html:6
-msgid "Search Transactions"
-msgstr "Vyhledávání transakcí"
-
-#: www/views/tab-send.html:13
-msgid "Search or enter bitcoin address"
-msgstr "Vyhledat nebo zadat Bitcoin adresu"
-
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Schránka"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Vaše schránka je prázdná"
-
-#: www/views/modals/search.html:16
-msgid "Search transactions"
-msgstr "Vyhledávání transakcí"
-
-#: www/views/preferencesAltCurrency.html:14
-msgid "Search your currency"
-msgstr "Vyhledat Vaši měnu"
-
-#: www/views/preferences.html:30
-msgid "Security"
-msgstr "Bezpečnost"
-
-#: www/views/modals/mercadolibre-card-details.html:64
-msgid "See invoice"
-msgstr "Prohlédnout fakturu"
-
-#: www/views/tab-import-file.html:7
-msgid "Select a backup file"
-msgstr "Vyberte soubor zálohy"
-
-#: src/js/controllers/tab-receive.js:139
-msgid "Select a wallet"
-msgstr "Zvolte peněženku"
-
-#: www/views/modals/paypro.html:38
-msgid "Self-signed Certificate"
-msgstr "Certifikát podepsaný svým držitelem"
-
-#: src/js/services/onGoingProcess.js:41
-msgid "Selling Bitcoin..."
-msgstr "Prodej Bitcoinu..."
-
-#: 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 "Odeslat"
-
-#: www/views/feedback/send.html:3
-#: www/views/tab-settings.html:29
-msgid "Send Feedback"
-msgstr "Odeslat zpětnou vazbu"
-
-#: www/views/addressbook.view.html:31
-msgid "Send Money"
-msgstr "Poslat peníze"
-
-#: www/views/allAddresses.html:19
-msgid "Send addresses by email"
-msgstr "Poslat adresy e-mailem"
-
-#: www/views/includes/logOptions.html:17
-#: www/views/tab-export-file.html:82
-msgid "Send by email"
-msgstr "Poslat e-mailem"
-
-#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
-msgid "Send from"
-msgstr "Odeslat z"
-
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Odeslat"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Vložit ze schránky"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Vložit adresu"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Přenos mezi peněženkami"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Skenovat QR kód"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Odesílejte Bitcoin rychleji!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Uložte si často používané adresy a posílejte jim Bitcoin jedním kliknutím"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Přidat váš první kontakt"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Vaše Bitcoin peněženka je prázdná"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Chcete-li začít, nakupte Bitcoin Cash (BCH) nebo Bitcoin Core (BTC), nebo sdílejte svou adresu."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "Můžete přijímat Bitcoin z jakékoliv peněženky nebo služby."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr "Chcete-li začít, budete muset vytvořit Bitcoin peněženku a Bitcoin získat."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Koupit Bitcoin"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Zobrazit mou adresu"
-
-#: www/views/includes/itemSelector.html:8
-msgid "Send max amount"
-msgstr "Odeslat maximální částku"
-
-#: www/views/includes/incomingDataMenu.html:46
-msgid "Send payment to this address"
-msgstr "Odeslat platbu na tuto adresu"
-
-#: www/views/feedback/rateApp.html:17
-msgid "Send us feedback instead"
-msgstr "Pošlete nám místo toho zpětnou vazbu"
-
-#: 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 "Odesílání"
-
-#: src/js/services/onGoingProcess.js:39
-msgid "Sending 2FA code..."
-msgstr "Odesílání 2FA kódu..."
-
-#: src/js/services/onGoingProcess.js:36
-msgid "Sending feedback..."
-msgstr "Odesílání zpětné vazby..."
-
-#: www/views/confirm.html:16
-msgid "Sending maximum amount"
-msgstr "Odesílání maximální částky"
-
-#: src/js/services/onGoingProcess.js:31
-msgid "Sending transaction"
-msgstr "Odesílání transakce"
-
-#: src/js/controllers/confirm.js:545
-msgid "Sending {{amountStr}} from your {{name}} wallet"
-msgstr "Odesílání {{amountStr}} z Vaší {{name}} peněženky"
-
-#: 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 "Odesláno"
-
-#: src/js/controllers/tx-details.js:129
-msgid "Sent Funds"
-msgstr "Odeslané peníze"
-
-#: src/js/services/bwcError.js:38
-msgid "Server response could not be verified"
-msgstr "Odpověď serveru nemohla být ověřena"
-
-#: src/js/controllers/buyAmazon.js:97
-#: src/js/controllers/buyMercadoLibre.js:97
-msgid "Service not available"
-msgstr "Služba není k dispozici"
-
-#: www/views/includes/homeIntegrations.html:3
-msgid "Services"
-msgstr "Služby"
-
-#: www/views/preferencesLogs.html:3
-msgid "Session Log"
-msgstr "Záznamy relací"
-
-#: www/views/preferencesAbout.html:35
-msgid "Session log"
-msgstr "Záznamy relací"
-
-#: www/views/tab-export-file.html:10
-msgid "Set up a password"
-msgstr "Nastavit heslo"
-
-#: src/js/controllers/preferencesFee.js:85
-msgid "Set your own fee in satoshis/byte"
-msgstr "Nastavte si svou vlastní výši poplatku v satoshi/byte"
-
-#: www/views/tab-settings.html:3
-#: www/views/tabs.html:19
-msgid "Settings"
-msgstr "Nastavení"
-
-#: www/views/feedback/complete.html:17
-#: www/views/feedback/complete.html:26
-msgid "Share the love by inviting your friends."
-msgstr "Sdílejte pozváním svých přátel."
-
-#: www/views/copayers.html:20
-msgid "Share this invitation with your copayers"
-msgstr "Sdílejte tuto pozvánku se svými spoluplátci"
-
-#: src/js/controllers/feedback/complete.js:5
-#: www/views/tab-settings.html:36
-msgid "Share {{appName}}"
-msgstr "Sdílet {{appName}}"
-
-#: www/views/tab-import-hardware.html:24
-msgid "Shared Wallet"
-msgstr "Sdílená peněženka"
-
-#: www/views/preferencesExternal.html:34
-msgid "Show Recovery Phrase"
-msgstr "Zobrazit frázi k obnovení"
-
-#: www/views/tab-receive.html:34
-msgid "Show address"
-msgstr "Zobrazit adresu"
-
-#: www/views/join.html:48
-#: www/views/tab-create-personal.html:27
-#: www/views/tab-create-shared.html:56
-#: www/views/tab-export-file.html:24
-#: www/views/tab-import-file.html:29
-#: www/views/tab-import-hardware.html:30
-#: www/views/tab-import-phrase.html:35
-msgid "Show advanced options"
-msgstr "Zobrazit pokročilé možnosti"
-
-#: www/views/tab-send.html:37
-msgid "Show bitcoin address"
-msgstr "Zobrazit Bitcoin adresu"
-
-#: www/views/tab-send.html:59
-msgid "Show more"
-msgstr "Zobrazit více"
-
-#: src/js/services/bwcError.js:104
-msgid "Signatures rejected by server"
-msgstr "Podpisy odmítnuty serverem"
-
-#: src/js/services/onGoingProcess.js:32
-msgid "Signing transaction"
-msgstr "Podepisování transakce"
-
-#: 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 "Jelikož jen Vy kontrolujete své peníze, budete potřebovat uschovat svou zálohovací frázi pro případ, že bude aplikace smazána."
-
-#: www/views/tab-create-personal.html:122
-#: www/views/tab-create-shared.html:151
-msgid "Single Address Wallet"
-msgstr "Peněženka s jedinou adresou"
-
-#: www/views/onboarding/collectEmail.html:40
-#: www/views/onboarding/tour.html:11
-msgid "Skip"
-msgstr "Přeskočit"
-
-#: src/js/controllers/confirm.js:371
-#: src/js/controllers/modals/txpDetails.js:47
-msgid "Slide to accept"
-msgstr "Tažením potvrďte"
-
-#: www/views/buyAmazon.html:96
-msgid "Slide to buy"
-msgstr "Tažením nakupte"
-
-#: src/js/controllers/confirm.js:365
-msgid "Slide to pay"
-msgstr "Tažením zaplaťte"
-
-#: src/js/controllers/confirm.js:377
-#: src/js/controllers/modals/txpDetails.js:40
-msgid "Slide to send"
-msgstr "Tažením odešlete"
-
-#: www/views/cashScan.html:56
-msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-msgstr "Některé Vaše peněženky nepodporují Bitcoin Cash. Můžete se pokusit získat přístup k BCH prostředkům této peněženky pomocí"
-
-#: src/js/controllers/create.js:88
-#: src/js/controllers/join.js:71
-msgid "Specify Recovery Phrase..."
-msgstr "Zadejte frázi k obnovení..."
-
-#: src/js/services/bwcError.js:92
-msgid "Spend proposal is not accepted"
-msgstr "Návrh platby není přijat"
-
-#: src/js/services/bwcError.js:95
-msgid "Spend proposal not found"
-msgstr "Návrh platby nenalezen"
-
-#: src/js/services/bwcError.js:137
-msgid "Spending Password needed"
-msgstr "Nutné heslo pro potvrzení platby"
-
-#: www/views/walletDetails.html:173
-msgid "Spending this balance will need significant Bitcoin network fees"
-msgstr "Platba tohoto zůstatku bude vyžadovat značné poplatky sítě Bitcoin"
-
-#: www/views/tab-send.html:28
-msgid "Start sending bitcoin"
-msgstr "Začněte odesílat Bitcoin"
-
-#: www/views/lockSetup.html:3
-msgid "Startup Lock"
-msgstr "Zámek po spuštění"
-
-#: www/views/mercadoLibreCards.html:21
-#: www/views/modals/mercadolibre-card-details.html:42
-msgid "Still pending"
-msgstr "Stále se zpracovává"
-
-#: www/views/topup.html:101
-msgid "Success"
-msgstr "Úspěch"
-
-#: src/js/services/feeService.js:14
-msgid "Super Economy"
-msgstr "Velmi ekonomická"
-
-#: www/views/preferencesCash.html:11
-msgid "Support Bitcoin Cash"
-msgstr "Podporujte Bitcoin Cash"
-
-#: www/views/paperWallet.html:7
-msgid "Sweep"
-msgstr "Sweep"
-
-#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Sweep papírové peněženky"
-
-#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
-msgstr "Sweep papírové peněženky"
-
-#: src/js/services/onGoingProcess.js:33
-msgid "Sweeping Wallet..."
-msgstr "Probíhá sweep peněženky..."
-
-#: www/views/preferencesDeleteWallet.html:16
-msgid "THIS ACTION CANNOT BE REVERSED"
-msgstr "NEODVRATITELNÁ AKCE"
-
-#: www/views/onboarding/welcome.html:5
-msgid "Take control of your money, get started with bitcoin."
-msgstr "Převezměte kontrolu nad svými penězi, začněte používat Bitcoin."
-
-#: www/views/walletDetails.html:132
-#: www/views/walletDetails.html:52
-msgid "Tap and hold to show"
-msgstr "Dotykem a přidržením zobrazte"
-
-#: www/views/includes/walletInfo.html:3
-msgid "Tap to recreate"
-msgstr "Dotykem znovuvytvoříte"
-
-#: www/views/includes/walletInfo.html:4
-msgid "Tap to retry"
-msgstr "Dotykem zopakujte"
-
-#: www/views/termsOfUse.html:3
-msgid "Terms Of Use"
-msgstr "Podmínky použití"
-
-#: 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 "Podmínky použití"
-
-#: www/views/tab-create-personal.html:118
-#: www/views/tab-import-phrase.html:68
-msgid "Testnet"
-msgstr "Zkušební síť"
-
-#: www/views/includes/incomingDataMenu.html:61
-msgid "Text"
-msgstr "Text"
-
-#: 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 "Děkujeme!"
-
-#: src/js/controllers/feedback/send.js:72
-msgid "Thanks!"
-msgstr "Díky!"
-
-#: 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 "To rádi slyšíme. Jak bychom mohli zlepšit Váš dojem, abychom od Vás získali pátou hvězdu?"
-
-#: src/js/services/ledger.js:152
-msgid "The Ledger Chrome application is not installed"
-msgstr "Chrome aplikace Ledger není nainstalována"
-
-#: www/views/modals/wallet-balance.html:55
-msgid "The amount of bitcoin immediately spendable from this wallet."
-msgstr "Částka, kterou lze okamžitě utratit z této peněženky."
-
-#: 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 "Množství Bitcoinu v této peněžence, které je alokováno pro vstupy Vašich čekajících návrhů transakcí. Částka je sečtena ze všech UTXO spojených s touto peněženkou a může být vyšší než skutečné množství spojené s Vašimi čekajícími návrhy transakcí."
-
-#: www/views/modals/wallet-balance.html:74
-msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation."
-msgstr "Množství Bitcoinu v této peněžence s méně než 1 potvrzením blockchainu."
-
-#: www/views/tab-import-phrase.html:5
-msgid "The derivation path"
-msgstr "Cesta pro odvození"
-
-#: www/views/onboarding/tour.html:37
-msgid "The exchange rate changes with the market."
-msgstr "Směnný kurz se mění s trhem."
-
-#: 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 "Čím větší je poplatek, tím více je těžař motivován zahrnout transakci do příštího bloku. Aktuální výše poplatku se získává podle zatížení sítě a zvolené politiky."
-
-#: 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 "Bylo dosaženo maximálního počtu po sobě jdoucích nepoužitých adres (20). Jakmile jedna z nepoužitých adres obdrží platbu, bude vygenerována nová adresa a zobrazena na kartě Přijmout."
-
-#: src/js/controllers/onboarding/terms.js:21
-msgid "The official English Terms of Service are available on the BitPay website."
-msgstr "Oficiální anglické Podmínky služby jsou k dispozici na stránkách BitPay."
-
-#: www/views/tab-import-phrase.html:4
-msgid "The password of the recovery phrase (if set)"
-msgstr "Heslo fráze k obnovení (pokud je nastaveno)"
-
-#: src/js/services/walletService.js:1139
-msgid "The payment was created but could not be completed. Please try again from home screen"
-msgstr "Platba byla vytvořena, ale nelze ji dokončit. Prosím zkuste to znovu z obrazovky Domů"
-
-#: www/views/modals/txp-details.html:26
-msgid "The payment was removed by creator"
-msgstr "Platba byla odebrána tvůrcem"
-
-#: www/views/join.html:91
-#: www/views/tab-create-personal.html:63
-#: www/views/tab-create-shared.html:92
-#: www/views/tab-import-phrase.html:43
-msgid "The recovery phrase could require a password to be imported"
-msgstr "Import pomocí fráze k obnovení může vyžadovat heslo"
-
-#: src/js/services/bwcError.js:56
-msgid "The request could not be understood by the server"
-msgstr "Žádost není srozumitelná serverem"
-
-#: 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 obnovení se zastaví po vygenerování 20-ti po sobě jdoucích nevyužitých adres, které ještě neobsahují žádné peníze. Chcete-li bezpečně vygenerovat další adresy, proveďte platbu na jednu z nevyužitých adres, které již vygenerovány byly."
-
-#: src/js/services/bwcError.js:98
-msgid "The spend proposal is not pending"
-msgstr "Návrh platby se nezpracovává"
-
-#: www/views/modals/wallet-balance.html:36
-msgid "The total amount of bitcoin stored in this wallet."
-msgstr "Celková hodnota Bitcoinu uložená v této peněžence."
-
-#: 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 "Transakční historie a každá nová příchozí transakce je dočasně uložena v aplikaci. Tato možnost data vyčistí a znovu synchronizuje se serverem"
-
-#: www/views/tab-import-phrase.html:6
-msgid "The wallet service URL"
-msgstr "URL služby pro peněženky"
-
-#: src/js/controllers/tab-home.js:38
-msgid "There is a new version of {{appName}} available"
-msgstr "Je k dispozici nová verze {{appName}}"
-
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:335
-msgid "There is an error in the form"
-msgstr "Ve formuláři je chyba"
-
-#: src/js/controllers/feedback/send.js:61
-#: src/js/controllers/feedback/send.js:65
-msgid "There's obviously something we're doing wrong."
-msgstr "Očividně něco děláme špatně."
-
-#: src/js/controllers/feedback/rateCard.js:38
-msgid "This app is fantastic!"
-msgstr "Tato aplikace je fantastická!"
-
-#: www/views/onboarding/tour.html:47
-msgid "This app stores your bitcoin with cutting-edge security."
-msgstr "Tato aplikace k držení Vašich Bitcoinů používá nejmodernější zabezpečení."
-
-#: src/js/controllers/confirm.js:523
-msgid "This bitcoin payment request has expired."
-msgstr "Tato platba vypršela."
-
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "Platba vyprší:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "Platnost žádosti o platbu vypršela"
-
-#: www/views/join.html:133
-#: www/views/tab-create-personal.html:103
-#: www/views/tab-create-shared.html:132
-msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds."
-msgstr "Toto heslo nelze obnovit. V případě ztráty hesla neexistuje žádný způsob, jak byste mohli obnovit své finanční prostředky."
-
-#: www/views/backup.html:31
-msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed."
-msgstr "Tato fráze k obnovení byla vytvořena s heslem. K obnovení této peněženky je třeba jak fráze, tak heslo."
-
-#: www/views/tx-details.html:91
-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 "Tato částka transakce je příliš malá ve srovnání s aktuálními poplatky sítě Bitcoin. Zaplacení této částky bude potřebovat výši poplatků srovnatelnou s částkou samotnou."
-
-#: www/views/tx-details.html:87
-msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender"
-msgstr "Potvrzení této transakce může trvat dlouho nebo může být transakce odmítnuta kvůli nízkému poplatku od odesílatele"
-
-#: www/views/walletDetails.html:109
-#: www/views/walletDetails.html:29
-msgid "This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information."
-msgstr "Tato peněženka není registrována u dané Bitcore Wallet Service (BWS) služby. Můžete ji znovu vytvořit z místních informací."
-
-#: www/views/modals/txp-details.html:136
-#: www/views/tx-details.html:121
-msgid "Timeline"
-msgstr "Časová osa"
-
-#: www/views/confirm.html:31
-#: www/views/includes/output.html:2
-#: www/views/modals/txp-details.html:109
-#: www/views/modals/txp-details.html:53
-#: www/views/tx-details.html:41
-#: www/views/tx-details.html:53
-msgid "To"
-msgstr "Na"
-
-#: 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 "Chcete-li začít, nakupte Bitcoin nebo sdílejte svou adresu. Můžete přijímat Bitcoin z jakékoliv jiné peněženky nebo služby."
-
-#: src/js/services/bitpayAccountService.js:73
-msgid "To {{reason}} you must first add your BitPay account - {{email}}"
-msgstr "Pro {{reason}} musíte nejprve přidat Váš účet BitPay - {{email}}"
-
-#: src/js/services/onGoingProcess.js:48
-msgid "Top up in progress..."
-msgstr "Navyšování v průběhu..."
-
-#: src/js/controllers/topup.js:206
-msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-msgstr "Navýšit debetní kartu ({{cardLastNumber}}) o {{amountStr}}"
-
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "Spustit ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Vyměňte BTC za BCH za několik minut."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Ke spuštění procesu musíte do peněženky přidat prostředky."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "Tento proces je rychlý a vyměněnou částku dostanete do peněženky."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Tuto službu poskytuje nezávislý poskytovatel ShapeShift, který za službu účtuje malý poplatek. Poplatek se zobrazí před spuštěním transakce."
-
-#: www/views/buyAmazon.html:61
-#: www/views/buyMercadoLibre.html:60
-#: www/views/modals/wallet-balance.html:23
-#: www/views/topup.html:70
-msgid "Total"
-msgstr "Celkem"
-
-#: www/views/walletDetails.html:196
-msgid "Total Locked Balance"
-msgstr "Celkový uzamčený zůstatek"
-
-#: www/views/tab-create-shared.html:35
-msgid "Total number of copayers"
-msgstr "Celkový počet spoluplátců"
-
-#: www/views/addresses.html:81
-msgid "Total wallet inputs"
-msgstr "Celkové vstupy peněženky"
-
-#: src/js/services/fingerprintService.js:63
-#: src/js/services/fingerprintService.js:68
-msgid "Touch ID Failed"
-msgstr "Touch ID se nezdařilo"
-
-#: src/js/controllers/tx-details.js:12
-msgid "Transaction"
-msgstr "Transakce"
-
-#: www/views/confirm.html:126
-msgid "Transaction Created"
-msgstr "Transakce vytvořena"
-
-#: www/views/preferencesAdvanced.html:29
-#: www/views/preferencesHistory.html:3
-msgid "Transaction History"
-msgstr "Transakční historie"
-
-#: src/js/services/bwcError.js:83
-msgid "Transaction already broadcasted"
-msgstr "Transakce byla již rozeslána"
-
-#: src/js/controllers/buyAmazon.js:308
-#: src/js/controllers/buyMercadoLibre.js:301
-#: src/js/controllers/topup.js:281
-msgid "Transaction has not been created"
-msgstr "Transakce nebyla vytvořena"
-
-#: www/views/topup.html:104
-msgid "Transaction initiated"
-msgstr "Transakce zahájena"
-
-#: src/js/controllers/tx-details.js:119
-msgid "Transaction not available at this time"
-msgstr "Transakce v současné době není k dispozici"
-
-#: src/js/controllers/activity.js:45
-#: src/js/controllers/tab-home.js:174
-msgid "Transaction not found"
-msgstr "Transakce nebyla nalezena"
-
-#: www/views/modals/chooseFeeLevel.html:55
-msgid "Transactions without fee are not supported."
-msgstr "Transakce bez zahrnutého poplatku nejsou podporovány."
-
-#: src/js/controllers/paperWallet.js:109
-msgid "Transfer to"
-msgstr "Přenos do"
-
-#: www/views/tab-send.html:67
-msgid "Transfer to Wallet"
-msgstr "Převést do peněženky"
-
-#: www/views/modals/pin.html:13
-msgid "Try again in {{expires}}"
-msgstr "Opakujte akci za {{expires}}"
-
-#: www/views/bitpayCardIntro.html:18
-msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted."
-msgstr "Proměňte Bitcoin na dolary, použijte je kdekoliv, kde je akceptována Visa® ."
-
-#: www/views/tab-import-phrase.html:17
-msgid "Type the Recovery Phrase (usually 12 words)"
-msgstr "Zadejte frázi k obnovení (obvykle 12 slov)"
-
-#: src/js/controllers/backup.js:75
-msgid "Uh oh..."
-msgstr "Ale ne..."
-
-#: www/views/tx-details.html:100
-msgid "Unconfirmed"
-msgstr "Nepotvrzeno"
-
-#: www/views/walletDetails.html:190
-msgid "Unsent transactions"
-msgstr "Neodeslané transakce"
-
-#: www/views/addresses.html:39
-msgid "Unused Addresses"
-msgstr "Nevyužité adresy"
-
-#: www/views/addresses.html:50
-msgid "Unused Addresses Limit"
-msgstr "Limit pro nevyužité adresy"
-
-#: src/js/controllers/tab-home.js:146
-msgid "Update Available"
-msgstr "Aktualizace k dispozici"
-
-#: www/views/proposals.html:14
-msgid "Updating pending proposals. Please stand by"
-msgstr "Aktualizace čekajících návrhů. Počkejte prosím"
-
-#: www/views/walletDetails.html:217
-msgid "Updating transaction history. Please stand by."
-msgstr "Aktualizace historie transakcí. Prosíme o strpení."
-
-#: www/views/activity.html:14
-msgid "Updating... Please stand by"
-msgstr "Probíhá aktualizace... Počkejte prosím"
-
-#: src/js/services/feeService.js:10
-msgid "Urgent"
-msgstr "Naléhavé"
-
-#: www/views/advancedSettings.html:12
-msgid "Use Unconfirmed Funds"
-msgstr "Používat nepotrvzené peníze"
-
-#: src/js/services/onGoingProcess.js:34
-msgid "Validating recovery phrase..."
-msgstr "Ověření fráze k obnovení..."
-
-#: www/views/modals/fingerprintCheck.html:4
-msgid "Verify your identity"
-msgstr "Ověření Vaší identity"
-
-#: www/views/preferencesAbout.html:14
-#: www/views/preferencesExternal.html:25
-msgid "Version"
-msgstr "Verze"
-
-#: www/views/tab-export-file.html:69
-msgid "View"
-msgstr "Zobrazit"
-
-#: www/views/addresses.html:34
-msgid "View All Addresses"
-msgstr "Zobrazit všechny adresy"
-
-#: src/js/controllers/onboarding/terms.js:20
-msgid "View Terms of Service"
-msgstr "Zobrazit Podmínky použití"
-
-#: src/js/controllers/bitpayCard.js:122
-#: src/js/controllers/tx-details.js:191
-msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Zobrazit transakci na Explorer.Bitcoin.com"
-
-#: src/js/controllers/tab-home.js:148
-msgid "View Update"
-msgstr "Zobrazit aktualizaci"
-
-#: www/views/tx-details.html:147
-msgid "View on blockchain"
-msgstr "Zobrazit na blockchainu"
-
-#: www/views/mercadoLibre.html:26
-msgid "Visit mercadolivre.com.br →"
-msgstr "Navštivte mercadolivre.com.br →"
-
-#: www/views/walletDetails.html:182
-msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet."
-msgstr "Upozornění: Odvozování klíče v této peněžence / zařízení nefunguje. Akce nelze v této peněžence provést."
-
-#: 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 "Upozornění: Nezahrnutí soukromého klíče umožňuje exportu kontrolovat zůstatek peněženky, historii transakcí a vytvářet návrhy plateb. Avšak není umožněno návrhy schvalovat (podepisovat), takže finanční prostředky nebudou z exportu přístupné ."
-
-#: 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 "Upozornění: Soukromý klíč této peněženky není k dispozici. Export umožňuje kontrolovat zůstatek peněženky, historii transakcí a vytvářet návrhy plateb. Avšak není možné návrhy schvalovat (podepisovat), takže finanční prostředky nebudou z exportu přístupné ."
-
-#: www/views/modals/paypro.html:42
-msgid "WARNING: UNTRUSTED CERTIFICATE"
-msgstr "Upozornění: Nedůvěryhodný certifikát"
-
-#: src/js/services/onGoingProcess.js:15
-msgid "Waiting for Ledger..."
-msgstr "Čekání na Ledger..."
-
-#: src/js/services/onGoingProcess.js:16
-msgid "Waiting for Trezor..."
-msgstr "Čekání na Trezor..."
-
-#: www/views/copayers.html:48
-msgid "Waiting for copayers"
-msgstr "Čekání na spoluplátce"
-
-#: www/views/copayers.html:53
-msgid "Waiting..."
-msgstr "Čeká..."
-
-#: www/views/addresses.html:3
-#: www/views/preferencesAdvanced.html:17
-msgid "Wallet Addresses"
-msgstr "Adresy peněženky"
-
-#: www/views/preferencesColor.html:4
-msgid "Wallet Color"
-msgstr "Barva peněženky"
-
-#: www/views/preferencesInformation.html:29
-msgid "Wallet Configuration (m-n)"
-msgstr "Nastavení peněženky (m-n)"
-
-#: www/views/onboarding/collectEmail.html:5
-msgid "Wallet Created"
-msgstr "Peněženka vytvořena"
-
-#: www/views/preferencesInformation.html:23
-msgid "Wallet Id"
-msgstr "ID peněženky"
-
-#: www/views/preferencesAdvanced.html:13
-#: www/views/preferencesInformation.html:3
-msgid "Wallet Information"
-msgstr "Informace o peněžence"
-
-#: www/views/addresses.html:76
-msgid "Wallet Inputs"
-msgstr "Vstupy peněženky"
-
-#: www/views/join.html:26
-msgid "Wallet Invitation"
-msgstr "Pozvánka do peněženky"
-
-#: www/views/join.html:60
-#: www/views/tab-create-personal.html:38
-#: www/views/tab-create-shared.html:67
-msgid "Wallet Key"
-msgstr "Klíč peněženky"
-
-#: www/views/preferencesAlias.html:4
-msgid "Wallet Name"
-msgstr "Jméno peněženky"
-
-#: www/views/preferencesInformation.html:11
-msgid "Wallet Name (at creation)"
-msgstr "Jméno peněženky (při vytvoření)"
-
-#: www/views/preferencesInformation.html:35
-msgid "Wallet Network"
-msgstr "Síť peněženky"
-
-#: www/views/join.html:77
-#: www/views/tab-create-personal.html:50
-#: www/views/tab-create-shared.html:79
-msgid "Wallet Recovery Phrase"
-msgstr "Fráze k obnovení peněženky"
-
-#: src/js/services/bwcError.js:26
-msgid "Wallet Recovery Phrase is invalid"
-msgstr "Neplatná fráze k obnovení peněženky"
-
-#: www/views/preferencesAdvanced.html:25
-#: www/views/tab-import-phrase.html:73
-msgid "Wallet Service URL"
-msgstr "URL služby pro peněženky"
-
-#: www/views/preferences.html:4
-msgid "Wallet Settings"
-msgstr "Nastavení peněženky"
-
-#: www/views/tab-import-hardware.html:11
-#: www/views/tab-import-phrase.html:61
-msgid "Wallet Type"
-msgstr "Typ peněženky"
-
-#: src/js/services/bwcError.js:59
-msgid "Wallet already exists"
-msgstr "Peněženka již existuje"
-
-#: src/js/services/profileService.js:516
-msgid "Wallet already in {{appName}}"
-msgstr "Peněženka již je v {{appName}}"
-
-#: www/views/includes/walletActivity.html:6
-msgid "Wallet created"
-msgstr "Peněženka vytvořena"
-
-#: www/views/copayers.html:58
-msgid "Wallet incomplete and broken"
-msgstr "Neúplná a rozbitá peněženka"
-
-#: src/js/services/bwcError.js:65
-msgid "Wallet is full"
-msgstr "Plná peněženka"
-
-#: src/js/services/bwcError.js:125
-msgid "Wallet is locked"
-msgstr "Peněženka uzamčena"
-
-#: src/js/services/bwcError.js:128
-msgid "Wallet is not complete"
-msgstr "Nedokončená peněženka"
-
-#: www/views/tab-create-personal.html:12
-#: www/views/tab-create-shared.html:12
-msgid "Wallet name"
-msgstr "Jméno peněženky"
-
-#: src/js/services/bwcError.js:131
-msgid "Wallet needs backup"
-msgstr "Peněženka potřebuje zálohovat"
-
-#: www/views/tab-receive.html:59
-#: www/views/walletDetails.html:169
-msgid "Wallet not backed up"
-msgstr "Peněženka není zálohována"
-
-#: src/js/services/bwcError.js:68
-msgid "Wallet not found"
-msgstr "Peněženka nenalezena"
-
-#: src/js/controllers/cashScan.js:81
-#: src/js/controllers/tab-home.js:230
-msgid "Wallet not registered"
-msgstr "Neregistrovaná peněženka"
-
-#: 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 "Peněženka není zaregistrována ve službě pro peněženky. Znovu ji vytvořte z \"Vytvořit peněženku\" použitím \"Pokročilé možnosti\" pro nastavení fráze k obnovení"
-
-#: www/views/backup.html:12
-msgid "Wallet recovery phrase not available"
-msgstr "Fráze k obnovení peněženky není k dispozici"
-
-#: src/js/services/bwcError.js:50
-msgid "Wallet service not found"
-msgstr "Nenalezena služba pro peněženky"
-
-#: www/views/tab-home.html:69
-msgid "Wallets"
-msgstr "Peněženky"
-
-#: src/js/controllers/addressbookView.js:36
-#: src/js/controllers/modals/txpDetails.js:153
-#: src/js/controllers/modals/txpDetails.js:170
-#: src/js/controllers/preferencesDelete.js:24
-#: src/js/controllers/preferencesExternal.js:14
-#: www/views/preferencesDeleteWallet.html:11
-msgid "Warning!"
-msgstr "Varování!"
-
-#: www/views/modals/txp-details.html:47
-msgid "Warning: this transaction has unconfirmed inputs"
-msgstr "Varování: Tato transakce má nepotvrzené vstupy"
-
-#: src/js/controllers/onboarding/backupRequest.js:17
-msgid "Watch out!"
-msgstr "Dávejte si pozor!"
-
-#: src/js/controllers/feedback/send.js:69
-msgid "We'd love to do better."
-msgstr "Rádi bychom se zlepšili."
-
-#: www/views/backup.html:35
-msgid "We'll confirm on the next screen."
-msgstr "Potvrzení bude na následující obrazovce."
-
-#: src/js/controllers/feedback/send.js:77
-msgid "We're always looking for ways to improve {{appName}}."
-msgstr "Neustále hledáme způsoby, jak zdokonalit {{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 "Neustále hledáme způsoby, jak zdokonalit {{appName}}. Jak bychom mohli zlepšit Váš dojem?"
-
-#: www/views/includes/incomingDataMenu.html:6
-msgid "Website"
-msgstr "Webové stránky"
-
-#: 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 "Vždy uvítáme přispěvatele k překladům! Můžete provádět opravy nebo zpřístupnit tuto aplikaci ve svém rodném jazyce tím, že se připojíte k naší Crowdin komunitě."
-
-#: www/views/preferencesAlias.html:11
-msgid "What do you call this wallet?"
-msgstr "Jak říkáte této peněžence?"
-
-#: 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 "Když byla tato peněženka vytvořena, jmenovala se “{{walletName}}”. Název zobrazený na tomto zařízení můžete změnit níže."
-
-#: www/views/onboarding/collectEmail.html:10
-msgid "Where would you like to receive email notifications about payments?"
-msgstr "Kam si přejete odesílat e-mailová upozornění o platbách?"
-
-#: www/views/addresses.html:19
-msgid "Why?"
-msgstr "Proč?"
-
-#: www/views/feedback/rateApp.html:10
-msgid "Would you be willing to rate {{appName}} in the app store?"
-msgstr "Byl byste ochoten ohodnotit {{appName}} v obchodě s aplikacemi?"
-
-#: www/views/onboarding/notifications.html:4
-msgid "Would you like to receive push notifications about payments?"
-msgstr "Přejete si dostávat push notifikace o platbách?"
-
-#: src/js/controllers/import.js:288
-msgid "Wrong number of recovery words:"
-msgstr "Chybný počet slov k obnovení:"
-
-#: src/js/services/bwcError.js:140
-msgid "Wrong spending password"
-msgstr "Chybné heslo pro potvrzení platby"
-
-#: www/views/modals/confirmation.html:7
-msgid "Yes"
-msgstr "Ano"
-
-#: src/js/controllers/onboarding/backupRequest.js:25
-msgid "Yes, skip"
-msgstr "Ano, přeskočit"
-
-#: src/js/controllers/onboarding/backupRequest.js:24
-msgid "You can create a backup later from your wallet settings."
-msgstr "Zálohu můžete vytvořit později v nastavení peněženky."
-
-#: 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 "Můžete přispívat přihlášením k webovým stránkám Crowdin komunity pro překlady. Těšíme se na Vaše příspěvky!"
-
-#: www/views/tab-scan.html:16
-msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more."
-msgstr "Můžete skenovat Bitcoin adresy, žádosti k zaplacení, papírové peněženky a další."
-
-#: 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 "Nejnovější vývoj a příspěvky k této open-source aplikaci můžete vidět v našem projektu na GitHub."
-
-#: www/views/onboarding/tour.html:19
-msgid "You can spend bitcoin at millions of websites and stores worldwide."
-msgstr "Bitcoin můžete utratit na milionech webových stránek a v obchodech po celém světě."
-
-#: www/views/backup.html:15
-msgid "You can still export it from Advanced > Export."
-msgstr "Později můžete exportovat z Pokročilé > Export."
-
-#: www/views/onboarding/tour.html:32
-msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds."
-msgstr "Můžete jej směnit za jiné měny jako jsou americké dolary, eura či libry."
-
-#: www/views/onboarding/tour.html:46
-msgid "You control your bitcoin."
-msgstr "Vy ovládáte Vaše Bitcoiny."
-
-#: www/views/modals/chooseFeeLevel.html:64
-msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte."
-msgstr "Neměli byste nastavovat poplatek vyšší než {{maxFeeRecommended}} satoshi/byte."
-
-#: www/views/modals/bitpay-card-confirmation.html:5
-msgid "You will need to log back for fill in your BitPay Card."
-msgstr "Pro vyplnění karty BitPay se budete muset znovu přihlásit."
-
-#: www/views/preferencesNotifications.html:34
-msgid "You'll receive email notifications about payments sent and received from your wallets."
-msgstr "Budete dostávat e-mailová oznámení o platbách odeslaných a přijatých do Vašich peněženek."
-
-#: 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 "Vaše karta BitPay je připravena. Dobijte Vaši kartu a začněte ji používat v obchodech a bankomatech po celém světě."
-
-#: www/views/mercadoLibre.html:57
-#: www/views/mercadoLibreCards.html:6
-msgid "Your Gift Cards"
-msgstr "Vaše dárkové karty"
-
-#: www/views/includes/confirmBackupPopup.html:6
-msgid "Your bitcoin wallet is backed up!"
-msgstr "Vaše Bitcoin peněženka je zálohována!"
-
-#: www/views/tab-home.html:36
-msgid "Your bitcoin wallet is ready!"
-msgstr "Vaše Bitcoin peněženka je připravena!"
-
-#: www/views/modals/chooseFeeLevel.html:61
-msgid "Your fee is lower than recommended."
-msgstr "Nižší než doporučená výše poplatku."
-
-#: www/views/feedback/send.html:42
-msgid "Your ideas, feedback, or comments"
-msgstr "Vaše nápady, zpětná vazba nebo komentáře"
-
-#: www/views/tab-create-shared.html:22
-msgid "Your name"
-msgstr "Vaše jméno"
-
-#: www/views/join.html:16
-msgid "Your nickname"
-msgstr "Vaše přezdívka"
-
-#: www/views/tab-export-file.html:11
-#: www/views/tab-import-file.html:20
-msgid "Your password"
-msgstr "Vaše heslo"
-
-#: www/views/buyAmazon.html:102
-msgid "Your purchase could not be completed"
-msgstr "Nebylo možné dokončit váš nákup"
-
-#: www/views/buyAmazon.html:105
-msgid "Your purchase was added to the list of pending"
-msgstr "Váš nákup byl přidán do seznamu čekajících"
-
-#: www/views/onboarding/backupRequest.html:10
-msgid "Your wallet is never saved to cloud storage or standard device backups."
-msgstr "Vaše peněženka není nikdy ukládána do cloudového úložiště nebo standardní zálohy zařízení."
-
-#: src/js/services/walletService.js:1030
-msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
-msgstr "Klíč Vaší peněženky bude šifrován. Heslo pro potvrzení plateb nemůže být obnoveno. Ujistěte se, že jste si ho poznamenali."
-
-#: www/views/includes/walletList.html:13
-#: www/views/includes/walletSelector.html:21
-#: www/views/paperWallet.html:33
-#: www/views/tab-receive.html:72
-#: www/views/walletDetails.html:131
-#: www/views/walletDetails.html:51
-msgid "[Balance Hidden]"
-msgstr "[Skrytý zůstatek]"
-
-#: www/views/walletDetails.html:141
-#: www/views/walletDetails.html:61
-msgid "[Scanning Funds]"
-msgstr "[Vyhledávání finančních prostředků]"
-
-#: src/js/controllers/bitpayCardIntro.js:11
-msgid "add your BitPay Visa card(s)"
-msgstr "Přidejte Vaši Visa kartu(y) BitPay"
-
-#: www/views/includes/available-balance.html:8
-msgid "locked by pending payments"
-msgstr "uzamčeno čekajícími platbami"
-
-#: src/js/services/profileService.js:404
-msgid "me"
-msgstr "já"
-
-#: www/views/addressbook.add.html:32
-msgid "name@example.com"
-msgstr "name@example.com"
-
-#: www/views/preferencesHistory.html:15
-msgid "preparing..."
-msgstr "Příprava..."
-
-#: www/views/cashScan.html:57
-msgid "recovery tool."
-msgstr "Nástroj pro obnovu."
-
-#: src/js/controllers/buyAmazon.js:239
-msgid "{{amountStr}} for Amazon.com Gift Card"
-msgstr "{{amountStr}} pro Amazon.com dárkovou kartu"
-
-#: src/js/controllers/buyMercadoLibre.js:237
-msgid "{{amountStr}} for Mercado Livre Brazil Gift Card"
-msgstr "{{amountStr}} pro Mercado Livre Brazil dárkovou kartu"
-
-#: 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}} závisí na službě Bitcore Wallet Service (BWS) pro zajištění komunikace se sítí, zjišťování blockchain informací a synchronizaci spoluplátců. Výchozí konfigurace odkazuje na https://bws.bitpay.com (veřejná instance BitPay BWS)."
-
-#: src/js/controllers/confirm.js:408
-msgid "{{fee}} will be deducted for bitcoin networking fees."
-msgstr "{{fee}} bude odečteno pro poplatky Bitcoin sítě."
-
-#: www/views/confirm.html:85
-msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-msgstr "{{tx.txp[wallet.id].feeRatePerStr}} odesílané částky"
-
-#: www/views/walletDetails.html:218
-msgid "{{updatingTxHistoryProgress}} transactions downloaded"
-msgstr "{{updatingTxHistoryProgress}} transakcí staženo"
-
-#: www/views/cashScan.html:33
-#: www/views/copayers.html:46
-#: www/views/includes/walletInfo.html:18
-msgid "{{wallet.m}}-of-{{wallet.n}}"
-msgstr "{{wallet.m}}-z-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Komunita"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Bitcoin.com Twitter"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Prohlédnout Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Bitcoin Cash hry"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Sdílet aplikaci peněženky"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "Novinky"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Těžební pool"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Nástroje"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Grafy cen Bitcoinu"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Bitcoin Cash zdarma"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "Vaše Bitcoin peněženka je připravena!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "Adresa neobsahuje žádné údaje o měně. Zkontrolujte, zda posíláte správnou měnu."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Zkontrolovat transakci"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Posíláte"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Vyměňujete"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "Příjemce:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Přidat osobní poznámku"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Doporučeno obchodníkem:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Sem zadejte text"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Osobní poznámka:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Méně než 1 koruna"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "Tato faktura již nepřijímá platby"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Odeslat maximální částku"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Neznámá chyba."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "Žádná Bitcoin Cash peněženka pro transfer nalezených prostředků."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "Žádný Bitcoin Cash nenalezen."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Nalezen Bitcoin Core:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "Žádná Bitcoin Core peněženka pro transfer nalezených prostředků."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "Žádný Bitcoin Core nenalezen."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "Sken selhal"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "Data nebyla rozpoznána."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "Nepodporováno"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet není podporován."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Otevřít ve webovém prohlížeči"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Neplatná adresa"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "Částka nedefinována"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Nižší než minimální částka"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "Nadlimitní částka"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Neplatná odpověď z Shapeshift"
-
diff --git a/i18n/po/de/template-de.po b/i18n/po/de.po
similarity index 86%
rename from i18n/po/de/template-de.po
rename to i18n/po/de.po
index d2ea6cc62..3793da81a 100644
--- a/i18n/po/de/template-de.po
+++ b/i18n/po/de.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
+"Project-Id-Version: copay\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: de\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: German\n"
"Language: de\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-09 10:33-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -32,7 +32,7 @@ msgstr "- {{btx.feeRateStr}}ของธุรกรรม"
#: www/views/modals/txp-details.html:102
msgid "- {{tx.feeRateStr}} of the transaction"
-msgstr "- {{tx.feeRateStr}} der Transaktion"
+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!"
@@ -41,7 +41,7 @@ msgstr "Eine 5-Sterne Bewertung hilft uns, {{appName}} unter die Leute zu bringe
#: www/views/mercadoLibre.html:18
#: www/views/mercadoLibre.html:40
msgid "Only redeemable on Mercado Livre (Brazil)"
-msgstr "Nur einlösbar auf Mercado Livre (Brasilien)"
+msgstr ""
#: src/js/controllers/feedback/send.js:27
#: www/views/feedback/complete.html:21
@@ -77,30 +77,6 @@ msgstr "Benutzerkonto"
msgid "Account Number"
msgstr "Kontonummer"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Sofortige Transaktionen mit niedrigen Gebühren"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Unzureichende Geldmittel"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Währung ändern"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Verfügbare Mittel"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Alle zur Verfügung stehenden Mittel verwenden"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Weiter"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "Konten"
@@ -148,7 +124,7 @@ msgstr "Ein optionales Passwort zur Sicherung der Wiederherstellungsphrase hinzu
#: www/views/includes/incomingDataMenu.html:41
msgid "Add as a contact"
-msgstr "Als Kontakt hinzufügen"
+msgstr ""
#: src/js/controllers/confirm.js:424
msgid "Add description"
@@ -156,11 +132,11 @@ msgstr "Beschreibung hinzufügen"
#: www/views/topup.html:6
msgid "Add funds"
-msgstr "Guthaben aufladen"
+msgstr ""
#: src/js/services/bitpayAccountService.js:78
msgid "Add this BitPay account ({{email}})?"
-msgstr "Dieses BitPay Konto hinzufügen ({{email}})?"
+msgstr ""
#: www/views/add.html:3
msgid "Add wallet"
@@ -226,23 +202,9 @@ msgstr "Fast fertig! Fassen wir zusammen."
msgid "Alternative Currency"
msgstr "Alternative Währung"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Preisanzeige"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Kryptowährung"
-
#: src/js/controllers/buyAmazon.js:98
msgid "Amazon.com is not available at this moment. Please try back later."
-msgstr "Amazon.com ist zurzeit nicht verfügbar. Bitte versuchen Sie es später nochmal."
+msgstr ""
#: www/views/amount.html:44
#: www/views/customAmount.html:34
@@ -260,7 +222,7 @@ msgstr "Betrag zu hoch"
#: www/views/includes/walletHistory.html:31
msgid "Amount too low to spend"
-msgstr "Betrag ist zu niedrig zum Ausgeben"
+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."
@@ -272,7 +234,7 @@ msgstr "Jeder mit Ihrer Wiederherstellungsphrase hat Zugriff auf ihre Bitcoins u
#: www/views/addresses.html:94
msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-msgstr "Približna naknada za Bitcoin za prijenos novčanika (s normalnim prioritetom)"
+msgstr ""
#: www/views/backupWarning.html:10
msgid "Are you being watched?"
@@ -288,7 +250,7 @@ msgstr "Wollen Sie wirklich abbrechen und dieses Wallet löschen?"
#: src/js/controllers/addressbookView.js:37
msgid "Are you sure you want to delete this contact?"
-msgstr "Jeste li sigurni da želite obrisati ovaj kontakt?"
+msgstr ""
#: src/js/controllers/preferencesDelete.js:25
msgid "Are you sure you want to delete this wallet?"
@@ -308,7 +270,7 @@ 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 "Jeste li sigurni da se želite odjaviti od vašeg BitPay Card računa?"
+msgstr ""
#: src/js/controllers/preferencesBitpayCard.js:7
#: src/js/controllers/preferencesBitpayServices.js:20
@@ -341,7 +303,7 @@ msgstr "BIP32 Pfad für die Adressen-Ableitung"
#: www/views/cashScan.html:25
msgid "BTC wallets"
-msgstr "BTC nocčanik"
+msgstr ""
#: www/views/preferences.html:34
msgid "Backup"
@@ -397,17 +359,17 @@ msgstr "Bitcoin-Adresse"
#: www/views/cashScan.html:4
msgid "Bitcoin Cash (BCH) Balances"
-msgstr "Bitcoin Cash (BCH) Guthaben"
+msgstr ""
#: www/views/preferencesCash.html:3
#: www/views/tab-settings.html:47
msgid "Bitcoin Cash Support"
-msgstr "Bitcoin Cash Support"
+msgstr ""
#: www/views/tab-home.html:98
#: www/views/tab-settings.html:115
msgid "Bitcoin Cash Wallets"
-msgstr "Novčanice bitcoina"
+msgstr ""
#: www/views/modals/chooseFeeLevel.html:4
#: www/views/preferencesFee.html:4
@@ -418,11 +380,11 @@ msgstr "Bitcoin-Netzwerk Gebührenübersicht"
#: www/views/tab-home.html:83
#: www/views/tab-settings.html:107
msgid "Bitcoin Core Wallets"
-msgstr "Bitcoin Core Wallets"
+msgstr ""
#: src/js/services/incomingData.js:151
msgid "Bitcoin cash Payment"
-msgstr "Bitcoin Cash Zahlung"
+msgstr ""
#: www/views/onboarding/tour.html:31
msgid "Bitcoin is a currency."
@@ -442,7 +404,7 @@ msgstr "Bitcoin Transaktionen enthalten eine Gebühr für die \"Miners\" im Netz
#: www/views/buyAmazon.html:108
msgid "Bought {{amountUnitStr}}"
-msgstr "{{amountUnitStr}} erworben"
+msgstr ""
#: www/views/modals/txp-details.html:36
msgid "Broadcast Payment"
@@ -464,25 +426,24 @@ msgstr "Browser wird nicht unterstützt"
#: www/views/buyAmazon.html:5
#: www/views/buyMercadoLibre.html:6
msgid "Buy"
-msgstr "Kaufen"
+msgstr ""
#: www/views/includes/buyAndSellCard.html:3
msgid "Buy & Sell Bitcoin"
msgstr "Kaufe & Verkaufe Bitcoins"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "Kaufe Bitcoins"
#: www/views/mercadoLibre.html:22
#: www/views/mercadoLibre.html:50
msgid "Buy a Gift Card"
-msgstr "Geschenkkarte Kaufen"
+msgstr ""
#: src/js/controllers/buyAmazon.js:334
msgid "Buy from"
-msgstr "Kaufen von"
+msgstr ""
#: src/js/services/onGoingProcess.js:40
msgid "Buying Bitcoin..."
@@ -513,14 +474,14 @@ msgstr "Abbruch"
#: www/views/copayers.html:36
msgid "Cancel invitation"
-msgstr "Einladung zurückziehen"
+msgstr ""
#: src/js/controllers/onboarding/tour.js:52
msgid "Cannot Create Wallet"
msgstr "Wallet kann nicht erstellt werden"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
+msgid "Cannot join the same wallet more that once"
msgstr "An einem Wallet kann nicht mehrfach teilgenommen werden"
#: www/views/includes/bitpayCardsCard.html:2
@@ -558,16 +519,16 @@ msgstr "Cache leeren"
#: src/js/controllers/confirm.js:373
#: src/js/controllers/modals/txpDetails.js:49
msgid "Click to accept"
-msgstr "Klicken Sie zum Akzeptieren"
+msgstr ""
#: src/js/controllers/confirm.js:367
msgid "Click to pay"
-msgstr "Klicken zum Bezahlen"
+msgstr ""
#: src/js/controllers/confirm.js:379
#: src/js/controllers/modals/txpDetails.js:42
msgid "Click to send"
-msgstr "Klicken zum Senden"
+msgstr ""
#: www/views/customAmount.html:4
#: www/views/modals/mercadolibre-card-details.html:3
@@ -582,7 +543,7 @@ msgstr "Schließen"
#: www/views/includes/cash.html:2
#: www/views/preferencesInformation.html:17
msgid "Coin"
-msgstr "Münze"
+msgstr ""
#: www/views/preferences.html:22
msgid "Color"
@@ -598,7 +559,7 @@ msgstr "Beenden Sie den Backupvorgang um diese Option zu nutzen"
#: www/views/bitpayCard.html:93
msgid "Completed"
-msgstr "Abgeschlossen"
+msgstr ""
#: src/js/controllers/buyAmazon.js:311
#: src/js/controllers/buyMercadoLibre.js:305
@@ -619,7 +580,7 @@ msgstr "Bestätigen & Beenden"
#: www/views/buyAmazon.html:90
msgid "Confirm purchase"
-msgstr "Kauf bestätigen"
+msgstr ""
#: www/views/modals/pin.html:10
msgid "Confirm your PIN"
@@ -654,14 +615,10 @@ msgstr "Verbinde mit Glidera..."
msgid "Connection reset by peer"
msgstr "Verbindung von Peer zurückgesetzt"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "Kontakte"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Gespeicherte häufig verwendete Adressen"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "Weiter"
@@ -672,7 +629,7 @@ msgstr "Übersetzungen beitragen"
#: src/js/controllers/confirm.js:130
msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-msgstr "Copay unterstützt nur Bitcoin Cash bei Adressen welche das neue Adressformat benutzen"
+msgstr ""
#: src/js/services/bwcError.js:62
msgid "Copayer already in this wallet"
@@ -696,7 +653,6 @@ msgstr "Copayer {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "In die Zwischenablage kopiert"
@@ -715,7 +671,7 @@ msgstr "In die Zwischenablage kopieren"
#: src/js/controllers/buyMercadoLibre.js:102
msgid "Could not access Gift Card Service"
-msgstr "Der Geschenkkartendienst konnte nicht erreicht werden"
+msgstr ""
#: www/views/tab-import-phrase.html:2
msgid "Could not access the wallet at the server. Please check:"
@@ -723,7 +679,7 @@ msgstr "Kein Zugriff auf Wallet des Servers. Überprüfen Sie bitte:"
#: src/js/controllers/buyAmazon.js:102
msgid "Could not access to Amazon.com"
-msgstr "Auf Amazon.com konnte nicht zugegriffen werden"
+msgstr ""
#: src/js/services/profileService.js:511
msgid "Could not access wallet"
@@ -747,13 +703,13 @@ msgstr "Adresse konnte nicht erstellt werden"
#: src/js/controllers/topup.js:92
msgid "Could not create the invoice"
-msgstr "Die Rechnung konnte nicht erstellt werden"
+msgstr ""
#: src/js/controllers/buyAmazon.js:164
#: src/js/controllers/buyMercadoLibre.js:164
#: src/js/controllers/topup.js:142
msgid "Could not create transaction"
-msgstr "Transaktion konnte nicht erstellt werden"
+msgstr ""
#: src/js/services/profileService.js:350
msgid "Could not create using the specified extended private key"
@@ -777,7 +733,7 @@ msgstr "Zahlungsvorschlag konnte nicht gelöscht werden"
#: src/js/controllers/cashScan.js:117
msgid "Could not duplicate"
-msgstr "Konnte nicht duplizieren"
+msgstr ""
#: src/js/services/feeService.js:73
msgid "Could not get dynamic fee"
@@ -789,13 +745,13 @@ msgstr "Dynamische Gebühr für den Level konnte nicht abgerufen werden: {{feeLe
#: src/js/controllers/modals/feeLevels.js:112
msgid "Could not get fee levels"
-msgstr "Gebühren konnten nicht abgerufen werden"
+msgstr ""
#: src/js/controllers/buyAmazon.js:122
#: src/js/controllers/buyMercadoLibre.js:122
#: src/js/controllers/topup.js:100
msgid "Could not get the invoice"
-msgstr "Konnte die Rechnung nicht erhalten"
+msgstr ""
#: src/js/controllers/bitpayCard.js:66
msgid "Could not get transactions"
@@ -840,7 +796,7 @@ msgstr "Zahlung kann nicht gesendet werden"
#: src/js/controllers/buyMercadoLibre.js:318
#: src/js/controllers/topup.js:299
msgid "Could not send transaction"
-msgstr "Transaktion konnte nicht gesendet werden"
+msgstr ""
#: www/views/walletDetails.html:210
msgid "Could not update transaction history"
@@ -863,7 +819,7 @@ msgstr "Erstelle eine gemeinsame Wallet"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "Erstelle Bitcoin-Wallet"
@@ -899,7 +855,7 @@ msgstr "Aktuelle Gebühr für dieses Verfahren"
#: src/js/services/feeService.js:15
msgid "Custom"
-msgstr "Eigene"
+msgstr ""
#: www/views/customAmount.html:9
msgid "Custom Amount"
@@ -907,7 +863,7 @@ msgstr "Benutzerdefinierter Betrag"
#: src/js/controllers/preferencesFee.js:85
msgid "Custom Fee"
-msgstr "Eigene Gebühr"
+msgstr ""
#: www/views/modals/mercadolibre-card-details.html:56
#: www/views/modals/txp-details.html:87
@@ -956,7 +912,7 @@ msgstr "Ableitungstrategie"
#: www/views/modals/mercadolibre-card-details.html:6
#: www/views/topup.html:45
msgid "Details"
-msgstr "Details"
+msgstr ""
#: src/js/controllers/lockSetup.js:9
#: src/js/controllers/tab-settings.js:65
@@ -984,11 +940,11 @@ msgstr "Herunterladen"
#: www/views/cashScan.html:37
msgid "Duplicate for BCH"
-msgstr "Für BCH duplizieren"
+msgstr ""
#: src/js/services/onGoingProcess.js:49
msgid "Duplicating wallet..."
-msgstr "Wallet wird dupliziert..."
+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."
@@ -1000,7 +956,7 @@ msgstr "Wirtschaftlich"
#: www/views/onboarding/collectEmail.html:27
msgid "Edit"
-msgstr "Bearbeiten"
+msgstr ""
#: www/views/addressbook.add.html:29
#: www/views/addressbook.view.html:22
@@ -1017,7 +973,7 @@ msgstr "Obergrenze für leere Adressen erreicht. Neue Adressen können nicht gen
#: www/views/preferencesCash.html:17
msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-msgstr "Bitcoin Cash-Wallet-Erstellung und Betrieb innerhalb der App aktivieren."
+msgstr ""
#: www/views/tab-scan.html:19
msgid "Enable camera access in your device settings to get started."
@@ -1031,17 +987,13 @@ msgstr "Aktiviere E-Mail Benachrichtigung"
msgid "Enable push notifications"
msgstr "Pushbenachrichtigungen aktivieren"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Sound einschalten"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "Aktivieren Sie die Kamera um loszulegen."
#: www/views/tab-settings.html:49
msgid "Enabled"
-msgstr "Aktiviert"
+msgstr ""
#: src/js/services/walletService.js:1047
#: src/js/services/walletService.js:1062
@@ -1054,11 +1006,11 @@ msgstr "Eingabe des Zwei-Faktor-Authentifizierungs-Codes für das BitPay Konto"
#: www/views/amount.html:4
msgid "Enter amount"
-msgstr "Betrag eingeben"
+msgstr ""
#: www/views/modals/chooseFeeLevel.html:41
msgid "Enter custom fee"
-msgstr "Eigene Gebühr eingeben"
+msgstr ""
#: src/js/services/walletService.js:1029
msgid "Enter new spending password"
@@ -1072,7 +1024,7 @@ msgstr "Wiederherstellungsphrase eingeben (BIP39)"
#: www/views/onboarding/collectEmail.html:13
msgid "Enter your email"
-msgstr "Ihre E-Mail Adresse eingeben"
+msgstr ""
#: www/views/backup.html:69
msgid "Enter your password"
@@ -1163,12 +1115,12 @@ msgstr "Fehler beim bestätigen"
#: src/js/controllers/buyAmazon.js:179
msgid "Error creating gift card"
-msgstr "Fehler beim Erstellen der Geschenkkarte"
+msgstr ""
#: src/js/controllers/buyAmazon.js:94
#: src/js/controllers/buyMercadoLibre.js:94
msgid "Error creating the invoice"
-msgstr "Fehler beim Erstellen der Rechnung"
+msgstr ""
#: src/js/services/profileService.js:412
msgid "Error creating wallet"
@@ -1176,17 +1128,17 @@ msgstr "Fehler beim Erstellen des Wallets"
#: src/js/controllers/confirm.js:296
msgid "Error getting SendMax information"
-msgstr "Fehler beim Abrufen der SendMax Informationen"
+msgstr ""
#: src/js/controllers/buyAmazon.js:136
#: src/js/controllers/buyMercadoLibre.js:136
#: src/js/controllers/topup.js:114
msgid "Error in Payment Protocol"
-msgstr "Fehler im Zahlungsprotokoll"
+msgstr ""
#: src/js/controllers/bitpayCardIntro.js:14
msgid "Error pairing BitPay Account"
-msgstr "Fehler beim Paaren mit BitPay Konto"
+msgstr ""
#: src/js/controllers/paperWallet.js:41
msgid "Error scanning funds:"
@@ -1241,7 +1193,7 @@ msgstr "Erweiterte öffentliche Schlüssel"
#: src/js/services/onGoingProcess.js:20
msgid "Extracting Wallet information..."
-msgstr "Wallet-Informationen extrahieren..."
+msgstr ""
#: src/js/controllers/export.js:115
#: src/js/controllers/export.js:126
@@ -1262,16 +1214,16 @@ msgstr "Gebühr"
#: www/views/modals/chooseFeeLevel.html:75
msgid "Fee level"
-msgstr "Gebührenstufe"
+msgstr ""
#: src/js/controllers/modals/feeLevels.js:100
msgid "Fee level is not defined"
-msgstr "Gebührenstufe ist nicht definiert"
+msgstr ""
#: www/views/confirm.html:79
#: www/views/modals/txp-details.html:99
msgid "Fee:"
-msgstr "Gebühr:"
+msgstr ""
#: src/js/controllers/feedback/send.js:23
msgid "Feedback could not be submitted. Please try again later."
@@ -1283,7 +1235,7 @@ msgstr "BitPay Konto abrufen..."
#: src/js/services/onGoingProcess.js:21
msgid "Fetching payment information"
-msgstr "Zahlungsinformationen abrufen"
+msgstr ""
#: www/views/export.html:14
#: www/views/import.html:16
@@ -1292,7 +1244,7 @@ msgstr "Datei/Text"
#: www/views/preferencesLogs.html:17
msgid "Filter setting"
-msgstr "Filtereinstellungen"
+msgstr ""
#: src/js/services/fingerprintService.js:43
#: src/js/services/fingerprintService.js:48
@@ -1316,7 +1268,6 @@ msgstr "Zur Kontrolle"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "Von"
@@ -1326,7 +1277,7 @@ msgstr "Von BitPay Konto"
#: www/views/tab-import-phrase.html:57
msgid "From Hardware Wallet"
-msgstr "Aus der 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"
@@ -1342,7 +1293,7 @@ msgstr "Betrag gefunden:"
#: www/views/topup.html:49
msgid "Funds to be added"
-msgstr "Hinzuzufügende Mittel"
+msgstr ""
#: www/views/paperWallet.html:51
msgid "Funds transferred"
@@ -1350,7 +1301,7 @@ msgstr "Betrag übermittelt"
#: www/views/topup.html:103
msgid "Funds were added to debit card"
-msgstr "Mittel wurden auf die Debitkarte hinzugefügt"
+msgstr ""
#: www/views/paperWallet.html:22
msgid "Funds will be transferred to"
@@ -1358,7 +1309,7 @@ msgstr "Beträge werden überwiesen an"
#: www/views/tab-receive.html:51
msgid "Generate new address"
-msgstr "Neue Adresse generieren"
+msgstr ""
#: src/js/services/onGoingProcess.js:22
msgid "Generating .csv file..."
@@ -1377,6 +1328,10 @@ msgid "Get news and updates from BitPay"
msgstr "Erhalten Sie Neuigkeiten und Aktualisierungen von BitPay"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr ""
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Los geht’s"
@@ -1392,20 +1347,20 @@ msgstr "Entgelt-Level werden abgerufen..."
#: www/views/buyAmazon.html:43
#: www/views/buyMercadoLibre.html:42
msgid "Gift Card"
-msgstr "Geschenkkarte"
+msgstr ""
#: www/views/modals/mercadolibre-card-details.html:30
#: www/views/modals/mercadolibre-card-details.html:35
msgid "Gift Card is not available to use anymore"
-msgstr "Geschenkkarte kann nicht mehr verwendet werden"
+msgstr ""
#: src/js/controllers/buyAmazon.js:204
msgid "Gift card expired"
-msgstr "Geschenkkarte ist abgelaufen"
+msgstr ""
#: www/views/buyAmazon.html:111
msgid "Gift card generated and ready to use."
-msgstr "Geschenkkarte generiert und einsatzbereit."
+msgstr ""
#: src/js/controllers/bitpayCard.js:114
#: src/js/controllers/bitpayCard.js:124
@@ -1451,7 +1406,7 @@ msgstr "Hardware-Wallet"
#: src/js/controllers/create.js:180
#: src/js/controllers/join.js:145
msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr "Bitcoin Cash unterstützt keine Hardware-Wallets"
+msgstr ""
#: www/views/tab-settings.html:20
msgid "Help & Support"
@@ -1593,7 +1548,7 @@ msgstr "Um die Sicherung der Wallet zu überprüfen, geben Sie bitte Ihr Passwor
#: www/views/mercadoLibreCards.html:24
#: www/views/modals/mercadolibre-card-details.html:29
msgid "Inactive"
-msgstr "Inaktiv"
+msgstr ""
#: www/views/includes/walletItem.html:9
#: www/views/includes/walletList.html:6
@@ -1617,23 +1572,23 @@ msgstr "QR code hat falsches Format"
#: src/js/services/bwcError.js:113
msgid "Incorrect network address"
-msgstr "Falsche Netzwerkadresse"
+msgstr ""
#: src/js/controllers/confirm.js:114
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "Unzureichende bestätigte Mittel"
+msgstr "Nicht ausreichendes Guthaben"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
#: src/js/services/bwcError.js:71
msgid "Insufficient funds for fee"
-msgstr "Unzureichendes Guthaben für die Gebühr"
+msgstr "Nicht ausreichendes Guthaben für die Gebühr"
#: www/views/tab-settings.html:123
msgid "Integrations"
-msgstr "Integrationen"
+msgstr ""
#: www/views/includes/walletHistory.html:49
msgid "Invalid"
@@ -1643,7 +1598,7 @@ msgstr "Ungültig"
#: src/js/controllers/buyMercadoLibre.js:137
#: src/js/controllers/topup.js:115
msgid "Invalid URL"
-msgstr "Ungültige URL"
+msgstr ""
#: src/js/controllers/create.js:186
#: src/js/controllers/import.js:345
@@ -1672,7 +1627,7 @@ msgstr "Einladung um eine {{appName}} Wallet zu teilen"
#: www/views/mercadoLibreCards.html:20
#: www/views/modals/mercadolibre-card-details.html:48
msgid "Invoice expired"
-msgstr "Rechnung abgelaufen"
+msgstr ""
#: src/js/controllers/feedback/send.js:79
msgid "Is there anything we could do better?"
@@ -1733,7 +1688,7 @@ msgstr "Letzter Monat"
#: www/views/preferencesCash.html:18
#: www/views/tx-details.html:94
msgid "Learn more"
-msgstr "Weitere Informationen"
+msgstr ""
#: www/views/backup.html:43
msgid "Let's verify your backup phrase."
@@ -1774,15 +1729,15 @@ msgstr "Zeitsperre aktiv. Bitte auf die Entfernung des Zahlungsvorschlags warten
#: www/views/includes/logOptions.html:3
msgid "Log options"
-msgstr "Log-Optionen"
+msgstr ""
#: www/views/modals/bitpay-card-confirmation.html:14
msgid "Log out"
-msgstr "Abmelden"
+msgstr ""
#: www/views/addresses.html:87
msgid "Low amount inputs"
-msgstr "Zu wenige Inputs"
+msgstr ""
#: www/views/includes/walletHistory.html:27
msgid "Low fees"
@@ -1814,11 +1769,11 @@ msgstr "Notiz"
#: www/views/mercadoLibre.html:6
msgid "Mercado Livre Brazil Gift Cards"
-msgstr "Mercado Livre Brazil Geschenkkarten"
+msgstr ""
#: src/js/controllers/buyMercadoLibre.js:98
msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr "Der MercadoLibre Geschenkkarten-Dienst ist aktuell nicht erreichbar. Bitte versuchen Sie es später noch einmal."
+msgstr ""
#: www/views/modals/txp-details.html:131
msgid "Merchant Message"
@@ -1828,7 +1783,7 @@ msgstr "Händlernachricht"
#: www/views/buyMercadoLibre.html:54
#: www/views/topup.html:63
msgid "Miner Fee"
-msgstr "Miner-Gebühr"
+msgstr ""
#: src/js/services/bwcError.js:134
msgid "Missing parameter"
@@ -1871,7 +1826,7 @@ msgstr "Name"
#: www/views/buyMercadoLibre.html:48
#: www/views/topup.html:56
msgid "Network Cost"
-msgstr "Netzwerkkosten"
+msgstr ""
#: src/js/services/bwcError.js:47
msgid "Network error"
@@ -1900,7 +1855,7 @@ msgstr "Keine Wallet"
#: src/js/controllers/buyAmazon.js:115
#: src/js/controllers/buyMercadoLibre.js:115
msgid "No access key defined"
-msgstr "Kein Zugangsschlüssel definiert"
+msgstr ""
#: www/views/onboarding/backupRequest.html:5
msgid "No backup, no bitcoin."
@@ -1912,7 +1867,7 @@ msgstr "Noch keine Kontakte"
#: www/views/preferencesLogs.html:16
msgid "No entries for this log level"
-msgstr "Keine Einträge für dieses Log-level"
+msgstr ""
#: www/views/preferencesExternal.html:12
msgid "No hardware information available."
@@ -1933,7 +1888,7 @@ msgstr "Keine aktuellen Transaktionen"
#: src/js/controllers/buyAmazon.js:44
#: src/js/controllers/topup.js:47
msgid "No signing proposal: No private key"
-msgstr "Kein Unterzeichnungsvorschlag: Privater Schlüssel nicht vorhanden"
+msgstr ""
#: www/views/walletDetails.html:204
msgid "No transactions yet"
@@ -1952,7 +1907,7 @@ msgstr "Kein Wallet ausgewählt"
#: src/js/controllers/confirm.js:85
#: src/js/controllers/topup.js:265
msgid "No wallets available"
-msgstr "Keine Wallets verfügbar"
+msgstr ""
#: www/views/paperWallet.html:45
msgid "No wallets available to receive funds"
@@ -1960,15 +1915,15 @@ msgstr "Keine Wallet verfügbar um Guthaben zu erhalten"
#: www/views/cashScan.html:15
msgid "No wallets eligible for Bitcoin Cash support"
-msgstr "Keine Wallet zur Unterstützung von Bitcoin Cash geeignet"
+msgstr ""
#: src/js/controllers/cashScan.js:58
msgid "Non BIP44 wallet"
-msgstr "Wallet ist keine BIP44-Wallet"
+msgstr ""
#: www/views/cashScan.html:46
msgid "Non eligible BTC wallets"
-msgstr "Keine geeigneten BTC Wallets"
+msgstr ""
#: src/js/services/feeService.js:12
msgid "Normal"
@@ -2001,7 +1956,7 @@ msgstr "Notiz"
#: www/views/backup.html:19
msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-msgstr "Hinweis: Wenn diese BCH-Wallet aus einer BTC-Wallet dupliziert wurde, verwenden sie die selbe Wiederherstellungsphrase."
+msgstr ""
#: www/views/modals/wallets.html:25
msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin"
@@ -2014,15 +1969,15 @@ msgstr "Benachrichtigungen"
#: www/views/onboarding/collectEmail.html:9
msgid "Notifications by email"
-msgstr "Benachrichtigungen per e-Mail"
+msgstr ""
#: www/views/tx-details.html:117
msgid "Notify me if confirmed"
-msgstr "Benachrichtige mich sobald sie bestätigt ist"
+msgstr ""
#: www/views/preferencesNotifications.html:24
msgid "Notify me when transactions are confirmed"
-msgstr "Benachrichtigen Sie mich, wenn Transaktionen bestätigt werden"
+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."
@@ -2041,7 +1996,7 @@ msgstr "Jetzt ist die perfekte Zeit um Ihre Umgebung zu überprüfen. In der Nä
#: src/js/services/popupService.js:72
#: www/views/modals/chooseFeeLevel.html:6
msgid "OK"
-msgstr "Okay"
+msgstr "OK"
#: www/views/modals/tx-status.html:12
#: www/views/modals/tx-status.html:24
@@ -2060,7 +2015,7 @@ msgstr "Oh nein!"
#: src/js/controllers/buyMercadoLibre.js:306
msgid "Ok"
-msgstr "Okay"
+msgstr ""
#: www/views/tab-home.html:39
msgid "On this screen you can see all your wallets, accounts, and assets."
@@ -2090,7 +2045,7 @@ msgstr "Öffne GitHub Projekt"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "Explorer öffnen"
+msgstr "Öffne Insight"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2106,11 +2061,11 @@ msgstr "Öffne Website"
#: src/js/controllers/preferencesCash.js:32
msgid "Open bitcoincash.org?"
-msgstr "bitcoincash.org öffnen?"
+msgstr ""
#: src/js/controllers/cashScan.js:18
msgid "Open the recovery tool."
-msgstr "Öffnen Sie das Recovery-Tool."
+msgstr ""
#: www/views/tab-receive.html:27
msgid "Open wallet"
@@ -2118,7 +2073,7 @@ msgstr "Öffne Wallet"
#: www/views/includes/incomingDataMenu.html:19
msgid "Open website"
-msgstr "Öffne Website"
+msgstr ""
#: www/views/bitpayCardIntro.html:34
msgid "Order the BitPay Card"
@@ -2200,10 +2155,6 @@ msgstr "Zahlung abgelehnt"
msgid "Payment Sent"
msgstr "Zahlung gesendet"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Diese Transaktion teilen"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "Zahlung akzeptiert, aber noch nicht übermittelt"
@@ -2214,20 +2165,20 @@ msgstr "Zahlung akzeptiert. Sie wird durch Glidera übermittelt. Falls ein Probl
#: src/js/services/incomingData.js:152
msgid "Payment address was translated to new Bitcoin Cash address format:"
-msgstr "Die Zahlungsadresse wurde auf das neue Bitcoin Cash-Adressformat übersetzt:"
+msgstr ""
#: www/views/modals/txp-details.html:107
msgid "Payment details"
msgstr "Zahlungsdetails"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
+msgid "Payment request"
msgstr "Zahlungsanforderung"
#: www/views/mercadoLibreCards.html:22
#: www/views/modals/mercadolibre-card-details.html:39
msgid "Pending"
-msgstr "Ausstehend"
+msgstr ""
#: www/views/proposals.html:4
msgid "Pending Proposals"
@@ -2273,7 +2224,7 @@ msgstr "Bitte Copay aktualisieren, um diese Aktion auszuführen"
#: www/views/walletDetails.html:142
#: www/views/walletDetails.html:62
msgid "Please wait"
-msgstr "Bitte warten"
+msgstr ""
#: src/js/controllers/import.js:238
msgid "Please, select your backup file"
@@ -2281,7 +2232,7 @@ msgstr "Bitte die Sicherungsdatei wählen"
#: www/views/bitpayCard.html:81
msgid "Pre-Auth Holds"
-msgstr "Pre-Auth Holds"
+msgstr ""
#: www/views/tab-settings.html:40
msgid "Preferences"
@@ -2305,7 +2256,7 @@ msgstr "höchste Priorität"
#: www/views/includes/incomingDataMenu.html:80
msgid "Private Key"
-msgstr "Privater Schlüssel"
+msgstr ""
#: src/js/controllers/paperWallet.js:136
msgid "Private key encrypted. Enter password"
@@ -2339,11 +2290,11 @@ msgstr "Vorschläge"
#: src/js/controllers/buyAmazon.js:282
msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
-msgstr "Kaufbetrag beschränkt ist auf {{limitPerDay}} {{currency}} pro Tag beschränkt"
+msgstr ""
#: src/js/controllers/buyMercadoLibre.js:281
msgid "Purchase amount must be a value between 50 and 2000"
-msgstr "Kaufbetrag muss ein Wert zwischen 50 und 2000 sein"
+msgstr ""
#: www/views/onboarding/notifications.html:3
msgid "Push Notifications"
@@ -2381,11 +2332,11 @@ msgstr "Mehr anzeigen"
#: src/js/controllers/preferences.js:65
#: src/js/controllers/tx-details.js:54
msgid "Read more in our Wiki"
-msgstr "Lesen Sie mehr in unserem Wiki"
+msgstr ""
#: src/js/controllers/cashScan.js:61
msgid "Read only wallet"
-msgstr "Schreibgeschützte Wallet"
+msgstr ""
#: www/views/tab-receive.html:3
#: www/views/tabs.html:7
@@ -2394,7 +2345,7 @@ msgstr "Empfangen"
#: www/views/customAmount.html:44
msgid "Receive in"
-msgstr "Erhalten in"
+msgstr ""
#: www/views/includes/walletHistory.html:24
#: www/views/tx-details.html:18
@@ -2443,7 +2394,7 @@ msgstr "Wallet wiederherstellen..."
#: www/views/modals/mercadolibre-card-details.html:22
msgid "Redeem now"
-msgstr "Jetzt einlösen"
+msgstr ""
#: src/js/controllers/modals/txpDetails.js:63
#: src/js/controllers/tx-details.js:80
@@ -2461,7 +2412,7 @@ msgstr "Release-Informationen"
#: www/views/addressbook.view.html:36
#: www/views/modals/mercadolibre-card-details.html:69
msgid "Remove"
-msgstr "Entfernen"
+msgstr ""
#: src/js/controllers/preferencesBitpayServices.js:7
msgid "Remove BitPay Account?"
@@ -2544,7 +2495,7 @@ msgstr "Adresse auf neue Beträge überprüfen"
#: www/views/modals/fingerprintCheck.html:11
msgid "Scan again"
-msgstr "Erneut scannen"
+msgstr ""
#: src/js/services/fingerprintService.js:56
msgid "Scan your fingerprint please"
@@ -2552,7 +2503,7 @@ msgstr "Scannen Sie bitte Ihren Fingerabdruck"
#: www/views/preferencesCash.html:23
msgid "Scan your wallets for Bitcoin Cash"
-msgstr "Durchsuche deine Wallet nach Bitcoin Cash"
+msgstr ""
#: src/js/services/onGoingProcess.js:30
msgid "Scanning Wallet funds..."
@@ -2560,7 +2511,7 @@ msgstr "Prüfe Wallet auf neue Beträge..."
#: www/views/includes/walletList.html:11
msgid "Scanning funds..."
-msgstr "Mittel werden durchsucht..."
+msgstr ""
#: www/views/includes/screenshotWarningModal.html:7
msgid "Screenshots are not secure"
@@ -2574,14 +2525,6 @@ msgstr "Transaktionen durchsuchen"
msgid "Search or enter bitcoin address"
msgstr "Bitcoin-Adresse suchen oder eingeben"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Zwischenablage"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Ihre Zwischenablage ist leer"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "Transaktionen durchsuchen"
@@ -2596,7 +2539,7 @@ msgstr "Sicherheit"
#: www/views/modals/mercadolibre-card-details.html:64
msgid "See invoice"
-msgstr "Rechnung einsehen"
+msgstr ""
#: www/views/tab-import-file.html:7
msgid "Select a backup file"
@@ -2640,75 +2583,16 @@ msgid "Send by email"
msgstr "Per E-Mail versenden"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "Senden von"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Senden an"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Aus Zwischenablage einfügen"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Adresse einfügen"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Transfer zwischen Wallets"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "QR-Code scannen"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Versenden Sie Bitcoin schneller!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Speichern Sie häufig verwendete Adressen und senden Sie ihnen Bitcoin mit nur einem Tippen"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Ihren ersten Kontakt hinzufügen"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Ihre Bitcoin-Wallet ist leer"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Um loszulegen, können sie entweder Bitcoin Cash (BCH) oder Bitcoin Core (BTC) kaufen, oder uns ihre Adresse mitteilen."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "Sie können Bitcoin von jeder Wallet oder jedem Dienst erhalten."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: 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."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Bitcoin jetzt kaufen"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Meine Adresse anzeigen"
-
#: 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 "Zahlung an diese Adresse senden"
+msgstr ""
#: www/views/feedback/rateApp.html:17
msgid "Send us feedback instead"
@@ -2759,11 +2643,11 @@ msgstr "Antwort des Servers konnte nicht verifiziert werden"
#: src/js/controllers/buyAmazon.js:97
#: src/js/controllers/buyMercadoLibre.js:97
msgid "Service not available"
-msgstr "Dienst ist nicht verfügbar"
+msgstr ""
#: www/views/includes/homeIntegrations.html:3
msgid "Services"
-msgstr "Dienste"
+msgstr "Services"
#: www/views/preferencesLogs.html:3
msgid "Session Log"
@@ -2779,7 +2663,7 @@ msgstr "Passwort einrichten"
#: src/js/controllers/preferencesFee.js:85
msgid "Set your own fee in satoshis/byte"
-msgstr "Legen Sie Ihre eigene Gebühr in Satoshis/byte fest"
+msgstr ""
#: www/views/tab-settings.html:3
#: www/views/tabs.html:19
@@ -2855,24 +2739,24 @@ msgstr "Überspringen"
#: src/js/controllers/confirm.js:371
#: src/js/controllers/modals/txpDetails.js:47
msgid "Slide to accept"
-msgstr "Zum Akzeptieren schieben"
+msgstr ""
#: www/views/buyAmazon.html:96
msgid "Slide to buy"
-msgstr "Zum Kaufen schieben"
+msgstr ""
#: src/js/controllers/confirm.js:365
msgid "Slide to pay"
-msgstr "Zum Bezahlen schieben"
+msgstr ""
#: src/js/controllers/confirm.js:377
#: src/js/controllers/modals/txpDetails.js:40
msgid "Slide to send"
-msgstr "Zum Senden schieben"
+msgstr ""
#: www/views/cashScan.html:56
msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-msgstr "Einige ihrer Wallets sind nicht zur Unterstützung von Bitcoin Cash geeignet. Sie können versuchen, auf BCH Mittel von diesen Wallets aus zuzugreifen indem Sie die"
+msgstr ""
#: src/js/controllers/create.js:88
#: src/js/controllers/join.js:71
@@ -2893,7 +2777,7 @@ msgstr "Berechtigungscode erforderlich"
#: www/views/walletDetails.html:173
msgid "Spending this balance will need significant Bitcoin network fees"
-msgstr "Die Ausgabe dieses Betrages wird signifikante Bitcoin-Netzwerkgebühren erfordern"
+msgstr ""
#: www/views/tab-send.html:28
msgid "Start sending bitcoin"
@@ -2906,11 +2790,11 @@ msgstr "Sperre des Startups"
#: www/views/mercadoLibreCards.html:21
#: www/views/modals/mercadolibre-card-details.html:42
msgid "Still pending"
-msgstr "Noch ausstehend"
+msgstr ""
#: www/views/topup.html:101
msgid "Success"
-msgstr "Erfolg"
+msgstr ""
#: src/js/services/feeService.js:14
msgid "Super Economy"
@@ -2918,20 +2802,15 @@ msgstr "Niedrigste Priorität"
#: www/views/preferencesCash.html:11
msgid "Support Bitcoin Cash"
-msgstr "Bitcoin Cash unterstützen"
+msgstr ""
#: www/views/paperWallet.html:7
msgid "Sweep"
msgstr "Leeren"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Paperwallet löschen"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
+msgid "Sweep paper wallet"
msgstr "Paperwallet löschen"
#: src/js/services/onGoingProcess.js:33
@@ -2953,7 +2832,7 @@ msgstr "Anzeigen durch tippen und halten"
#: www/views/includes/walletInfo.html:3
msgid "Tap to recreate"
-msgstr "Zum neu erstellen tippen"
+msgstr ""
#: www/views/includes/walletInfo.html:4
msgid "Tap to retry"
@@ -2977,7 +2856,7 @@ msgstr "Testnet"
#: www/views/includes/incomingDataMenu.html:61
msgid "Text"
-msgstr "Text"
+msgstr ""
#: src/js/controllers/feedback/send.js:27
#: src/js/controllers/feedback/send.js:76
@@ -3100,14 +2979,6 @@ msgstr "Diese App speichert Ihre Bitcoins mit modernster Sicherheit."
msgid "This bitcoin payment request has expired."
msgstr "Diese Bitcoin Zahlungsaufforderung ist abgelaufen."
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "Zahlung läuft ab:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "Zahlungsaufforderung ist abgelaufen"
-
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
@@ -3120,7 +2991,7 @@ msgstr "Diese Wiederherstellungsphrase entstand mit einem Passwort. Zur Wiederhe
#: www/views/tx-details.html:91
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 "Dieser Betrag ist zu klein im Vergleich zu den aktuellen Bitcoin-Netzwerk-Gebühren. Diese Mittel benötigen eine Bitcoin Netzwerk Gebühr mit vergleichbarer Größe zu den Mitteln."
+msgstr ""
#: www/views/tx-details.html:87
msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender"
@@ -3149,37 +3020,21 @@ msgstr "An"
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 "Zum {{reason}} müssen Sie erst Ihr BitPay-Konto hinzufügen - {{email}}"
+msgstr ""
#: src/js/services/onGoingProcess.js:48
msgid "Top up in progress..."
-msgstr "Aufladung in Bearbeitung..."
+msgstr ""
#: src/js/controllers/topup.js:206
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-msgstr "Laden sie {{amountStr}} auf die Debitkarte ({{cardLastNumber}}) auf"
-
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "ShapeShift starten"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Tauschen Sie ihre BTC in Minuten zu BCH um."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Sie müssen Mittel in Ihre Wallet hinzufügen, um den Vorgang zu starten."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "Der Vorgang ist kurz und Sie werden den getauschten Betrag in Ihre Wallet erhalten."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Diese Dienstleistung wird von dem Drittanbieter Shapeshift angeboten, welcher eine kleine Dienstgebühr berechnet. Diese Gebühr wird angezeigt, bevor Sie die Transaktion starten."
+msgstr ""
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
@@ -3198,7 +3053,7 @@ msgstr "Gesamtanzahl der Copayer"
#: www/views/addresses.html:81
msgid "Total wallet inputs"
-msgstr "Alle Wallet-Inputs"
+msgstr ""
#: src/js/services/fingerprintService.js:63
#: src/js/services/fingerprintService.js:68
@@ -3211,7 +3066,7 @@ msgstr "Transaktion"
#: www/views/confirm.html:126
msgid "Transaction Created"
-msgstr "Transaktion erstellt"
+msgstr ""
#: www/views/preferencesAdvanced.html:29
#: www/views/preferencesHistory.html:3
@@ -3226,11 +3081,11 @@ msgstr "Transaktion wurde bereits übermittelt"
#: src/js/controllers/buyMercadoLibre.js:301
#: src/js/controllers/topup.js:281
msgid "Transaction has not been created"
-msgstr "Transaktion wurde nicht erstellt"
+msgstr ""
#: www/views/topup.html:104
msgid "Transaction initiated"
-msgstr "Transaktion eingeleitet"
+msgstr ""
#: src/js/controllers/tx-details.js:119
msgid "Transaction not available at this time"
@@ -3243,11 +3098,11 @@ msgstr "Transaktion konnte nicht gefunden werden"
#: www/views/modals/chooseFeeLevel.html:55
msgid "Transactions without fee are not supported."
-msgstr "Transaktionen ohne Gebühren werden nicht unterstützt."
+msgstr ""
#: src/js/controllers/paperWallet.js:109
msgid "Transfer to"
-msgstr "Transfer zu"
+msgstr ""
#: www/views/tab-send.html:67
msgid "Transfer to Wallet"
@@ -3267,7 +3122,7 @@ msgstr "Wiederherstellungsphrase eingeben (in der Regel 12 Wörter)"
#: src/js/controllers/backup.js:75
msgid "Uh oh..."
-msgstr "Oh oh..."
+msgstr "Uh oh..."
#: www/views/tx-details.html:100
msgid "Unconfirmed"
@@ -3315,7 +3170,7 @@ msgstr "Überprüfe Wiederherstellungsphrase..."
#: www/views/modals/fingerprintCheck.html:4
msgid "Verify your identity"
-msgstr "Bestätigen Sie Ihre Identität"
+msgstr ""
#: www/views/preferencesAbout.html:14
#: www/views/preferencesExternal.html:25
@@ -3337,7 +3192,7 @@ msgstr "Nutzungsbedingungen anzeigen"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Transaktion auf Explorer.Bitcoin.com ansehen"
+msgstr "Transaktionen auf Insight anzeigen"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3349,7 +3204,7 @@ msgstr "Auf blockchain anzeigen"
#: www/views/mercadoLibre.html:26
msgid "Visit mercadolivre.com.br →"
-msgstr "Besuchen Sie mercadolivre.com.br →"
+msgstr ""
#: www/views/walletDetails.html:182
msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet."
@@ -3411,7 +3266,7 @@ msgstr "Wallet-Informationen"
#: www/views/addresses.html:76
msgid "Wallet Inputs"
-msgstr "Wallet-Inputs"
+msgstr ""
#: www/views/join.html:26
msgid "Wallet Invitation"
@@ -3465,7 +3320,7 @@ msgstr "Wallet exstiert bereits"
#: src/js/services/profileService.js:516
msgid "Wallet already in {{appName}}"
-msgstr "Wallet bereits in {{appName}}"
+msgstr ""
#: www/views/includes/walletActivity.html:6
msgid "Wallet created"
@@ -3516,7 +3371,7 @@ msgstr "Wallet ist nicht beim Wallet-Service registiert. Neu erzeugen mit \"Neue
#: www/views/backup.html:12
msgid "Wallet recovery phrase not available"
-msgstr "Wallet Wiederherstellungsphrase ist nicht verfügbar"
+msgstr ""
#: src/js/services/bwcError.js:50
msgid "Wallet service not found"
@@ -3561,7 +3416,7 @@ msgstr "Wir sind immer auf der Suche nach Möglichkeiten um {{appName}} zu verbe
#: www/views/includes/incomingDataMenu.html:6
msgid "Website"
-msgstr "Webseite"
+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."
@@ -3641,11 +3496,11 @@ msgstr "Sie kontrollieren Ihre Bitcoins."
#: www/views/modals/chooseFeeLevel.html:64
msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte."
-msgstr "Sie sollten keine Gebühren welche höher als {{maxFeeRecommended}} satoshis/byte sind wählen."
+msgstr ""
#: www/views/modals/bitpay-card-confirmation.html:5
msgid "You will need to log back for fill in your BitPay Card."
-msgstr "Sie müssen sich wieder anmelden um ihre BitPay-Karte aufzufüllen."
+msgstr ""
#: www/views/preferencesNotifications.html:34
msgid "You'll receive email notifications about payments sent and received from your wallets."
@@ -3653,12 +3508,12 @@ msgstr "Sie erhalten E-Mail Benachrichtigungen über gesendete und empfangen Zah
#: 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 "Ihre BitPay-Karte ist bereit. Fügen sie Mittel auf Ihre Karte hinzu um diesen bei Geschäften und Geldautomaten weltweit zu benutzen."
+msgstr ""
#: www/views/mercadoLibre.html:57
#: www/views/mercadoLibreCards.html:6
msgid "Your Gift Cards"
-msgstr "Ihre Geschenkkarten"
+msgstr ""
#: www/views/includes/confirmBackupPopup.html:6
msgid "Your bitcoin wallet is backed up!"
@@ -3670,7 +3525,7 @@ msgstr "Ihre Bitcoin-Wallet ist fertig!"
#: www/views/modals/chooseFeeLevel.html:61
msgid "Your fee is lower than recommended."
-msgstr "Ihre Gebühren sind niedriger als empfohlen."
+msgstr ""
#: www/views/feedback/send.html:42
msgid "Your ideas, feedback, or comments"
@@ -3691,11 +3546,11 @@ msgstr "Passwort"
#: www/views/buyAmazon.html:102
msgid "Your purchase could not be completed"
-msgstr "Ihre Bestellung konnte nicht abgeschlossen werden"
+msgstr ""
#: www/views/buyAmazon.html:105
msgid "Your purchase was added to the list of pending"
-msgstr "Ihre Bestellung wurde in die Liste der anstehenden Bestellungen hinzugefügt"
+msgstr ""
#: www/views/onboarding/backupRequest.html:10
msgid "Your wallet is never saved to cloud storage or standard device backups."
@@ -3717,7 +3572,7 @@ msgstr "[Guthaben versteckt]"
#: www/views/walletDetails.html:141
#: www/views/walletDetails.html:61
msgid "[Scanning Funds]"
-msgstr "[Mittel werden durchsucht...]"
+msgstr ""
#: src/js/controllers/bitpayCardIntro.js:11
msgid "add your BitPay Visa card(s)"
@@ -3741,15 +3596,15 @@ msgstr "in Arbeit..."
#: www/views/cashScan.html:57
msgid "recovery tool."
-msgstr "Wiederherstellungstool."
+msgstr ""
#: src/js/controllers/buyAmazon.js:239
msgid "{{amountStr}} for Amazon.com Gift Card"
-msgstr "{{amountStr}} für Amazon.com Geschenkkarte"
+msgstr ""
#: src/js/controllers/buyMercadoLibre.js:237
msgid "{{amountStr}} for Mercado Livre Brazil Gift Card"
-msgstr "{{amountStr}} für Mercado Livre Brazil Geschenkkarte"
+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)."
@@ -3761,7 +3616,7 @@ msgstr "{{fee}} wird für Bitcoin-Netzwerkgebühren abgezogen werden."
#: www/views/confirm.html:85
msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-msgstr "{{tx.txp[wallet.id].feeRatePerStr}} von dem sendenden Betrag"
+msgstr ""
#: www/views/walletDetails.html:218
msgid "{{updatingTxHistoryProgress}} transactions downloaded"
@@ -3772,172 +3627,3 @@ msgstr "{{updatingTxHistoryProgress}} Transaktionen werden heruntergeladen"
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.m}}-von-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Community"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Bitcoin.com Twitter"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Erkunden Sie Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Bitcoin Cash Spiele"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Die Wallet-App teilen"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "Neuigkeiten"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Mining-Pool"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Werkzeuge"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Bitcoin Preis-Charts"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Kostenloses Bitcoin Cash"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "Ihre Bitcoin-Wallet ist fertig!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "Die Adresse enthält keine Währungsinformationen, stellen Sie bitte sicher, dass Sie die richtige Währung senden."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Transaktion überprüfen"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Sie senden"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Sie tauschen"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "An:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Persönliche Anmerkung hinzufügen"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Vom Händler vorgeschlagen:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Hier Text eingeben"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Persönliche Anmerkung:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Weniger als 1 Cent"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "Diese Rechnung akzeptiert keine Zahlungen mehr"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Maximalen Betrag senden"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Unbekannter Fehler."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "Keine Bitcoin Cash Wallet, zu welchem Geld verschickt werden kann, gefunden."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "Kein Bitcoin Cash gefunden."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Bitcoin Core gefunden:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "Keine Bitcoin Core Wallet, zu welchem Geld verschickt werden kann, gefunden."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "Kein Bitcoin Core gefunden."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "Scan ist fehlgeschlagen"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "Daten nicht erkannt."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "Nicht unterstützt"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet wird nicht unterstützt."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Im Webbrowser öffnen"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Ungültige Adresse"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "Betrag ist nicht definiert"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Menge liegt unter dem Minimum"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "Betrag ist über dem Grenzwert"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Ungültige Antwort von Shapeshift"
-
diff --git a/i18n/po/es-ES/template-es-ES.po b/i18n/po/es.po
similarity index 91%
rename from i18n/po/es-ES/template-es-ES.po
rename to i18n/po/es.po
index 2a22d3593..99defe8ee 100644
--- a/i18n/po/es-ES/template-es-ES.po
+++ b/i18n/po/es.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
+"Project-Id-Version: copay\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: es-ES\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: Spanish\n"
"Language: es\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-10 08:58-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -64,7 +64,7 @@ msgstr "Acerca de"
#: src/js/controllers/modals/txpDetails.js:62
#: src/js/controllers/tx-details.js:79
msgid "Accepted"
-msgstr "Aceptada"
+msgstr "Aceptado"
#: www/views/preferencesInformation.html:72
msgid "Account"
@@ -77,30 +77,6 @@ msgstr "Cuenta"
msgid "Account Number"
msgstr "Número de cuenta"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Transacciones instantáneas con comisiones bajas"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Sin fondos suficientes"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Cambiar moneda"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Fondos disponibles"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Usar todos los fondos"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Siguiente"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "Cuentas"
@@ -226,20 +202,6 @@ msgstr "¡Casi listo! Vamos a revisar."
msgid "Alternative Currency"
msgstr "Moneda Alternativa"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Muestra de precio"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Criptomoneda"
-
#: src/js/controllers/buyAmazon.js:98
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."
@@ -397,12 +359,12 @@ msgstr "Dirección Bitcoin"
#: www/views/cashScan.html:4
msgid "Bitcoin Cash (BCH) Balances"
-msgstr "Saldo Bitcoin Cash (BCH)"
+msgstr "Saldos Bitcoin Cash (BCH)"
#: www/views/preferencesCash.html:3
#: www/views/tab-settings.html:47
msgid "Bitcoin Cash Support"
-msgstr "Soporte Bitcoin Cash"
+msgstr "Soportar Bitcoin Cash"
#: www/views/tab-home.html:98
#: www/views/tab-settings.html:115
@@ -418,7 +380,7 @@ msgstr "Política de Comisión de la Red Bitcoin"
#: www/views/tab-home.html:83
#: www/views/tab-settings.html:107
msgid "Bitcoin Core Wallets"
-msgstr "Criptobilleteras Bitcoin Core"
+msgstr "Billeteras Bitcoin"
#: src/js/services/incomingData.js:151
msgid "Bitcoin cash Payment"
@@ -471,7 +433,6 @@ msgid "Buy & Sell Bitcoin"
msgstr "Comprar & Vender Bitcoin"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "Comprar Bitcoin"
@@ -520,7 +481,7 @@ msgid "Cannot Create Wallet"
msgstr "No se pudo crear la billetera"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
+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
@@ -590,7 +551,7 @@ msgstr "Color"
#: www/views/preferencesAbout.html:21
msgid "Commit hash"
-msgstr "Hash de commit"
+msgstr "Commit hash"
#: www/views/preferences.html:49
msgid "Complete the backup process to use this option"
@@ -654,14 +615,10 @@ msgstr "Conectando a Glidera..."
msgid "Connection reset by peer"
msgstr "Conexión re establecida"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "Contactos"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Direcciones frecuentes guardadas"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "Continuar"
@@ -692,11 +649,10 @@ msgstr "Copayer unido"
#: www/views/preferencesInformation.html:94
msgid "Copayer {{$index}}"
-msgstr "Co-pagador {{$index}}"
+msgstr "Copayer {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "Copiado al portapapeles"
@@ -863,7 +819,7 @@ msgstr "Crear billetera compartida"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "Crear billetera"
@@ -1017,7 +973,7 @@ msgstr "Se ha alcanzado el límite de direcciones vacías. No se pueden generar
#: www/views/preferencesCash.html:17
msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-msgstr "Habilita la creación de billeteras de Bitcoin Cash y operaciones dentro de la app."
+msgstr "Habilita la creación y operación de billetera Bitcoin Cash dentro de la aplicación."
#: www/views/tab-scan.html:19
msgid "Enable camera access in your device settings to get started."
@@ -1031,10 +987,6 @@ msgstr "Activar notificaciones de correo electrónico"
msgid "Enable push notifications"
msgstr "Activar notificaciones push"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Habilitar sonido"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "Activar la cámara empezar."
@@ -1316,7 +1268,6 @@ msgstr "Para propósitos de auditoría"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "Desde"
@@ -1377,6 +1328,10 @@ msgid "Get news and updates from BitPay"
msgstr "Recibir noticias y actualizaciones de BitPay"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr "Comenzar"
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Empezar"
@@ -1623,7 +1578,7 @@ msgstr "Dirección de red incorrecta"
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "Insuficiencia de fondos confirmado"
+msgstr "Fondos insuficientes"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
@@ -2041,7 +1996,7 @@ msgstr "Es el momento perfecto para mirar a tu alrededor. ¿ventanas? ¿cámaras
#: src/js/services/popupService.js:72
#: www/views/modals/chooseFeeLevel.html:6
msgid "OK"
-msgstr "Ok"
+msgstr "OK"
#: www/views/modals/tx-status.html:12
#: www/views/modals/tx-status.html:24
@@ -2090,7 +2045,7 @@ msgstr "Abrir Proyecto en GitHub"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "Abra Explorador"
+msgstr "Abrir Insight"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2200,10 +2155,6 @@ msgstr "Pago Rechazado"
msgid "Payment Sent"
msgstr "Pago Enviado"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Comparte esta transacción"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "Pago aceptado, pero aún no fue enviado"
@@ -2221,8 +2172,8 @@ msgid "Payment details"
msgstr "Detalles del pago"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr "Solicitar pago"
+msgid "Payment request"
+msgstr "Solicitud de pago"
#: www/views/mercadoLibreCards.html:22
#: www/views/modals/mercadolibre-card-details.html:39
@@ -2281,7 +2232,7 @@ msgstr "Por favor, selecciona el archivo de copia de seguridad"
#: www/views/bitpayCard.html:81
msgid "Pre-Auth Holds"
-msgstr "Retención Pre-Auth"
+msgstr "Pre-Auth Holds"
#: www/views/tab-settings.html:40
msgid "Preferences"
@@ -2552,7 +2503,7 @@ msgstr "Por favor ingrese su huella digital"
#: www/views/preferencesCash.html:23
msgid "Scan your wallets for Bitcoin Cash"
-msgstr "Escanea tus billeteras para Bitcoin Cash"
+msgstr "Explora tus billeteras para Bitcoin Cash"
#: src/js/services/onGoingProcess.js:30
msgid "Scanning Wallet funds..."
@@ -2574,14 +2525,6 @@ msgstr "Buscar transacciones"
msgid "Search or enter bitcoin address"
msgstr "Buscar o introducir dirección bitcoin"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Portapapeles"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Portapapeles vacío"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "Buscar transacciones"
@@ -2640,68 +2583,9 @@ msgid "Send by email"
msgstr "Enviar por correo electrónico"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "Enviar desde"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Enviar a"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Pegar portapapeles"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Pegar dirección"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Transferir entre billeteras"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Escanear código QR"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "¡Envía Bitcoin más rápido!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Guardar las direcciones que usas frecuentemente y envía Bitcoin en un click"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Añade tu primer contacto"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Tu billetera Bitcoin está vacía"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Para empezar, compra Bitcoin Cash (BCH) o Bitcoin Core (BTC), o comparte tu dirección."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "Puedes recibir bitcoin desde cualquier billetera o servicio."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: 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."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Comprar Bitcoin ahora"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Ver mi dirección"
-
#: www/views/includes/itemSelector.html:8
msgid "Send max amount"
msgstr "Enviar la máxima cantidad"
@@ -2918,21 +2802,16 @@ msgstr "Súper Económico"
#: www/views/preferencesCash.html:11
msgid "Support Bitcoin Cash"
-msgstr "Apoya a Bitcoin Cash"
+msgstr "Soportar Bitcoin Cash"
#: www/views/paperWallet.html:7
msgid "Sweep"
msgstr "Importar"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Importar billetera de papel"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
-msgstr "Importar billetera de papel"
+msgid "Sweep paper wallet"
+msgstr "Importar billetera en papel"
#: src/js/services/onGoingProcess.js:33
msgid "Sweeping Wallet..."
@@ -3100,14 +2979,6 @@ msgstr "Esta aplicación almacena tus bitcoins con seguridad avanzada."
msgid "This bitcoin payment request has expired."
msgstr "Esta solicitud de pago ha caducado."
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "El pago expira en:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "El pago ha expirado"
-
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
@@ -3149,6 +3020,10 @@ msgstr "Para"
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}}"
@@ -3161,26 +3036,6 @@ msgstr "Recarda en progreso..."
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
msgstr "Recargar {{amountStr}} a la tarjeta de débito ({{cardLastNumber}})"
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "Empezar ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Intercambia tus BTC a BCH en minutos."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Para iniciar el cambio necesitas añadir fondos a tu billetera."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "El proceso es rápido y recibirás la cantidad intercambiada en tu cartera."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Este servicio es proporcionado por el tercero ShapeShift, quien cobrará una pequeña tarifa por el servicio. La tarifa se mostrará antes de empezar la transacción."
-
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
#: www/views/modals/wallet-balance.html:23
@@ -3337,7 +3192,7 @@ msgstr "Ver Términos de Uso"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Ver transacción en Explorer.Bitcoin.com"
+msgstr "Ver Transacción en Insight"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3448,7 +3303,7 @@ msgstr "La frase de recuperación no es válida"
#: www/views/preferencesAdvanced.html:25
#: www/views/tab-import-phrase.html:73
msgid "Wallet Service URL"
-msgstr "URL de Servicio de Billetera"
+msgstr "Wallet Service URL"
#: www/views/preferences.html:4
msgid "Wallet Settings"
@@ -3772,172 +3627,3 @@ msgstr "{{updatingTxHistoryProgress}} transacciones descargadas"
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.m}}-de-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift - Cambia BTC a BCH"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Comunidad"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Reddit de Bitcoin Cash"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Twitter de Bitcoin.com"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Explora Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Juegos de Bitcoin Cash"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Comparte esta app"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "Noticias"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Minería en la nube"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Herramientas"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Gráfica de precios Bitcoin"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Bitcoin Cash gratis"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "¡Tus billeteras Bitcoin están listas!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "La dirección no contiene información sobre la criptomoneda. Por favor asegúrese de estar enviando la criptomoneda correcta."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Revisar transacción"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Estás enviando"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Estás cambiando"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "Para:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Añadir nota personal"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Sugerido por el comerciante:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Introduce el texto aquí"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Nota personal:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Menos de 1 centavo"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "Esta factura ya no está aceptando pagos"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Enviar cantidad máxima"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Error desconocido."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "No se encontró billetera BCH para transferir estos fondos."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "No se encontró Bitcoin Cash."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Bitcoin Core encontrado:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "No se encontró billetera BTC para transferir estos fondos."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "No se encontró Bitcoin Core."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "Falló el escaneado"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "Datos no reconocidos."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "No compatible"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet no es compatible."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Abrir en navegador web"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Dirección inválida"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "Cantidad no definida"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Cantidad por debajo del mínimo"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "Cantidad por encima del límite"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Respuesta inválida de Shapeshift"
-
diff --git a/i18n/po/fa/template-fa.po b/i18n/po/fa/template-fa.po
deleted file mode 100644
index d2b460320..000000000
--- a/i18n/po/fa/template-fa.po
+++ /dev/null
@@ -1,3943 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
-"X-Crowdin-Language: fa\n"
-"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
-"Language-Team: Persian\n"
-"Language: fa\n"
-"PO-Revision-Date: 2018-09-15 05:56\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:159
-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:82
-msgid "- {{btx.feeRateStr}} of the transaction"
-msgstr "{{btx.feeRateStr}} تراکنش"
-
-#: www/views/modals/txp-details.html:102
-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 "پنج ستاره به ما کمک می کند تا {{appName}} را به دست افراد بیشتری برسانیم، و کاربران بیشتر به این معنی است که منابع بیشتری نسبت به برنامه متعهد هستند!"
-
-#: www/views/mercadoLibre.html:18
-#: www/views/mercadoLibre.html:40
-msgid "Only redeemable on Mercado Livre (Brazil)"
-msgstr "فقط قابل باز پرداخت در Marcado Livre(برزیل)"
-
-#: 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:401
-msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded."
-msgstr "در مجموع {{amountAboveMaxSizeStr}} حذف شد. بیش از حداکثر سایز مجاز برای یک تراکنش بوده است."
-
-#: src/js/controllers/confirm.js:395
-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:62
-#: src/js/controllers/tx-details.js:79
-msgid "Accepted"
-msgstr "قبول شده"
-
-#: www/views/preferencesInformation.html:72
-msgid "Account"
-msgstr "حساب"
-
-#: www/views/join.html:72
-#: www/views/tab-create-personal.html:45
-#: www/views/tab-create-shared.html:74
-#: www/views/tab-import-hardware.html:19
-msgid "Account Number"
-msgstr "شماره حساب"
-
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "معاملات فوری با پرداخت کم"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "موجودی ناکافی"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "تغییر ارز"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "موجودی قابل استفاده"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "استفاده از تمام موجودی در دسترس"
-
-#: www/views/amount.html:99
-msgid "Next"
-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:94
-msgid "Add Memo"
-msgstr "اضافه نمودن یادداشت"
-
-#: www/views/join.html:87
-#: www/views/tab-create-personal.html:59
-#: www/views/tab-create-shared.html:88
-msgid "Add a password"
-msgstr "اضافه کردن رمز عبور"
-
-#: www/views/includes/accountSelector.html:27
-msgid "Add account"
-msgstr "اضافه نمودن حساب"
-
-#: www/views/join.html:90
-#: www/views/tab-create-personal.html:62
-#: www/views/tab-create-shared.html:91
-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:424
-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:41
-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 "اجازه ارسال notification"
-
-#: www/views/onboarding/disclaimer.html:14
-msgid "Almost done! Let's review."
-msgstr "تقریبا به پایان رسیدیم! بیا مروری کنیم."
-
-#: www/views/preferencesAltCurrency.html:4
-#: www/views/tab-settings.html:79
-msgid "Alternative Currency"
-msgstr "ارز دوم"
-
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "نمایش قیمت"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "پول اعتباری"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "ارز رمزنگاری شده"
-
-#: src/js/controllers/buyAmazon.js:98
-msgid "Amazon.com is not available at this moment. Please try back later."
-msgstr "Amazon.com در حال حاضر در دسترس نمی باشد، خواهشمند است در زمان دیگری امتحان کنید."
-
-#: 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:216
-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:37
-msgid "Are you sure you want to delete this contact?"
-msgstr "آیا شما از این که می خواهید این اطلاعات تماس را حذف کنید مطمئن هستید?"
-
-#: src/js/controllers/preferencesDelete.js:25
-msgid "Are you sure you want to delete this wallet?"
-msgstr "آیا شما از این که می خواهید این کیف پول را حذف کنید مطمئن هستید?"
-
-#: src/js/controllers/modals/txpDetails.js:154
-msgid "Are you sure you want to reject this transaction?"
-msgstr "آیا شما از این که می خواهید این تراکنش را رد کنید مطمئن هستید?"
-
-#: src/js/controllers/modals/txpDetails.js:171
-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:10
-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:143
-#: www/views/tab-create-personal.html:113
-#: www/views/tab-create-shared.html:142
-#: www/views/tab-import-phrase.html:51
-msgid "BIP32 path for address derivation"
-msgstr "مسیر BIP32 برای استخراج آدرس"
-
-#: www/views/cashScan.html:25
-msgid "BTC wallets"
-msgstr "کیف های پول BTC"
-
-#: 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 "قبل از استفاده از این تابع از تمامی کیف های محیط عملیاتی نسخه پشتیبان تهیه شود"
-
-#: src/js/controllers/cashScan.js:64
-#: www/views/includes/walletListSettings.html:12
-#: www/views/preferences.html:36
-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:446
-msgid "Bad wallet invitation"
-msgstr "دعوت نامه کیف پول بد"
-
-#: www/views/preferencesInformation.html:102
-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/cashScan.html:4
-msgid "Bitcoin Cash (BCH) Balances"
-msgstr "موجودی های بیتکوین کش(BCH)"
-
-#: www/views/preferencesCash.html:3
-#: www/views/tab-settings.html:47
-msgid "Bitcoin Cash Support"
-msgstr "پشتیبانی بیتکوین کش"
-
-#: www/views/tab-home.html:98
-#: www/views/tab-settings.html:115
-msgid "Bitcoin Cash Wallets"
-msgstr "کیف های پول بیتکوین کش"
-
-#: www/views/modals/chooseFeeLevel.html:4
-#: www/views/preferencesFee.html:4
-#: www/views/tab-settings.html:90
-msgid "Bitcoin Network Fee Policy"
-msgstr "سیاست کارمزد شبکه بیتکوین"
-
-#: www/views/tab-home.html:83
-#: www/views/tab-settings.html:107
-msgid "Bitcoin Core Wallets"
-msgstr "کیف های پول بیتکوین کر(Core)"
-
-#: src/js/services/incomingData.js:151
-msgid "Bitcoin cash Payment"
-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 "{{amountUnitStr}} خریداری شد"
-
-#: www/views/modals/txp-details.html:36
-msgid "Broadcast Payment"
-msgstr "ارسال و پخش پرداخت در شبکه"
-
-#: src/js/controllers/modals/txpDetails.js:64
-#: src/js/controllers/tx-details.js:81
-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
-#: www/views/buyMercadoLibre.html:6
-msgid "Buy"
-msgstr "خرید"
-
-#: www/views/includes/buyAndSellCard.html:3
-msgid "Buy & Sell Bitcoin"
-msgstr "خرید & فروش بیتکوین"
-
-#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
-msgid "Buy Bitcoin"
-msgstr "خرید بیتکوین"
-
-#: www/views/mercadoLibre.html:22
-#: www/views/mercadoLibre.html:50
-msgid "Buy a Gift Card"
-msgstr "خرید یک کارت هدیه"
-
-#: src/js/controllers/buyAmazon.js:334
-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:313
-#: src/js/controllers/buyMercadoLibre.js:307
-#: src/js/controllers/confirm.js:550
-#: src/js/controllers/topup.js:287
-#: src/js/services/incomingData.js:154
-#: 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:442
-msgid "Cannot join the same wallet more than 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:61
-msgid "Clear"
-msgstr "پاک سازی"
-
-#: www/views/preferencesHistory.html:24
-msgid "Clear cache"
-msgstr "پاک سازی کش"
-
-#: src/js/controllers/confirm.js:373
-#: src/js/controllers/modals/txpDetails.js:49
-msgid "Click to accept"
-msgstr "برای قبول کلیک کنید"
-
-#: src/js/controllers/confirm.js:367
-msgid "Click to pay"
-msgstr "برای پرداخت کلیک کنید"
-
-#: src/js/controllers/confirm.js:379
-#: src/js/controllers/modals/txpDetails.js:42
-msgid "Click to send"
-msgstr "برای ارسال کلیک کنید"
-
-#: www/views/customAmount.html:4
-#: www/views/modals/mercadolibre-card-details.html:3
-#: 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/includes/cash.html:2
-#: www/views/preferencesInformation.html:17
-msgid "Coin"
-msgstr "سکه"
-
-#: www/views/preferences.html:22
-msgid "Color"
-msgstr "رنگ"
-
-#: www/views/preferencesAbout.html:21
-msgid "Commit hash"
-msgstr "ثبت هش"
-
-#: www/views/preferences.html:49
-msgid "Complete the backup process to use this option"
-msgstr "برای استفاده از این گزینه فرایند پشتیبان گیری را تکمیل کنید"
-
-#: www/views/bitpayCard.html:93
-msgid "Completed"
-msgstr "تکمیل شده"
-
-#: src/js/controllers/buyAmazon.js:311
-#: src/js/controllers/buyMercadoLibre.js:305
-#: src/js/controllers/confirm.js:549
-#: src/js/controllers/copayers.js:55
-#: src/js/controllers/topup.js:285
-#: www/views/backup.html:60
-#: www/views/backup.html:79
-#: 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:1033
-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:85
-msgid "Contacts"
-msgstr "تماسها"
-
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "آدرس های ذخیره شده که اغلب مورد استفاده قرار گرفته اند"
-
-#: www/views/onboarding/notifications.html:9
-msgid "Continue"
-msgstr "ادامه"
-
-#: www/views/preferencesLanguage.html:26
-msgid "Contribute Translations"
-msgstr "مشارکت در ترجمه"
-
-#: src/js/controllers/confirm.js:130
-msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-msgstr "Copay فقط Bitcoi Cash هایی که از آدرس های با شماره جدید استفاده می کنند را پشتیبانی می کند"
-
-#: 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:94
-msgid "Copayer {{$index}}"
-msgstr "Copayer {{$index}}"
-
-#: src/js/controllers/copayers.js:79
-#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
-#: 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/includes/logOptions.html:9
-#: www/views/tab-export-file.html:78
-msgid "Copy to clipboard"
-msgstr "کپی در کلیپ بورد"
-
-#: src/js/controllers/buyMercadoLibre.js:102
-msgid "Could not access Gift Card Service"
-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:102
-msgid "Could not access to Amazon.com"
-msgstr "نتوانست به Amazon.com دسترسی پیدا کند"
-
-#: src/js/services/profileService.js:511
-msgid "Could not access wallet"
-msgstr "نتوانست به کیف پول دسترسی پیدا کند"
-
-#: src/js/controllers/confirm.js:210
-msgid "Could not add message to imported wallet without shared encrypting key"
-msgstr "پیام را به کیف پول وارد شده بدون کلید رمز نگاری اشتراک گذاشته شده نتوانست اضافه نماید"
-
-#: src/js/controllers/modals/txpDetails.js:199
-msgid "Could not broadcast payment"
-msgstr "پرداخت را نتوانست ارسال و پخش کند"
-
-#: src/js/services/bwcError.js:41
-msgid "Could not build transaction"
-msgstr "تراکنش را نتوانست بسازد"
-
-#: src/js/services/walletService.js:854
-msgid "Could not create address"
-msgstr "آدرس را نتوانست ایجاد کند"
-
-#: src/js/controllers/topup.js:92
-msgid "Could not create the invoice"
-msgstr "صورت حساب را نتوانست بسازد"
-
-#: src/js/controllers/buyAmazon.js:164
-#: src/js/controllers/buyMercadoLibre.js:164
-#: src/js/controllers/topup.js:142
-msgid "Could not create transaction"
-msgstr "تراکنش را نتوانست ایجاد کند"
-
-#: src/js/services/profileService.js:350
-msgid "Could not create using the specified extended private key"
-msgstr "با استفاده از کلید خصوصی توسعه یافته اختصاص داده شده نتوانست ایجاد کند"
-
-#: src/js/services/profileService.js:362
-msgid "Could not create using the specified extended public key"
-msgstr "با استفاده از کلید عمومی توسعه یافته اختصاص داده شده نتوانست ایجاد کند"
-
-#: src/js/services/profileService.js:338
-msgid "Could not create: Invalid wallet recovery phrase"
-msgstr "نتوانست ایجاد کند: عبارت بازیابی مربوط به کیف پول غیر معتبر"
-
-#: src/js/controllers/import.js:114
-msgid "Could not decrypt file, check your password"
-msgstr "فایل را نتوانست رمز گشایی کند، رمز عبور خود رابررسی نمایید"
-
-#: src/js/controllers/modals/txpDetails.js:181
-msgid "Could not delete payment proposal"
-msgstr "پیشنهاد پرداخت را نتوانست حدف نماید"
-
-#: src/js/controllers/cashScan.js:117
-msgid "Could not duplicate"
-msgstr "تکراری آن را نتوانست ایجاد کند"
-
-#: src/js/services/feeService.js:73
-msgid "Could not get dynamic fee"
-msgstr "کارمزد را یه صورت اتوماتیک نتوانست اخذ کند"
-
-#: src/js/services/feeService.js:43
-msgid "Could not get dynamic fee for level: {{feeLevel}}"
-msgstr "کارمزد را برای سطح {{feeLevel}} به صورت اتوماتیک نتوانست اخذ کند"
-
-#: src/js/controllers/modals/feeLevels.js:112
-msgid "Could not get fee levels"
-msgstr "سطح کارمزد را نتوانست اخذ کند"
-
-#: src/js/controllers/buyAmazon.js:122
-#: src/js/controllers/buyMercadoLibre.js:122
-#: src/js/controllers/topup.js:100
-msgid "Could not get the invoice"
-msgstr "صورت حساب را نتوانست اخذ کند"
-
-#: src/js/controllers/bitpayCard.js:66
-msgid "Could not get transactions"
-msgstr "تراکنش را نتوانست اخذ کند"
-
-#: src/js/services/profileService.js:615
-#: src/js/services/profileService.js:650
-#: src/js/services/profileService.js:674
-msgid "Could not import"
-msgstr "نتوانست وارد کند"
-
-#: src/js/services/profileService.js:584
-msgid "Could not import. Check input file and spending password"
-msgstr "نتوانست وارد کند. ورودی و رمز عبور برای خرج کردن را بررسی کنید"
-
-#: src/js/services/profileService.js:457
-msgid "Could not join wallet"
-msgstr "نتوانست به کیف پول بپیوندد"
-
-#: src/js/controllers/modals/txpDetails.js:161
-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:147
-msgid "Could not send payment"
-msgstr "پرداخت را نتوانست ارسال کند"
-
-#: src/js/controllers/buyAmazon.js:325
-#: src/js/controllers/buyMercadoLibre.js:318
-#: src/js/controllers/topup.js:299
-msgid "Could not send transaction"
-msgstr "تراکنش را نتوانست ارسال کند"
-
-#: www/views/walletDetails.html:210
-msgid "Could not update transaction history"
-msgstr "تاریخچه تراکنش را نتوانست به روز رسانی کند"
-
-#: src/js/controllers/addresses.js:29
-#: src/js/controllers/addresses.js:37
-#: 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:75
-#: www/views/tab-send.html:75
-msgid "Create bitcoin wallet"
-msgstr "ایجاد کیف پول بیتکوین"
-
-#: www/views/tab-create-personal.html:131
-msgid "Create new wallet"
-msgstr "ایجاد کیف پول جدید"
-
-#: www/views/add.html:22
-msgid "Create shared wallet"
-msgstr "ایجاد کیف پول مشترک"
-
-#: www/views/tab-create-shared.html:160
-msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet"
-msgstr "ایجاد {{formData.requiredCopayers}} از {{formData.totalCopayers}} کیف پول"
-
-#: www/views/modals/txp-details.html:81
-#: www/views/tx-details.html:60
-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:85
-msgid "Custom Fee"
-msgstr "کارمزد سفارشی"
-
-#: www/views/modals/mercadolibre-card-details.html:56
-#: www/views/modals/txp-details.html:87
-#: www/views/tx-details.html:66
-msgid "Date"
-msgstr "تاریخ"
-
-#: www/views/preferencesDeleteWallet.html:21
-msgid "Delete"
-msgstr "حذف"
-
-#: www/views/modals/txp-details.html:164
-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:141
-#: www/views/tab-create-personal.html:111
-#: www/views/tab-create-shared.html:140
-#: www/views/tab-import-phrase.html:49
-msgid "Derivation Path"
-msgstr "مسیر منشاء(ِDerivation Path)"
-
-#: www/views/preferencesInformation.html:47
-msgid "Derivation Strategy"
-msgstr "استراتژی منشاء(ِDerivation Strategy)"
-
-#: www/views/buyAmazon.html:39
-#: www/views/buyMercadoLibre.html:38
-#: www/views/modals/mercadolibre-card-details.html:6
-#: www/views/topup.html:45
-msgid "Details"
-msgstr "جزئیات"
-
-#: src/js/controllers/lockSetup.js:9
-#: src/js/controllers/tab-settings.js:65
-#: www/views/tab-settings.html:50
-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/cashScan.html:37
-msgid "Duplicate for BCH"
-msgstr "تکراری برای BCH"
-
-#: src/js/services/onGoingProcess.js:49
-msgid "Duplicating wallet..."
-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/preferencesCash.html:17
-msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-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 "فعال کردن اعلان های با فرمت push"
-
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "فعال کردن صدا"
-
-#: www/views/tab-scan.html:18
-msgid "Enable the camera to get started."
-msgstr "دوربین را فعال کنید تا شروع کنید."
-
-#: www/views/tab-settings.html:49
-msgid "Enabled"
-msgstr "فعال"
-
-#: src/js/services/walletService.js:1047
-#: src/js/services/walletService.js:1062
-msgid "Enter Spending Password"
-msgstr "رمز عبور مربوط به خرج (Spend) را وارد کنید"
-
-#: src/js/services/bitpayAccountService.js:110
-msgid "Enter Two Factor for your BitPay account"
-msgstr "دو عامل برای حساب BitPay خود وارد کنید"
-
-#: www/views/amount.html:4
-msgid "Enter amount"
-msgstr "مبلغ را وارد کنید"
-
-#: www/views/modals/chooseFeeLevel.html:41
-msgid "Enter custom fee"
-msgstr "کارمزد سفارشی را وارد کنید"
-
-#: src/js/services/walletService.js:1029
-msgid "Enter new spending password"
-msgstr "رمز عبور جدید مربوط به خرج (Spend) را وارد کنید"
-
-#: www/views/join.html:79
-#: www/views/tab-create-personal.html:51
-#: www/views/tab-create-shared.html:80
-msgid "Enter the recovery phrase (BIP39)"
-msgstr "عبارت بازیابی (BIP39) را وارد کنید"
-
-#: www/views/onboarding/collectEmail.html:13
-msgid "Enter your email"
-msgstr "ایمیل خود را وارد کنید"
-
-#: www/views/backup.html:69
-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:42
-#: src/js/controllers/addresses.js:125
-#: src/js/controllers/addresses.js:126
-#: src/js/controllers/bitpayCard.js:66
-#: src/js/controllers/bitpayCardIntro.js:40
-#: src/js/controllers/bitpayCardIntro.js:81
-#: src/js/controllers/buyAmazon.js:24
-#: src/js/controllers/buyAmazon.js:35
-#: src/js/controllers/buyMercadoLibre.js:24
-#: src/js/controllers/buyMercadoLibre.js:35
-#: src/js/controllers/confirm.js:307
-#: src/js/controllers/copayers.js:67
-#: src/js/controllers/create.js:161
-#: src/js/controllers/create.js:174
-#: src/js/controllers/create.js:180
-#: src/js/controllers/create.js:186
-#: src/js/controllers/create.js:208
-#: src/js/controllers/create.js:215
-#: src/js/controllers/create.js:233
-#: 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:119
-#: src/js/controllers/import.js:131
-#: src/js/controllers/import.js:149
-#: src/js/controllers/import.js:200
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:238
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:266
-#: src/js/controllers/import.js:278
-#: src/js/controllers/import.js:288
-#: src/js/controllers/import.js:312
-#: src/js/controllers/import.js:325
-#: src/js/controllers/import.js:335
-#: src/js/controllers/import.js:345
-#: src/js/controllers/import.js:369
-#: src/js/controllers/import.js:382
-#: src/js/controllers/import.js:85
-#: src/js/controllers/import.js:98
-#: src/js/controllers/join.js:125
-#: src/js/controllers/join.js:139
-#: src/js/controllers/join.js:145
-#: src/js/controllers/join.js:151
-#: src/js/controllers/join.js:174
-#: src/js/controllers/join.js:182
-#: src/js/controllers/join.js:200
-#: src/js/controllers/modals/feeLevels.js:9
-#: src/js/controllers/modals/txpDetails.js:140
-#: 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:36
-#: src/js/controllers/preferencesExternal.js:20
-#: src/js/controllers/tab-home.js:174
-#: src/js/controllers/tab-send.js:143
-#: src/js/controllers/tabsController.js:36
-#: src/js/controllers/tabsController.js:7
-#: src/js/controllers/topup.js:21
-#: src/js/controllers/topup.js:32
-#: src/js/controllers/tx-details.js:119
-#: src/js/services/incomingData.js:101
-#: src/js/services/incomingData.js:125
-#: src/js/services/incomingData.js:168
-#: www/views/mercadoLibreCards.html:19
-#: www/views/modals/mercadolibre-card-details.html:45
-msgid "Error"
-msgstr "خطا"
-
-#: src/js/controllers/confirm.js:502
-msgid "Error at confirm"
-msgstr "خطا در تایید"
-
-#: src/js/controllers/buyAmazon.js:179
-msgid "Error creating gift card"
-msgstr "خطای در ایجاد کارت هدیه"
-
-#: src/js/controllers/buyAmazon.js:94
-#: src/js/controllers/buyMercadoLibre.js:94
-msgid "Error creating the invoice"
-msgstr "خطا در ایجاد صورت حساب"
-
-#: src/js/services/profileService.js:412
-msgid "Error creating wallet"
-msgstr "خطای در ایجاد کیف پول"
-
-#: src/js/controllers/confirm.js:296
-msgid "Error getting SendMax information"
-msgstr "خطا در گرفتن اطلاعات SendMax"
-
-#: src/js/controllers/buyAmazon.js:136
-#: src/js/controllers/buyMercadoLibre.js:136
-#: src/js/controllers/topup.js:114
-msgid "Error in Payment Protocol"
-msgstr "خطا در پروتکل پرداخت"
-
-#: src/js/controllers/bitpayCardIntro.js:14
-msgid "Error pairing BitPay Account"
-msgstr "خطا در جفت کردن(Pairing) حساب BitPay"
-
-#: src/js/controllers/paperWallet.js:41
-msgid "Error scanning funds:"
-msgstr "خطا در اسکن دارایی ها:"
-
-#: src/js/controllers/paperWallet.js:90
-msgid "Error sweeping wallet:"
-msgstr "خطای در sweep نمودن کیف پول:"
-
-#: 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:461
-#: www/views/confirm.html:27
-#: www/views/mercadoLibreCards.html:25
-#: www/views/modals/mercadolibre-card-details.html:34
-#: www/views/modals/txp-details.html:119
-msgid "Expired"
-msgstr "منقضی شده"
-
-#: www/views/modals/paypro.html:54
-#: www/views/modals/txp-details.html:125
-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:1174
-#: www/views/tab-export-qrCode.html:9
-msgid "Exporting via QR not supported for this wallet"
-msgstr "استخراج از طریق کد QR برای این کیف پول پشتیبانی نمی شود"
-
-#: www/views/preferencesInformation.html:89
-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:79
-msgid "Fee"
-msgstr "کارمزد"
-
-#: www/views/modals/chooseFeeLevel.html:75
-msgid "Fee level"
-msgstr "سطح کارمزد"
-
-#: src/js/controllers/modals/feeLevels.js:100
-msgid "Fee level is not defined"
-msgstr "سطح کارمزد تعریف نشده"
-
-#: www/views/confirm.html:79
-#: www/views/modals/txp-details.html:99
-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 "فایل/متن"
-
-#: www/views/preferencesLogs.html:17
-msgid "Filter setting"
-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:123
-#: www/views/tab-create-shared.html:152
-msgid "For audit purposes"
-msgstr "برای اهداف حسابرسی"
-
-#: src/js/controllers/topup.js:308
-#: www/views/buyAmazon.html:29
-#: www/views/buyMercadoLibre.html:28
-#: www/views/confirm.html:65
-#: www/views/modals/txp-details.html:74
-#: www/views/topup.html:34
-#: www/views/tx-details.html:52
-#: www/views/review.html:22
-msgid "From"
-msgstr "از"
-
-#: src/js/controllers/bitpayCardIntro.js:71
-msgid "From BitPay account"
-msgstr "از حساب BitPay"
-
-#: www/views/tab-import-phrase.html:57
-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:51
-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® . ممکن است کارمزد خودپرداز بانک اعمال شود."
-
-#: www/views/onboarding/collectEmail.html:15
-msgid "Get news and updates from BitPay"
-msgstr "دریافت اخبار و به روز رسانی از BitPay"
-
-#: www/views/onboarding/welcome.html:8
-#: www/views/bitpayCard.html:49
-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
-#: www/views/buyMercadoLibre.html:42
-msgid "Gift Card"
-msgstr "کارت هدیه"
-
-#: www/views/modals/mercadolibre-card-details.html:30
-#: www/views/modals/mercadolibre-card-details.html:35
-msgid "Gift Card is not available to use anymore"
-msgstr "کارت هدیه دیگر برای استفاده در دسترس نمی باشد"
-
-#: src/js/controllers/buyAmazon.js:204
-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/cashScan.js:20
-#: src/js/controllers/onboarding/terms.js:23
-#: src/js/controllers/preferences.js:67
-#: src/js/controllers/preferencesAbout.js:16
-#: src/js/controllers/preferencesCash.js:34
-#: src/js/controllers/preferencesLanguage.js:14
-#: src/js/controllers/tab-home.js:149
-#: src/js/controllers/tab-settings.js:53
-#: src/js/controllers/tx-details.js:193
-#: src/js/controllers/tx-details.js:56
-msgid "Go Back"
-msgstr "برگرد به عقب"
-
-#: src/js/controllers/confirm.js:131
-#: 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:53
-#: www/views/preferencesInformation.html:59
-msgid "Hardware Wallet"
-msgstr "کیف پول سخت افزاری"
-
-#: www/views/preferencesExternal.html:18
-msgid "Hardware not connected."
-msgstr "سخت افزار متصل نیست."
-
-#: www/views/import.html:20
-msgid "Hardware wallet"
-msgstr "کیف پول سخت افزاری"
-
-#: src/js/controllers/create.js:180
-#: src/js/controllers/join.js:145
-msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr "هنوز کیف پول سخت افزاری به وسیله Bitcoin Cash پشتیبانی نمی شود"
-
-#: www/views/tab-settings.html:20
-msgid "Help & Support"
-msgstr "کمک & پشتیبانی"
-
-#: src/js/controllers/bitpayCard.js:112
-#: src/js/controllers/tab-settings.js:51
-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:30
-msgid "Hide Next Steps Card"
-msgstr "پنهان کردن مراحل بعدی کارت"
-
-#: www/views/join.html:49
-#: www/views/tab-create-personal.html:28
-#: www/views/tab-create-shared.html:57
-#: www/views/tab-export-file.html:25
-#: www/views/tab-import-file.html:30
-#: www/views/tab-import-hardware.html:31
-#: www/views/tab-import-phrase.html:36
-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:137
-#: www/views/tab-create-personal.html:107
-#: www/views/tab-create-shared.html:136
-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:36
-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:23
-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:14
-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:80
-msgid "Import"
-msgstr "وارد کردن"
-
-#: www/views/import.html:3
-msgid "Import Wallet"
-msgstr "وارد کردن کیف پول"
-
-#: www/views/tab-import-file.html:41
-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:72
-msgid "In order to verify your wallet backup, please type your password."
-msgstr "به منظور بررسی پشتیبان کیف پول خود ، کلمه عبور خود را تایپ کنید."
-
-#: www/views/mercadoLibreCards.html:24
-#: www/views/modals/mercadolibre-card-details.html:29
-msgid "Inactive"
-msgstr "غیر فعال"
-
-#: www/views/includes/walletItem.html:9
-#: www/views/includes/walletList.html:6
-#: www/views/includes/walletListSettings.html:9
-#: www/views/includes/walletSelector.html:16
-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:85
-msgid "Incorrect code format"
-msgstr "فرمت نادرست کد"
-
-#: src/js/services/bwcError.js:113
-msgid "Incorrect network address"
-msgstr "آدرس شبکه نادرست"
-
-#: src/js/controllers/confirm.js:114
-#: src/js/controllers/confirm.js:306
-#: src/js/services/bwcError.js:44
-msgid "Insufficient confirmed funds"
-msgstr "موجودی تائید شذه ناکافی"
-
-#: src/js/controllers/topup.js:165
-#: src/js/controllers/topup.js:177
-#: src/js/services/bwcError.js:71
-msgid "Insufficient funds for fee"
-msgstr "عدم وجود منابع مالی کافی برای کارمزد"
-
-#: www/views/tab-settings.html:123
-msgid "Integrations"
-msgstr "یکپارچگی"
-
-#: www/views/includes/walletHistory.html:49
-msgid "Invalid"
-msgstr "نامعتبر"
-
-#: src/js/controllers/buyAmazon.js:137
-#: src/js/controllers/buyMercadoLibre.js:137
-#: src/js/controllers/topup.js:115
-msgid "Invalid URL"
-msgstr "آدرس وبی نامعتبر"
-
-#: src/js/controllers/create.js:186
-#: src/js/controllers/import.js:345
-#: src/js/controllers/join.js:151
-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:161
-#: src/js/controllers/import.js:266
-#: src/js/controllers/join.js:125
-msgid "Invalid derivation path"
-msgstr "مسیر غیر معتبر منشاء"
-
-#: src/js/controllers/copayers.js:90
-msgid "Invitation to share a {{appName}} Wallet"
-msgstr "دعوت به اشتراک گداری یک کیف پول {{appName}}"
-
-#: www/views/mercadoLibreCards.html:20
-#: www/views/modals/mercadolibre-card-details.html:48
-msgid "Invoice expired"
-msgstr "فاکتور منقضی شده"
-
-#: src/js/controllers/feedback/send.js:79
-msgid "Is there anything we could do better?"
-msgstr "آیا چیزی وجود دارد که ما بهتر انجام دهیم?"
-
-#: www/views/backup.html:54
-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:151
-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 "برای پرداخت فقط کد را اسکن کن."
-
-#: 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:68
-msgid "Language"
-msgstr "زبان"
-
-#: www/views/bitpayCard.html:61
-msgid "Last Month"
-msgstr "ماه گذشته"
-
-#: src/js/controllers/confirm.js:132
-#: www/views/preferences.html:48
-#: www/views/preferencesCash.html:18
-#: www/views/tx-details.html:94
-msgid "Learn more"
-msgstr "بیشتر بیاموزید"
-
-#: www/views/backup.html:43
-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:100
-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/includes/logOptions.html:3
-msgid "Log options"
-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:85
-msgid "Me"
-msgstr "من"
-
-#: src/js/controllers/feedback/rateCard.js:32
-msgid "Meh - it's alright"
-msgstr "این اشکالی ندارد"
-
-#: src/js/controllers/tx-details.js:165
-#: www/views/modals/paypro.html:48
-#: www/views/modals/txp-details.html:93
-#: www/views/tx-details.html:72
-msgid "Memo"
-msgstr "یادداشت"
-
-#: www/views/mercadoLibre.html:6
-msgid "Mercado Livre Brazil Gift Cards"
-msgstr "کارت هدیه Mercado Livre برزیل"
-
-#: src/js/controllers/buyMercadoLibre.js:98
-msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr "خدمات کارت هدیه Mercadolibre در این لحظه در دسترس نمی باشد. لطفا دوباره بعدا امتحان کنید."
-
-#: www/views/modals/txp-details.html:131
-msgid "Merchant Message"
-msgstr "پیام پذیرنده"
-
-#: www/views/buyAmazon.html:55
-#: www/views/buyMercadoLibre.html:54
-#: www/views/topup.html:63
-msgid "Miner Fee"
-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:61
-#: 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:131
-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:49
-#: www/views/buyMercadoLibre.html:48
-#: www/views/topup.html:56
-msgid "Network Cost"
-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:126
-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:115
-#: src/js/controllers/buyMercadoLibre.js:115
-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/preferencesLogs.html:16
-msgid "No entries for this log level"
-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:44
-#: src/js/controllers/topup.js:47
-msgid "No signing proposal: No private key"
-msgstr "بدون پیشنهاد امضا: بدون کلید خصوصی"
-
-#: www/views/walletDetails.html:204
-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:300
-#: src/js/controllers/buyMercadoLibre.js:292
-#: src/js/controllers/confirm.js:85
-#: src/js/controllers/topup.js:265
-msgid "No wallets available"
-msgstr "هیچ کیف پولی موجود نیست"
-
-#: www/views/paperWallet.html:45
-msgid "No wallets available to receive funds"
-msgstr "هیچ کیف پولی برای دریافت وجه موجود نیست"
-
-#: www/views/cashScan.html:15
-msgid "No wallets eligible for Bitcoin Cash support"
-msgstr "هیچ کیف پول واجد شرایطی برای پشتیبانی بیتکوین کش وجود ندارد"
-
-#: src/js/controllers/cashScan.js:58
-msgid "Non BIP44 wallet"
-msgstr "کیف پول غیر BIP44"
-
-#: www/views/cashScan.html:46
-msgid "Non eligible BTC wallets"
-msgstr "کیف پول BTC غیر واجد شرایط"
-
-#: src/js/services/feeService.js:12
-msgid "Normal"
-msgstr "نرمال"
-
-#: src/js/services/bwcError.js:80
-msgid "Not authorized"
-msgstr "مجاز نیست"
-
-#: src/js/controllers/confirm.js:307
-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/backup.html:19
-msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-msgstr "نکته: اگر این کیف پول BCH از کیف پول BTC کپی برداری شده است،هر دو عبارت بازیابی مشترکی دارند."
-
-#: 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:61
-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:312
-#: src/js/controllers/topup.js:286
-#: src/js/services/incomingData.js:153
-#: 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 "ای وای نه!"
-
-#: src/js/controllers/buyMercadoLibre.js:306
-msgid "Ok"
-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/cashScan.js:19
-#: src/js/controllers/preferences.js:66
-#: src/js/controllers/preferencesCash.js:33
-#: src/js/controllers/tab-settings.js:52
-#: src/js/controllers/tx-details.js:55
-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:192
-msgid "Open Explorer"
-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 "باز کردن وب سایت"
-
-#: src/js/controllers/preferencesCash.js:32
-msgid "Open bitcoincash.org?"
-msgstr "باز کردن bitcoincash.org?"
-
-#: src/js/controllers/cashScan.js:18
-msgid "Open the recovery tool."
-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:105
-#: www/views/join.html:96
-#: www/views/tab-create-personal.html:69
-#: www/views/tab-create-personal.html:77
-#: www/views/tab-create-shared.html:106
-#: www/views/tab-create-shared.html:98
-#: www/views/tab-import-file.html:18
-#: www/views/tab-import-phrase.html:41
-msgid "Password"
-msgstr "رمز عبور"
-
-#: src/js/controllers/import.js:98
-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:51
-#: 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:44
-#: www/views/confirm.html:124
-#: www/views/includes/walletActivity.html:11
-#: www/views/modals/txp-details.html:42
-msgid "Payment Sent"
-msgstr "پرداخت ارسال شد"
-
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-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 ساعت پس از ساخته شدن می تواند حذف شود."
-
-#: src/js/services/incomingData.js:152
-msgid "Payment address was translated to new Bitcoin Cash address format:"
-msgstr "آدرس پرداخت به فرمت جدید آدرس بیتکوین کش ترجمه شده است:"
-
-#: www/views/modals/txp-details.html:107
-msgid "Payment details"
-msgstr "جزئیات پرداخت"
-
-#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr "درخواست پرداخت"
-
-#: www/views/mercadoLibreCards.html:22
-#: www/views/modals/mercadolibre-card-details.html:39
-msgid "Pending"
-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:403
-msgid "Personal Wallet"
-msgstr "کیف پول شخصی"
-
-#: www/views/backup.html:25
-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:278
-msgid "Please enter the recovery phrase"
-msgstr "لطفا عبارت بازیابی را وارد نمایید"
-
-#: src/js/controllers/create.js:174
-#: src/js/controllers/join.js:139
-msgid "Please enter the wallet recovery phrase"
-msgstr "لطفا عبارت بازیابی کیف پول را وارد نمایید"
-
-#: www/views/modals/pin.html:9
-msgid "Please enter your PIN"
-msgstr "لطفا کد پین خود را وارد کنید"
-
-#: www/views/backup.html:53
-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 را ارتقا دهید"
-
-#: www/views/walletDetails.html:142
-#: www/views/walletDetails.html:62
-msgid "Please wait"
-msgstr "لطفاً منتظر بمانید"
-
-#: src/js/controllers/import.js:238
-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:1264
-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:136
-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:61
-#: src/js/controllers/tx-details.js:78
-#: www/views/confirm.html:125
-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:189
-msgid "Proposals"
-msgstr "طرح های پیشنهادی"
-
-#: src/js/controllers/buyAmazon.js:282
-msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
-msgstr "مقدار خرید محدود به {{limitPerDay}}{{currency}} در هر روز است"
-
-#: src/js/controllers/buyMercadoLibre.js:281
-msgid "Purchase amount must be a value between 50 and 2000"
-msgstr "مقدار خرید باید مابین 50 و 1379 باشد"
-
-#: 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:84
-#: src/js/controllers/join.js:68
-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 "ادامه مطلب"
-
-#: src/js/controllers/preferences.js:65
-#: src/js/controllers/tx-details.js:54
-msgid "Read more in our Wiki"
-msgstr "اطلاعات بیشتر در ویکی"
-
-#: src/js/controllers/cashScan.js:61
-msgid "Read only wallet"
-msgstr "کبف پول تنها خواندنی"
-
-#: www/views/tab-receive.html:3
-#: www/views/tabs.html:7
-msgid "Receive"
-msgstr "دریافت"
-
-#: www/views/customAmount.html:44
-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:130
-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:21
-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 "عبارت بازیابی"
-
-#: src/js/services/onGoingProcess.js:26
-msgid "Recreating Wallet..."
-msgstr "در حال ایجاد مجدد کیف پول..."
-
-#: www/views/modals/mercadolibre-card-details.html:22
-msgid "Redeem now"
-msgstr "الان بازیابی کن"
-
-#: src/js/controllers/modals/txpDetails.js:63
-#: src/js/controllers/tx-details.js:80
-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
-#: www/views/modals/mercadolibre-card-details.html:69
-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 l ({{email}}) از این دستگاه حذف شود?"
-
-#: www/views/join.html:116
-#: www/views/join.html:124
-#: www/views/tab-create-personal.html:86
-#: www/views/tab-create-personal.html:94
-#: www/views/tab-create-shared.html:115
-#: www/views/tab-create-shared.html:123
-#: 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:56
-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 "درخواست رمز عبور مربوط به خرج(Spend)"
-
-#: www/views/tab-create-shared.html:44
-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 "لطفا اثر انگشت خود را اسکن کنید"
-
-#: www/views/preferencesCash.html:23
-msgid "Scan your wallets for Bitcoin Cash"
-msgstr "کیف پول خود را برای بیتکوین کش اسکن کنید"
-
-#: src/js/services/onGoingProcess.js:30
-msgid "Scanning Wallet funds..."
-msgstr "در حال اسکن سرمایه کیف پول..."
-
-#: www/views/includes/walletList.html:11
-msgid "Scanning 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 "جستجو و یا وارد کردن آدرس بیتکوین"
-
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "کلیپ بورد"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-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/modals/mercadolibre-card-details.html:64
-msgid "See invoice"
-msgstr "مشاهده صورت حساب"
-
-#: www/views/tab-import-file.html:7
-msgid "Select a backup file"
-msgstr "انتخاب یک فایل پشتیبان"
-
-#: src/js/controllers/tab-receive.js:139
-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/includes/logOptions.html:17
-#: www/views/tab-export-file.html:82
-msgid "Send by email"
-msgstr "ارسال توسط ایمیل"
-
-#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
-msgid "Send from"
-msgstr "ارسال از"
-
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "ارسال به"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "جای گذاری کلیپ برد"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "جای گذاری آدرس"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "انتقال بین کیف پول ها"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "اسکن کد QR"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "ارسال سریع تر بیت کوین!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "ذخیره آدرس های اغلب استفاده شده و ارسال بیت کوین به آنها تنها با یک ضربه"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "اولین تماس خود اضافه کنید"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "کیف پول بیت کوین شما خالی است"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "برای شروع، Bitcoin Cash (BCH) یا Bitcoin Core (BTC) بخرید و یا آدرس خود را به اشتراک بگذارید."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "شما می توانید از هر کیف پول و یا خدمات بیت کوین دریافت کنید."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr "برای شروع، شما نیاز دارید که یک کیف پول ایجاد کنید و مقداری بیتکوین تهیه کنید."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "خرید بیت کوین همین الان"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-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:545
-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:129
-msgid "Sent Funds"
-msgstr "وجوه ارسال شده"
-
-#: src/js/services/bwcError.js:38
-msgid "Server response could not be verified"
-msgstr "پاسخ سرویس دهنده بررسی نشد"
-
-#: src/js/controllers/buyAmazon.js:97
-#: src/js/controllers/buyMercadoLibre.js:97
-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:85
-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:48
-#: www/views/tab-create-personal.html:27
-#: www/views/tab-create-shared.html:56
-#: www/views/tab-export-file.html:24
-#: www/views/tab-import-file.html:29
-#: www/views/tab-import-hardware.html:30
-#: www/views/tab-import-phrase.html:35
-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:122
-#: www/views/tab-create-shared.html:151
-msgid "Single Address Wallet"
-msgstr "کیف پول تک آدرسه"
-
-#: www/views/onboarding/collectEmail.html:40
-#: www/views/onboarding/tour.html:11
-msgid "Skip"
-msgstr "رد شدن"
-
-#: src/js/controllers/confirm.js:371
-#: src/js/controllers/modals/txpDetails.js:47
-msgid "Slide to accept"
-msgstr "برای قبول بکشید"
-
-#: www/views/buyAmazon.html:96
-msgid "Slide to buy"
-msgstr "برای خرید بکشید"
-
-#: src/js/controllers/confirm.js:365
-msgid "Slide to pay"
-msgstr "برای پرداخت بکشید"
-
-#: src/js/controllers/confirm.js:377
-#: src/js/controllers/modals/txpDetails.js:40
-msgid "Slide to send"
-msgstr "برای ارسال بکشید"
-
-#: www/views/cashScan.html:56
-msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-msgstr "بعضی از کیف های پول شما برای پشتیبانی بیتکوین کش مناسب نیستند. شما می توانید به سرمایه BCH دسترسی پیدا کنید با استفاده از"
-
-#: src/js/controllers/create.js:88
-#: src/js/controllers/join.js:71
-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:173
-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/mercadoLibreCards.html:21
-#: www/views/modals/mercadolibre-card-details.html:42
-msgid "Still pending"
-msgstr "هنوز در انتظار"
-
-#: www/views/topup.html:101
-msgid "Success"
-msgstr "موفقیت"
-
-#: src/js/services/feeService.js:14
-msgid "Super Economy"
-msgstr "اقتصاد عالی"
-
-#: www/views/preferencesCash.html:11
-msgid "Support Bitcoin Cash"
-msgstr "بیتکوین کش را پشتیبانی کنید"
-
-#: www/views/paperWallet.html:7
-msgid "Sweep"
-msgstr "وارد کردن و تغییر آدرس به جدید(sweep)"
-
-#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "جاروب کردن کیف پول کاغذی"
-
-#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
-msgstr "جاروب کردن کیف پول کاغذی"
-
-#: src/js/services/onGoingProcess.js:33
-msgid "Sweeping Wallet..."
-msgstr "در حال وارد کردن کیف و تغییر آدرس به جدید(sweep)..."
-
-#: 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:132
-#: www/views/walletDetails.html:52
-msgid "Tap and hold to show"
-msgstr "برای نمایش فشار دهید و نگه دارید"
-
-#: www/views/includes/walletInfo.html:3
-msgid "Tap to recreate"
-msgstr "برای ایجاد کلیک کنید"
-
-#: www/views/includes/walletInfo.html:4
-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:118
-#: www/views/tab-import-phrase.html:68
-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 "برنامه 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 "به عدد حداکثر تعداد آدرس های متوالی استفاده نشده (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:1139
-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:91
-#: www/views/tab-create-personal.html:63
-#: www/views/tab-create-shared.html:92
-#: www/views/tab-import-phrase.html:43
-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:229
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:335
-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:523
-msgid "This bitcoin payment request has expired."
-msgstr "این درخواست پرداخت بیتکوین منقضی شده است."
-
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "زمان انقضای پرداخت:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "درخواست پرداخت منقضی شده است"
-
-#: www/views/join.html:133
-#: www/views/tab-create-personal.html:103
-#: www/views/tab-create-shared.html:132
-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:31
-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:91
-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:87
-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:109
-#: www/views/walletDetails.html:29
-msgid "This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information."
-msgstr "این کیف پول در سرویس کیف پول بیتکوین داده شده) BWS(ثبت نشده است. شما می توانید از قسمت اطلاعات داخلی آن را محجددا بسازید."
-
-#: www/views/modals/txp-details.html:136
-#: 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:109
-#: 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 "برای شروع، بیتکوین بخرید و یا آدرس خود را به اشتراک بگذارید. شما می توانید از هر کیف پول یا سرویسی بیتکوین دریافت کنید."
-
-#: src/js/services/bitpayAccountService.js:73
-msgid "To {{reason}} you must first add your BitPay account - {{email}}"
-msgstr "برای انجام {{reason}} شما ابتدا باید حساب - {{email}} BitPay خود را اضافه کنید"
-
-#: src/js/services/onGoingProcess.js:48
-msgid "Top up in progress..."
-msgstr "در حال پردازش انتقال به صورت Top Up..."
-
-#: src/js/controllers/topup.js:206
-msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-msgstr "در حال انتقال {{amountStr}} به صورت Top Up به کارت اعتباری {{cardLastNumber}}"
-
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "راه اندازی ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "تبدیل BTC به BCH خود طرف چند دقیقه."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "برای شروع فرایند باید به موجودی کیف پول خود اضافه کنید."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "فرایند سریع است و شما مقدار ارز تبدیل شده را در کیف پول خود دریافت خواهید کرد."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "این سرویس توسط همکار ما ShapeShift به عنوان یک طرف سوم انجام می شود و هزینه ای اندک برای آن دریافت می کند. قبل از شروع تراکنش هزینه نشان داده می شود."
-
-#: www/views/buyAmazon.html:61
-#: www/views/buyMercadoLibre.html:60
-#: www/views/modals/wallet-balance.html:23
-#: www/views/topup.html:70
-msgid "Total"
-msgstr "مجموع"
-
-#: www/views/walletDetails.html:196
-msgid "Total Locked Balance"
-msgstr "مجموع موجودی قفل شده"
-
-#: www/views/tab-create-shared.html:35
-msgid "Total number of copayers"
-msgstr "تعداد کل 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 "شناسایی توسط اثر انگشت نا موفق بود"
-
-#: src/js/controllers/tx-details.js:12
-msgid "Transaction"
-msgstr "تراکنش"
-
-#: www/views/confirm.html:126
-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:308
-#: src/js/controllers/buyMercadoLibre.js:301
-#: src/js/controllers/topup.js:281
-msgid "Transaction has not been created"
-msgstr "تراکنش ایجاد نشده است"
-
-#: www/views/topup.html:104
-msgid "Transaction initiated"
-msgstr "تراکنش آغاز شد"
-
-#: src/js/controllers/tx-details.js:119
-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:55
-msgid "Transactions without fee are not supported."
-msgstr "تراکنش های بدون کارمزد پشتیبانی نمی شوند."
-
-#: src/js/controllers/paperWallet.js:109
-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 "بیتکوین را به دلار تبدیل کنید، هر جایی که ® ویزا کارت مورد قبول است استفاده کنید."
-
-#: 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/walletDetails.html:190
-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:217
-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:12
-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:191
-msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "مشاهده تراکنش در Explorer.Bitcoin.com"
-
-#: src/js/controllers/tab-home.js:148
-msgid "View Update"
-msgstr "مشاهده به روز رسانی"
-
-#: www/views/tx-details.html:147
-msgid "View on blockchain"
-msgstr "مشاهده در زنجیره بلاک ها"
-
-#: www/views/mercadoLibre.html:26
-msgid "Visit mercadolivre.com.br →"
-msgstr "مشاهده mercadolivre.com.br →"
-
-#: www/views/walletDetails.html:182
-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 "اخطار: قرار ندادن کلید خصوصی به شما اجازه مشاهده تاریخچه تراکنش، موجودی و ایجاد پیشنهاد از قسمت استخراج را می دهد. به هر حال، اجازه تایید(امضاء) پیشنهاد را نخواهید داشت، بنابراین دارایی ها از قسمت 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 "اخطار: کلید خصوصی این کیف پول در دسترس نیست. قسمت export به شما اجازه می دهد که موجودی کیف پول و تاریخچه تراکنش را ببینید و امکان پیشنهاد تراکنش را از قسمت export می دهد. به هر حال، اجازه تایید(امضاء) پیشنهاد را نخواهید داشت، بنابراین دارایی ها از قسمت export قابل دسترسی نخواهند بود ."
-
-#: 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:29
-msgid "Wallet Configuration (m-n)"
-msgstr "پیکربندی کیف پول (m-n)"
-
-#: www/views/onboarding/collectEmail.html:5
-msgid "Wallet Created"
-msgstr "کیف پول ایجاد شده"
-
-#: www/views/preferencesInformation.html:23
-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:60
-#: www/views/tab-create-personal.html:38
-#: www/views/tab-create-shared.html:67
-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:35
-msgid "Wallet Network"
-msgstr "شبکه کیف پول"
-
-#: www/views/join.html:77
-#: www/views/tab-create-personal.html:50
-#: www/views/tab-create-shared.html:79
-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:73
-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:61
-msgid "Wallet Type"
-msgstr "نوع کیف پول"
-
-#: src/js/services/bwcError.js:59
-msgid "Wallet already exists"
-msgstr "کیف پول از قبل وجود دارد"
-
-#: src/js/services/profileService.js:516
-msgid "Wallet already in {{appName}}"
-msgstr "کیف پول در حال حاضر در {{appName}}"
-
-#: 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:169
-msgid "Wallet not backed up"
-msgstr "کیف پول پشتیبان گیری نشده است"
-
-#: src/js/services/bwcError.js:68
-msgid "Wallet not found"
-msgstr "کیف پول یافت نشد"
-
-#: src/js/controllers/cashScan.js:81
-#: src/js/controllers/tab-home.js:230
-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:12
-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 "کیف های پول"
-
-#: src/js/controllers/addressbookView.js:36
-#: src/js/controllers/modals/txpDetails.js:153
-#: src/js/controllers/modals/txpDetails.js:170
-#: src/js/controllers/preferencesDelete.js:24
-#: 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:35
-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 "آیا مایل به امتیاز دهی {{appName}} در app store هستید?"
-
-#: www/views/onboarding/notifications.html:4
-msgid "Would you like to receive push notifications about payments?"
-msgstr "آیا مایل به دریافت اعلان ها به صورت Push Notification برای پرداخت ها هستید?"
-
-#: src/js/controllers/import.js:288
-msgid "Wrong number of recovery words:"
-msgstr "تعداد اشتباه کلمات بازیابی:"
-
-#: src/js/services/bwcError.js:140
-msgid "Wrong spending password"
-msgstr "رمز عبور مربوط به خرج(Spend) اشتباه است"
-
-#: 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:15
-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:64
-msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte."
-msgstr "شما کارمزدی بیشتر از {{maxFeeRecommended}} ساتوشی/بایت نباید ببینید."
-
-#: 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 شما آماده است. برای استفاده از آن در فروش گاه ها و دستگاه های خود پرداز وجوهی را به کارت خود اضافه کنید."
-
-#: www/views/mercadoLibre.html:57
-#: www/views/mercadoLibreCards.html:6
-msgid "Your Gift Cards"
-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:61
-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:1030
-msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
-msgstr "کلید کیف پول شما رمزگذاری می شود. رمز عبور خرج(spend) قادر به بازیابی نمی باشد. حتما آن را جایی بنویسید."
-
-#: www/views/includes/walletList.html:13
-#: www/views/includes/walletSelector.html:21
-#: www/views/paperWallet.html:33
-#: www/views/tab-receive.html:72
-#: www/views/walletDetails.html:131
-#: www/views/walletDetails.html:51
-msgid "[Balance Hidden]"
-msgstr "[موجودی پنهان]"
-
-#: www/views/walletDetails.html:141
-#: www/views/walletDetails.html:61
-msgid "[Scanning Funds]"
-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:404
-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 "آماده سازی..."
-
-#: www/views/cashScan.html:57
-msgid "recovery tool."
-msgstr "ابزار بازیابی."
-
-#: src/js/controllers/buyAmazon.js:239
-msgid "{{amountStr}} for Amazon.com Gift Card"
-msgstr "{{amountStr}} برای کارت هدیه Amazon.com"
-
-#: src/js/controllers/buyMercadoLibre.js:237
-msgid "{{amountStr}} for Mercado Livre Brazil Gift Card"
-msgstr "{{amountStr}} برای کارت هدیه Mercado Livre Brazil"
-
-#: 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}} به سرویس کیف پول بیتکوین (BWS) بستگی دارد برای اطلاعات زنجیره بلاک ها، عملیات شبکه و همگامسازی Copayer. تنظیمات پیش فرض به https://bws.bitpay.com اشاره می کند(BitPay's public BWS instance)."
-
-#: src/js/controllers/confirm.js:408
-msgid "{{fee}} will be deducted for bitcoin networking fees."
-msgstr "{{fee}} برای کارمزد شبکه بیتکوین کسر خواهد شد."
-
-#: www/views/confirm.html:85
-msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-msgstr "{{tx.txp[wallet.id].feeRatePerStr}} مقدار ارسالی"
-
-#: www/views/walletDetails.html:218
-msgid "{{updatingTxHistoryProgress}} transactions downloaded"
-msgstr "{{updatingTxHistoryProgress}} تراکنش دانلود شد"
-
-#: www/views/cashScan.html:33
-#: www/views/copayers.html:46
-#: www/views/includes/walletInfo.html:18
-msgid "{{wallet.m}}-of-{{wallet.n}}"
-msgstr "{{wallet.m}} از {{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "جامعه"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "توییتر Bitcoin.com"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "کاوش Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Bitcoin Cash Games"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "اشتراک گذاری نرم افزار کیف پول"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "اخبار"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "استخر استخراج"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "ابزارها"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "نمودارهای قیمت بیت کوین"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "رایگان Bitcoin Cash"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "کیف پول بیت کوین شما آماده است!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "آدرس شامل اطلاعات ارز نیست. از ارسال ارز صحیح اطمینان حاصل کنید."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "بررسی تراکنش"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "مبلغ ارسالی به وسیله شما"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "مبلغ تبدیل شده"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "به:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "اضافه کردن یادداشت شخصی"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "پیشنهاد شده توسط تاجر:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "متن را اینجا وارد کنید"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "یادداشت شخصی:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "کمتر از 1 سنت"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "این صورت حساب دیگر پرداخت ها را نمی پذیرد"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "ارسال حداکثر مقدار"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "خطای ناشناخته."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "هیچ کیف پولی از نوع Bitcoin Cash برای انتقال وجه یافت نشد."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "Bitcoin Cash یافت نشد."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Bitcoin Core یافت شده:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "هیچ کیف پولی از نوع Bitcoin Core برای انتقال وجه یافت نشد."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "Bitcoin Core یافت نشد."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "اسکن انجام نشد"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "داده ها شناسایی نشد."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "پشتیبانی نشده"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet پشتیبانی نمی شود."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "آدرس"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "باز کردن در مرورگر"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "آدرس نامعتبر"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "مبلغ تعریف نشده است"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "مقدار زیر مقدار حداقل است"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "مقدار بالاتر از حد است"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "پاسخ نامعتبر از Shapeshift"
-
diff --git a/i18n/po/fr/template-fr.po b/i18n/po/fr.po
similarity index 91%
rename from i18n/po/fr/template-fr.po
rename to i18n/po/fr.po
index ba3d98244..11a340b0c 100644
--- a/i18n/po/fr/template-fr.po
+++ b/i18n/po/fr.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
+"Project-Id-Version: copay\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: fr\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: French\n"
"Language: fr\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-10 08:58-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -77,30 +77,6 @@ msgstr "Compte"
msgid "Account Number"
msgstr "Numéro de compte"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Instant transactions with low fees"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Fonds insuffisants"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Changer de devise"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Fonds disponibles"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Utiliser tous les fonds disponibles"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Suivant"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "Comptes"
@@ -226,20 +202,6 @@ msgstr "C'est presque terminé ! Vérifions."
msgid "Alternative Currency"
msgstr "Devise alternative"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Affichage des prix"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Cryptocurrency"
-
#: src/js/controllers/buyAmazon.js:98
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."
@@ -388,7 +350,7 @@ msgstr "N’oubliez pas de conserver votre phrase de récupération dans un endr
#: www/views/preferencesBitpayServices.html:9
msgid "BitPay Visa® Cards"
-msgstr "BitPay Visa® cartes"
+msgstr "BitPay Visa® Cards"
#: www/views/addressbook.add.html:38
#: www/views/includes/incomingDataMenu.html:29
@@ -471,7 +433,6 @@ msgid "Buy & Sell Bitcoin"
msgstr "Acheter & vendre des bitcoins"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "Acheter des bitcoins"
@@ -520,8 +481,8 @@ msgid "Cannot Create Wallet"
msgstr "Impossible de créer le portefeuille"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
-msgstr "Impossible de joindre le même portefeuille plus d'une fois"
+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"
@@ -654,14 +615,10 @@ msgstr "Connexion à Glidera..."
msgid "Connection reset by peer"
msgstr "Connexion réinitialisée par un pair"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "Contacts"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Adresses fréquemment utilisées enregistrées"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "Continuer"
@@ -692,11 +649,10 @@ msgstr "Un Copayer à rejoint"
#: www/views/preferencesInformation.html:94
msgid "Copayer {{$index}}"
-msgstr "Copayeur {{$index}}"
+msgstr "Copayer {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "Copié(e) dans le presse-papier"
@@ -731,7 +687,7 @@ msgstr "Impossible d’accéder au portefeuille"
#: src/js/controllers/confirm.js:210
msgid "Could not add message to imported wallet without shared encrypting key"
-msgstr "Ne peut pas ajouter de message au portefeuille importé sans clé de chiffrement partagée"
+msgstr "Could not add message to imported wallet without shared encrypting key"
#: src/js/controllers/modals/txpDetails.js:199
msgid "Could not broadcast payment"
@@ -863,7 +819,7 @@ msgstr "Créer un portefeuille partagé"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "Créer un portefeuille bitcoin"
@@ -1031,10 +987,6 @@ msgstr "Activer les notifications e-mail"
msgid "Enable push notifications"
msgstr "Autoriser les notifications"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Malayu"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "Autorisez la caméra pour commencer."
@@ -1316,7 +1268,6 @@ msgstr "À des fins de vérification"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "De"
@@ -1377,6 +1328,10 @@ msgid "Get news and updates from BitPay"
msgstr "Obtenir les actualités et mises à jour de BitPay"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr "Commencer"
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Commencez"
@@ -1593,7 +1548,7 @@ msgstr "Afin de vérifier la sauvegarde de votre portefeuille, veuillez saisir v
#: www/views/mercadoLibreCards.html:24
#: www/views/modals/mercadolibre-card-details.html:29
msgid "Inactive"
-msgstr "Inactif"
+msgstr "Inactive"
#: www/views/includes/walletItem.html:9
#: www/views/includes/walletList.html:6
@@ -1623,7 +1578,7 @@ msgstr "Adresse réseau invalide"
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "Fonds confirmé insuffisant"
+msgstr "Fonds insuffisants"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
@@ -1997,7 +1952,7 @@ msgstr "Pas maintenant"
#: www/views/includes/output.html:15
msgid "Note"
-msgstr "Commentaire"
+msgstr "Note"
#: www/views/backup.html:19
msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
@@ -2090,7 +2045,7 @@ msgstr "Ouvrir le projet GitHub"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "Ouvrir l'explorer"
+msgstr "Ouvrir Insight"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2200,10 +2155,6 @@ msgstr "Paiement rejeté"
msgid "Payment Sent"
msgstr "Paiement envoyé"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Partager cette transaction"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "Paiement accepté, mais pas encore diffusé"
@@ -2221,7 +2172,7 @@ msgid "Payment details"
msgstr "Détails du paiement"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
+msgid "Payment request"
msgstr "Demande de paiement"
#: www/views/mercadoLibreCards.html:22
@@ -2574,14 +2525,6 @@ msgstr "Rechercher des transactions"
msgid "Search or enter bitcoin address"
msgstr "Recherchez ou saisissez une adresse bitcoin"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Presse-papiers"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Votre presse-papiers est vide"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "Rechercher des transactions"
@@ -2640,68 +2583,9 @@ msgid "Send by email"
msgstr "Envoyer par e-mail"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "Envoyer à partir de"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Envoyer à"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Coller le contenu du presse-papiers"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Coller l'adresse"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Transfert entre les portefeuilles"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Numérisez le code QR"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Envoyez des Bitcoin plus vite !"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Enregistrez les adresses fréquemment utilisées et envoyez-leurs des Bitcoins en un seul geste"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Ajoutez votre premier contact"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Votre portefeuille Bitcoin est vide"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Pour commencer, achetez des Bitcoins Cash (BCH) ou des Bitcoins Core (BTC), ou partagez votre adresse."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "Vous pouvez recevoir des Bitcoins de n'importe quel portefeuille ou service."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: 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."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Acheter des Bitcoins maintenant"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Afficher mon adresse"
-
#: www/views/includes/itemSelector.html:8
msgid "Send max amount"
msgstr "Envoyer le montant maximal"
@@ -2925,14 +2809,9 @@ msgid "Sweep"
msgstr "Balayer"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Balayer un portefeuille papier"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
-msgstr "Balayer un portefeuille papier"
+msgid "Sweep paper wallet"
+msgstr "Balayer un portefeuille de papier"
#: src/js/services/onGoingProcess.js:33
msgid "Sweeping Wallet..."
@@ -3100,14 +2979,6 @@ msgstr "Cette appli conserve vos bitcoins avec une sécurité de pointe."
msgid "This bitcoin payment request has expired."
msgstr "Cette demande de paiement bitcoin a expiré."
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "Expiration du paiement:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "La demande de paiement a expiré"
-
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
@@ -3149,6 +3020,10 @@ msgstr "À"
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}}"
@@ -3161,26 +3036,6 @@ msgstr "Rechargement en cours..."
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
msgstr "Rechargement de {{amountStr}} vers la carte de débit ({{cardLastNumber}})"
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "Démarrer ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Changez vos BTC en BCH en quelques minutes."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Pour démarrer, vous devez ajouter des fonds à votre portefeuille."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "Le processus est rapide et vous recevrez le montant changé dans votre portefeuille."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Ce service est fourni par le tiers ShapeShift, qui facturera une somme modique pour le service. Le montant sera affiché avant de démarrer la transaction."
-
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
#: www/views/modals/wallet-balance.html:23
@@ -3337,7 +3192,7 @@ msgstr "Voir les conditions d'utilisation"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Voir la transaction sur Explorer.Bitcoin.com"
+msgstr "Voir la transaction sur Insight"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3448,7 +3303,7 @@ msgstr "La phrase de récupération du portefeuille est invalide"
#: www/views/preferencesAdvanced.html:25
#: www/views/tab-import-phrase.html:73
msgid "Wallet Service URL"
-msgstr "URL de service"
+msgstr "Wallet Service URL"
#: www/views/preferences.html:4
msgid "Wallet Settings"
@@ -3772,172 +3627,3 @@ msgstr "{{updatingTxHistoryProgress}} transactions téléchargées"
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.m}}-sur-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Communauté"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Reddit Bitcoin Cash"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Twitter Bitcoin.com"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Explorez Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Jeux Bitcoin Cash"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Partager l’application Wallet"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "Nouvelles"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Coopératives de mineurs"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Outils"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Graphiques du prix du Bitcoin"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Bitcoin Cash Gratuit"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "Vos portefeuilles bitcoin sont prêts !"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "L'adresse ne contient pas d’informations de devise, assurez-vous que vous envoyez la bonne devise."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Vérifier la transaction"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Vous envoyez"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Vous changez"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "À :"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Ajouter une note personnelle"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Suggéré par le marchand :"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Entrez le texte ici"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Note personnelle :"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Moins de 1 centime"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "Cette facture n’accepte plus les paiements"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Envoi du montant maximal"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Erreur inconnue."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "Aucun portefeuille Bitcoin Cash auquel transférer des fonds trouvé."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "Pas de Bitcoin Cash trouvé."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Bitcoin Core trouvé :"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "Aucun portefeuille Bitcoin Core auquel transférer des fonds trouvé."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "Pas de Bitcoin Core trouvé."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "Échec de l'analyse"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "Données non reconnues."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "Non pris en charge"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet n’est pas pris en charge."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Ouvrir dans le navigateur web"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Adresse invalide"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "Le montant n’est pas défini"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Le montant est inférieur au minimum"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "Le montant est supérieur à la limite"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Réponse de Shapeshift invalide"
-
diff --git a/i18n/po/it/template-it.po b/i18n/po/it.po
similarity index 91%
rename from i18n/po/it/template-it.po
rename to i18n/po/it.po
index 0ea7daa0a..efbebbd96 100644
--- a/i18n/po/it/template-it.po
+++ b/i18n/po/it.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
+"Project-Id-Version: copay\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: it\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: Italian\n"
"Language: it\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-09 10:33-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -77,30 +77,6 @@ msgstr "Conto"
msgid "Account Number"
msgstr "Numero del Conto"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Transazioni istantanee con commissioni basse"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Fondi insufficienti"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Cambia valuta"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Fondi disponibili"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Usa tutti i fondi disponibili"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Avanti"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "Account"
@@ -226,20 +202,6 @@ msgstr "Quasi finito! Ripassiamo."
msgid "Alternative Currency"
msgstr "Valuta alternativa"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Visualizzazione prezzi"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Criptovaluta"
-
#: src/js/controllers/buyAmazon.js:98
msgid "Amazon.com is not available at this moment. Please try back later."
msgstr "Ia tabella dei guadagni di Amazon.com non è disponibile al momento. Per favore riprova piu tardi."
@@ -397,17 +359,17 @@ msgstr "Indirizzo Bitcoin"
#: www/views/cashScan.html:4
msgid "Bitcoin Cash (BCH) Balances"
-msgstr "Saldi Bitcoin Cash (BCH)"
+msgstr "Saldi di Bitcoin Cash (BCH)"
#: www/views/preferencesCash.html:3
#: www/views/tab-settings.html:47
msgid "Bitcoin Cash Support"
-msgstr "Supporto di Bitcoin Cash"
+msgstr "Supporto Bitcoin Cash"
#: www/views/tab-home.html:98
#: www/views/tab-settings.html:115
msgid "Bitcoin Cash Wallets"
-msgstr "Portafogli Bitcoin Cash"
+msgstr ""
#: www/views/modals/chooseFeeLevel.html:4
#: www/views/preferencesFee.html:4
@@ -418,7 +380,7 @@ msgstr "Criterio delle Commissioni del Bitcoin Network"
#: www/views/tab-home.html:83
#: www/views/tab-settings.html:107
msgid "Bitcoin Core Wallets"
-msgstr "Portafogli Bitcoin Core"
+msgstr ""
#: src/js/services/incomingData.js:151
msgid "Bitcoin cash Payment"
@@ -471,7 +433,6 @@ msgid "Buy & Sell Bitcoin"
msgstr "Comprare & Vendere Bitcoin"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "Acquista Bitcoin"
@@ -520,7 +481,7 @@ msgid "Cannot Create Wallet"
msgstr "Impossibile creare portafoglio"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
+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
@@ -654,14 +615,10 @@ msgstr "Connessione a Glidera..."
msgid "Connection reset by peer"
msgstr "Connessione ripristinata dall'utente"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "Contatti"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Indirizzi più utilizzati salvati"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "Continua"
@@ -692,11 +649,10 @@ msgstr "Copayer iscritto"
#: www/views/preferencesInformation.html:94
msgid "Copayer {{$index}}"
-msgstr "Pagatore {{$index}}"
+msgstr "Copayer {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "Copiato negli appunti"
@@ -863,7 +819,7 @@ msgstr "Creare portafoglio condiviso"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "Creare portafoglio bitcoin"
@@ -980,7 +936,7 @@ msgstr "Non vedi la tua lingua su Crowdin? Contatta il proprietario su Crowdin!
#: www/views/tab-export-file.html:59
#: www/views/tab-home.html:22
msgid "Download"
-msgstr "Scarica"
+msgstr "Download"
#: www/views/cashScan.html:37
msgid "Duplicate for BCH"
@@ -1017,7 +973,7 @@ msgstr "Raggiunto il limite degli indirizzi vuoti. Non possono essere generati n
#: www/views/preferencesCash.html:17
msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-msgstr "Attivare la creazione di portafoglio Bitcoin Cash."
+msgstr "Attivare la creazione del portafoglio funzionalità Bitcoin Cash e all'interno dell'App."
#: www/views/tab-scan.html:19
msgid "Enable camera access in your device settings to get started."
@@ -1031,10 +987,6 @@ msgstr "Attiva Notifiche Email"
msgid "Enable push notifications"
msgstr "Abilitare le notifiche push"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Attivare l'audio"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "Abilita la fotocamera per iniziare."
@@ -1316,7 +1268,6 @@ msgstr "Per finalità di controllo"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "Da"
@@ -1377,6 +1328,10 @@ msgid "Get news and updates from BitPay"
msgstr "Ricevi notizie e aggiornamenti da BitPay"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr "Per iniziare"
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Inizia"
@@ -1392,7 +1347,7 @@ msgstr "Ottenendo i livelli di commissione..."
#: www/views/buyAmazon.html:43
#: www/views/buyMercadoLibre.html:42
msgid "Gift Card"
-msgstr "Carta Regalo"
+msgstr ""
#: www/views/modals/mercadolibre-card-details.html:30
#: www/views/modals/mercadolibre-card-details.html:35
@@ -1623,7 +1578,7 @@ msgstr "Indirizzo di rete non corretto"
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "Insufficienti fondi confermati"
+msgstr "Fondi insufficienti"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
@@ -1633,7 +1588,7 @@ msgstr "Fondi insufficienti per la commissione"
#: www/views/tab-settings.html:123
msgid "Integrations"
-msgstr "Integrazioni"
+msgstr ""
#: www/views/includes/walletHistory.html:49
msgid "Invalid"
@@ -2090,7 +2045,7 @@ msgstr "Aprire il progetto GitHub"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "Aprire Explorer"
+msgstr "Aprire Insight"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2200,10 +2155,6 @@ msgstr "Pagamento Rifiutato"
msgid "Payment Sent"
msgstr "Pagamento Inviato"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Condividi questa transazione"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "Pagamento accettato, ma non ancora inviata alla rete"
@@ -2221,7 +2172,7 @@ msgid "Payment details"
msgstr "Dettagli pagamento"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
+msgid "Payment request"
msgstr "Richiesta di pagamento"
#: www/views/mercadoLibreCards.html:22
@@ -2552,7 +2503,7 @@ msgstr "Per cortesia procedere alla scansione dell'impronta digitale"
#: www/views/preferencesCash.html:23
msgid "Scan your wallets for Bitcoin Cash"
-msgstr "Scansiona il tuo portafogli Bitcoin Cash"
+msgstr "Cercare nei tuoi portafogli per Bitcoin Cash"
#: src/js/services/onGoingProcess.js:30
msgid "Scanning Wallet funds..."
@@ -2574,14 +2525,6 @@ msgstr "Cerca Transazioni"
msgid "Search or enter bitcoin address"
msgstr "Cerca o inserisci indirizzo bitcoin"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Appunti"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Gli appunti sono vuoti"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "Ricerca transazioni"
@@ -2640,68 +2583,9 @@ msgid "Send by email"
msgstr "Invia via email"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "Inviata Da"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Invia a"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Incolla appunti"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Incolla indirizzo"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Trasferisci tra portafogli"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Scansiona codice QR"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Invia Bitcoin più velocemente!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Salva gli indirizzi più utilizzati e invia Bitcoin con un solo tocco"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Aggiungi il tuo primo contatto"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Il tuo portafoglio Bitcoin è vuoto"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Per iniziare, acquista Bitcoin Cash (BCH) o Bitcoin Core (BTC), oppure condividi il tuo indirizzo."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "Puoi ricevere Bitcoin da qualsiasi portafoglio o servizio."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: 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."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Acquista subito Bitcoin"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Visualizza il mio indirizzo"
-
#: www/views/includes/itemSelector.html:8
msgid "Send max amount"
msgstr "Inviare l'importo massimo"
@@ -2918,20 +2802,15 @@ msgstr "Super Economica"
#: www/views/preferencesCash.html:11
msgid "Support Bitcoin Cash"
-msgstr "Supporta Bitcoin Cash"
+msgstr "Supporto Bitcoin Cash"
#: www/views/paperWallet.html:7
msgid "Sweep"
msgstr "Spazzola"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Spazzare il portafoglio di carta"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
+msgid "Sweep paper wallet"
msgstr "Spazzare il portafoglio di carta"
#: src/js/services/onGoingProcess.js:33
@@ -3100,14 +2979,6 @@ msgstr "Questa app memorizza i tuoi bitcoin con sicurezza all'avanguardia."
msgid "This bitcoin payment request has expired."
msgstr "Questa richiesta di pagamento in bitcoin è scaduta."
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "Scadenza del pagamento:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "La richiesta di pagamento è scaduta"
-
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
@@ -3149,6 +3020,10 @@ msgstr "A"
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 "Per {{reason}} è necessario innanzitutto aggiungere il tuo account BitPay - {{email}}"
@@ -3161,26 +3036,6 @@ msgstr "Ricarica in corso..."
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
msgstr "Ricaricare di {{amountStr}} sulla carta di debito ({{cardLastNumber}})"
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "Avvia ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Cambia i tuoi BTC in BCH in pochi minuti."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Per avviare il processo devi aggiungere fondi al tuo portafoglio."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "Il processo è veloce e riceverai l'importo cambiato nel tuo portafoglio."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Questo servizio è fornito dalla terza parte ShapeShift, che addebiterà una piccola commissione per lo stesso. La commissione sarà mostrata prima di iniziare la transazione."
-
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
#: www/views/modals/wallet-balance.html:23
@@ -3337,7 +3192,7 @@ msgstr "Visualizza i termini di servizio"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Visualizza transazione a Explorer.Bitcoin.com"
+msgstr "Visualizzazione della transazione su Insight"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3772,172 +3627,3 @@ msgstr "{{updatingTxHistoryProgress}} transazioni scaricate"
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.m}}-di-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Community"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash su Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Bitcoin.com su Twitter"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Esplora Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Giochi Bitcoin Cash"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Condividere l'app Portafoglio"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "News"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Mining Pool"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Strumenti"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Tabella prezzi Bitcoin"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Bitcoin Cash gratis"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "I tuoi portafogli Bitcoin sono pronti!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "L'indirizzo non contiene informazioni sulla valuta. Verifica di inviare la valuta corretta."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Rivedi transazione"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Stai inviando"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Stai spostando"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "A:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Aggiungi nota personale"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Suggerito dal commerciante:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Inserisci il testo qui"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Nota personale:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Meno di 1 centesimo"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "Questa fattura non accetta più pagamenti"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Inviare importo massimo"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Errore sconosciuto."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "Nessun portafoglio Bitcoin Cash trovato per il trasferimento di fondi."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "Nessun Bitcoin Cash trovato."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Bitcoin Core trovato:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "Nessun portafoglio Bitcoin Core trovato per il trasferimento di fondi."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "Nessun Bitcoin Core trovato."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "Scansione non riuscita"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "Dati non riconosciuti."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "Non supportato"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet non supportato."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Aprire nel browser web"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Indirizzo non valido"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "Importo non definito"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Importo inferiore al minimo"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "Importo sopra il limite"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Risposta non valida da Shapeshift"
-
diff --git a/i18n/po/ja/template-ja.po b/i18n/po/ja.po
similarity index 91%
rename from i18n/po/ja/template-ja.po
rename to i18n/po/ja.po
index 896e8b06c..b4b4f40b8 100644
--- a/i18n/po/ja/template-ja.po
+++ b/i18n/po/ja.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
+"Project-Id-Version: copay\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: ja\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: Japanese\n"
"Language: ja\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-09 10:33-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -77,30 +77,6 @@ msgstr "ポケット"
msgid "Account Number"
msgstr "ポケット番号"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "僅かな手数料で即時決済"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "残高不足"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "通貨を変更"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "利用可能な残高"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "利用可能な資金をすべて使用"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "次"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "アカウント一覧"
@@ -226,20 +202,6 @@ msgstr "ほぼ完了!確認してみましょう。"
msgid "Alternative Currency"
msgstr "表示通貨"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "価格表示"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "法定通貨"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "仮想通貨"
-
#: src/js/controllers/buyAmazon.js:98
msgid "Amazon.com is not available at this moment. Please try back later."
msgstr "Amazon.com は現在ご利用できません、また後でお試しください"
@@ -440,7 +402,7 @@ msgstr "ビットコインは世界で 最も安全な仮想通貨。"
#: www/views/preferencesFee.html:11
msgid "Bitcoin transactions include a fee collected by miners on the network."
-msgstr "ビットコインの取引はネットワークの安全を守る「採掘者」と呼ばれる方達に送る手数料が含まれます。"
+msgstr "ビットコインの取引はネットワークの安全を守る「採掘者」と呼ばれる者達に送る手数料が含まれます。"
#: www/views/buyAmazon.html:108
msgid "Bought {{amountUnitStr}}"
@@ -473,7 +435,6 @@ msgid "Buy & Sell Bitcoin"
msgstr "ビットコインの購入&売却"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "ビットコインを購入"
@@ -522,8 +483,8 @@ msgid "Cannot Create Wallet"
msgstr "ウォレットを作成できません。"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
-msgstr "同じ端末で同じウォレットに複数回参加することはできません。"
+msgid "Cannot join the same wallet more that once"
+msgstr "同じ端末で同じウォレットに複数回参加することができません。"
#: www/views/includes/bitpayCardsCard.html:2
msgid "Cards"
@@ -656,14 +617,10 @@ msgstr "Glidera に接続中…"
msgid "Connection reset by peer"
msgstr "接続がピアによってリセットされました"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "連絡先"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "よく使う保存済みのアドレス"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "続ける"
@@ -674,7 +631,7 @@ msgstr "翻訳に協力"
#: src/js/controllers/confirm.js:130
msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-msgstr "のビットコインキャッシュはビットコインと完全に異なる別通貨なので、アドレスの頭文字が異なります。"
+msgstr "Copay のビットコインキャッシュはビットコインと完全に異なる別通貨なので、アドレスの頭文字が異なります。"
#: src/js/services/bwcError.js:62
msgid "Copayer already in this wallet"
@@ -698,7 +655,6 @@ msgstr "ウォレット参加者 {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "クリップボードにコピーしました"
@@ -865,7 +821,7 @@ msgstr "共有ウォレットを作成"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "ビットコインウォレット作成"
@@ -1033,10 +989,6 @@ msgstr "メール通知を有効化"
msgid "Enable push notifications"
msgstr "プッシュ通知を有効化"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "サウンドを有効にする"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "始めるためにカメラを有効にして下さい。"
@@ -1318,7 +1270,6 @@ msgstr "監査用機能"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "送信者"
@@ -1379,13 +1330,17 @@ msgid "Get news and updates from BitPay"
msgstr "BitPay からのニュースや更新情報を受け取ります。"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr "始めよう"
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "始めよう"
#: www/views/addressbook.html:20
msgid "Get started by adding your first one."
-msgstr "連絡先を追加しましょう。"
+msgstr "初めての連絡先を追加しましょう。"
#: src/js/services/onGoingProcess.js:23
msgid "Getting fee levels..."
@@ -1394,7 +1349,7 @@ msgstr "手数料レベルを取得しています…"
#: www/views/buyAmazon.html:43
#: www/views/buyMercadoLibre.html:42
msgid "Gift Card"
-msgstr "ギフト カード"
+msgstr ""
#: www/views/modals/mercadolibre-card-details.html:30
#: www/views/modals/mercadolibre-card-details.html:35
@@ -1625,7 +1580,7 @@ msgstr "サーバーのアドレスが不正です"
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "承認済み残高不足"
+msgstr "残高不足"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
@@ -1910,7 +1865,7 @@ msgstr "バックアップは非常に重要です!"
#: www/views/addressbook.html:19
msgid "No contacts yet"
-msgstr "連絡先はありません"
+msgstr "連絡先が無い"
#: www/views/preferencesLogs.html:16
msgid "No entries for this log level"
@@ -2092,7 +2047,7 @@ msgstr "GitHub のプロジェクトを開く"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "ブロック・エクスプローラを開く"
+msgstr "Insightを開く"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2202,10 +2157,6 @@ msgstr "送金が却下されました"
msgid "Payment Sent"
msgstr "送金が完了しました"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "このトランザクションを共有"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "取引が承認されましたが、まだ送信していません。"
@@ -2223,8 +2174,8 @@ msgid "Payment details"
msgstr "支払いの詳細"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr "支払いを要求する"
+msgid "Payment request"
+msgstr "支払い請求"
#: www/views/mercadoLibreCards.html:22
#: www/views/modals/mercadolibre-card-details.html:39
@@ -2270,7 +2221,7 @@ msgstr "正しい順序で各単語をタップしてください。"
#: src/js/services/bwcError.js:101
msgid "Please upgrade Copay to perform this action"
-msgstr "この操作を実行するにはを最新バージョンに更新してください"
+msgstr "この操作を実行するにはCopayを最新バージョンに更新してください"
#: www/views/walletDetails.html:142
#: www/views/walletDetails.html:62
@@ -2576,14 +2527,6 @@ msgstr "取引を検索"
msgid "Search or enter bitcoin address"
msgstr "連絡先検索かビットコインアドレスを指定"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "クリップボード"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "クリップボードは空です"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "取引を検索"
@@ -2642,68 +2585,9 @@ msgid "Send by email"
msgstr "メールで送信"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "ここから送金"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "送金先:"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "クリップボードからペースト"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "アドレスをペースト"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "ウォレット間送金"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "QRコードを読み取る"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "ビットコイン送金をより高速に!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "よく使うアドレスを保存すればワンタップでビットコインを送金できます"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "最初の連絡先を追加"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "ビットコインウォレットが空です"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "始めるには、Bitcoin Cash (BCH) または Bitcoin Core (BTC) を購入するか、あなたのアドレスを共有してください。"
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "どのウォレットやサービスからでもビットコインを受け取ることができます。"
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr "はじめに、ビットコインウォレットを作成し、ビットコインを入手する必要があります。"
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "今すぐビットコインを購入"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "自分のアドレスを表示"
-
#: www/views/includes/itemSelector.html:8
msgid "Send max amount"
msgstr "全残高を送金"
@@ -2929,13 +2813,8 @@ msgid "Sweep"
msgstr "全残高インポート"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "ペーパーウォレットの全残高インポート"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
+msgid "Sweep paper wallet"
msgstr "ペーパーウォレットの全残高インポート"
#: src/js/services/onGoingProcess.js:33
@@ -3106,14 +2985,6 @@ msgstr "このアプリは、最先端のセキュリティであなたのビッ
msgid "This bitcoin payment request has expired."
msgstr "ビットコインペイメントの請求期限が切れています。"
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "支払い請求の有効期限:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "支払い要求の期限が切れています"
-
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
@@ -3155,6 +3026,10 @@ msgstr "宛先"
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}}"
@@ -3167,26 +3042,6 @@ msgstr "残高補充処理中..."
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
msgstr "デビットカード ({{cardLastNumber}}) に {{amountStr}} の入金を行う"
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "ShapeShiftを開始"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "数分でBTCをBCHに変換できます。"
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "処理を開始するには、資金をウォレットに追加する必要があります。"
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "処理は高速で、交換した金額がウォレットに届きます。"
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "このサービスは、少額のサービス手数料を請求する第三者組織である ShapeShift によって提供されています。手数料は取引を開始する前に表示されます。"
-
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
#: www/views/modals/wallet-balance.html:23
@@ -3343,7 +3198,7 @@ msgstr "サービス利用規約を表示"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "explorer.bitcoin.comで取引詳細を表示する"
+msgstr "Insightにて取引を表示"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3587,7 +3442,7 @@ msgstr "送金発生時のメール通知はどのメールアドレスで受け
#: www/views/addresses.html:19
msgid "Why?"
-msgstr "なぜですか?"
+msgstr "なぜ?"
#: www/views/feedback/rateApp.html:10
msgid "Would you be willing to rate {{appName}} in the app store?"
@@ -3777,173 +3632,4 @@ msgstr "{{updatingTxHistoryProgress}} 個の取引ダウンロード済み"
#: www/views/copayers.html:46
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
-msgstr "{{wallet.m}} の{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "コミュニティ"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Bitcoin.com Twitter"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Bitcoin.com を参照"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Bitcoin Cash ゲーム"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "ウォレットアプリを共有"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "ニュース"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "マイニングプール"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "ツール"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "ビットコインの価格チャート"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "無料 Bitcoin Cash"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "ビットコインウォレットが完成しました!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "アドレスに通貨情報が含まれていません。正しい通貨を送金していることを確認してください。"
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "トランザクションの確認"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "送金中: "
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "取引中: "
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "宛先:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "個人用メモを追加"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "お店からのおすすめ:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "ここにテキストを入力してください"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "個人用メモ:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "1セント以下"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "この請求書はもう支払を受け付けていません"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "全残高を送金"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "不明なエラーです。"
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "資金を送金できるビットコインキャッシュウォレットが見つかりません。"
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "ビットコインキャッシュが見つかりません。"
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "ビットコインが見つかりました:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "資金を送金できるビットコインウォレットが見つかりません。"
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "ビットコインが見つかりません。"
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "スキャンできませんでした"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "データが認識されていません。"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "未対応"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet には対応していません。"
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "ウェブブラウザで開く"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "無効なアドレス"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "金額が定義されていません"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "金額が最少額を下回っています"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "金額が上限を超えています"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Shapeshift から無効な応答がありました"
-
+msgstr "{{wallet.m}}-of-{{wallet.n}}"
diff --git a/i18n/po/ko/template-ko.po b/i18n/po/ko.po
similarity index 91%
rename from i18n/po/ko/template-ko.po
rename to i18n/po/ko.po
index 490acef30..5d59444a6 100644
--- a/i18n/po/ko/template-ko.po
+++ b/i18n/po/ko.po
@@ -8,3936 +8,3622 @@ msgstr ""
"X-Crowdin-Project: bitcoincom-wallet\n"
"X-Crowdin-Language: ko\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: emilold \n"
"Language-Team: Korean\n"
"Language: ko\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-12-15 01:07-0500\n"
-#: www/views/modals/paypro.html:34
+#: www/views/modals/paypro.html:34
msgid "(Trusted)"
msgstr "(신용 문제 없음)"
-#: www/views/includes/txp.html:23
-#: www/views/includes/walletHistory.html:64
+#: www/views/includes/txp.html:23
+#: www/views/includes/walletHistory.html:64
msgid "(possible double spend)"
msgstr "(이중 지불 주의)"
-#: www/views/modals/txp-details.html:159
+#: www/views/modals/txp-details.html:159
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:82
+#: www/views/tx-details.html:82
msgid "- {{btx.feeRateStr}} of the transaction"
msgstr "- 거래량의 {{btx.feeRateStr}}"
-#: www/views/modals/txp-details.html:102
+#: www/views/modals/txp-details.html:102
msgid "- {{tx.feeRateStr}} of the transaction"
msgstr "- 거래량의 {{tx.feeRateStr}}"
-#: www/views/feedback/rateApp.html:7
+#: 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 "앱이 마음에 드시나요? 별 다섯 개의 평점은 더 많은 사람, 더 큰 시장에 {{appName}}를 전파합니다!"
-#: www/views/mercadoLibre.html:18
-#: www/views/mercadoLibre.html:40
+#: www/views/mercadoLibre.html:18
+#: www/views/mercadoLibre.html:40
msgid "Only redeemable on Mercado Livre (Brazil)"
msgstr "메르카도 리브르(브라질)에서만 상환하실 수 있습니다."
-#: src/js/controllers/feedback/send.js:27
-#: www/views/feedback/complete.html:21
+#: 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:401
+#: src/js/controllers/confirm.js:401
msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded."
msgstr "허용되는 거래량의 최대치를 초과하였습니다. {{amountAboveMaxSizeStr}}만큼의 액수가 제외되었습니다."
-#: src/js/controllers/confirm.js:395
+#: src/js/controllers/confirm.js:395
msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided."
msgstr "지정된 UTXO 내부의 자금이 수수료보다 적은 액수입니다. {{amountBelowFeeStr}}만큼의 액수가 제외되었습니다."
-#: src/js/controllers/preferencesAbout.js:6
-#: www/views/tab-settings.html:156
+#: src/js/controllers/preferencesAbout.js:6
+#: www/views/tab-settings.html:156
msgid "About"
msgstr "정보"
-#: src/js/controllers/modals/txpDetails.js:62
-#: src/js/controllers/tx-details.js:79
+#: src/js/controllers/modals/txpDetails.js:62
+#: src/js/controllers/tx-details.js:79
msgid "Accepted"
msgstr "승인"
-#: www/views/preferencesInformation.html:72
+#: www/views/preferencesInformation.html:72
msgid "Account"
msgstr "계정"
-#: www/views/join.html:72
-#: www/views/tab-create-personal.html:45
-#: www/views/tab-create-shared.html:74
-#: www/views/tab-import-hardware.html:19
+#: www/views/join.html:72
+#: www/views/tab-create-personal.html:45
+#: www/views/tab-create-shared.html:74
+#: www/views/tab-import-hardware.html:19
msgid "Account Number"
msgstr "계정 번호"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "낮은 수수료로 빠른 송금을"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "펀드 부족"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "통화 변경"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "보유 펀드"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "전체 펀드 사용"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "다음"
-
-#: www/views/preferencesBitpayServices.html:23
+#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "계정들"
-#: www/views/bitpayCard.html:56
+#: www/views/bitpayCard.html:56
msgid "Activity"
msgstr "활동 기록"
-#: src/js/services/bitpayAccountService.js:83
+#: src/js/services/bitpayAccountService.js:83
msgid "Add Account"
msgstr "계정 추가"
-#: src/js/services/bitpayAccountService.js:69
+#: src/js/services/bitpayAccountService.js:69
msgid "Add BitPay Account?"
msgstr "BitPay 계정을 추가하시겠습니까?"
-#: www/views/addressbook.add.html:4
-#: www/views/addressbook.html:22
+#: www/views/addressbook.add.html:4
+#: www/views/addressbook.html:22
msgid "Add Contact"
msgstr "연락처 추가"
-#: www/views/bitpayCard.html:28
+#: www/views/bitpayCard.html:28
msgid "Add Funds"
msgstr "자금 추가"
-#: www/views/confirm.html:94
+#: www/views/confirm.html:94
msgid "Add Memo"
msgstr "메모 추가"
-#: www/views/join.html:87
-#: www/views/tab-create-personal.html:59
-#: www/views/tab-create-shared.html:88
+#: www/views/join.html:87
+#: www/views/tab-create-personal.html:59
+#: www/views/tab-create-shared.html:88
msgid "Add a password"
msgstr "비밀번호 추가"
-#: www/views/includes/accountSelector.html:27
+#: www/views/includes/accountSelector.html:27
msgid "Add account"
msgstr "계정 추가"
-#: www/views/join.html:90
-#: www/views/tab-create-personal.html:62
-#: www/views/tab-create-shared.html:91
+#: www/views/join.html:90
+#: www/views/tab-create-personal.html:62
+#: www/views/tab-create-shared.html:91
msgid "Add an optional password to secure the recovery phrase"
msgstr "유사시의 비밀번호 복구를 위한 2차 암호 추가하기 (선택)"
-#: www/views/includes/incomingDataMenu.html:41
+#: www/views/includes/incomingDataMenu.html:41
msgid "Add as a contact"
msgstr "연락처로 추가"
-#: src/js/controllers/confirm.js:424
+#: src/js/controllers/confirm.js:424
msgid "Add description"
msgstr "설명 추가"
-#: www/views/topup.html:6
+#: www/views/topup.html:6
msgid "Add funds"
msgstr "자금 추가"
-#: src/js/services/bitpayAccountService.js:78
+#: src/js/services/bitpayAccountService.js:78
msgid "Add this BitPay account ({{email}})?"
msgstr "이 BitPay 계정 ({{email}})을 추가하시겠습니까?"
-#: www/views/add.html:3
+#: 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
+#: 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
+#: www/views/addressbook.html:6
+#: www/views/tab-settings.html:13
msgid "Address Book"
msgstr "주소록"
-#: www/views/preferencesInformation.html:41
+#: www/views/preferencesInformation.html:41
msgid "Address Type"
msgstr "주소 종류"
-#: www/views/addresses.html:64
+#: www/views/addresses.html:64
msgid "Addresses With Balance"
msgstr "보유자산이 남아있는 주소"
-#: www/views/tab-settings.html:149
+#: www/views/tab-settings.html:149
msgid "Advanced"
msgstr "고급"
-#: www/views/advancedSettings.html:3
+#: www/views/advancedSettings.html:3
msgid "Advanced Settings"
msgstr "고급 설정"
-#: www/views/bitpayCard.html:62
+#: www/views/bitpayCard.html:62
msgid "All"
msgstr "전체 보기"
-#: www/views/allAddresses.html:3
+#: www/views/allAddresses.html:3
msgid "All Addresses"
msgstr "모든 주소"
-#: www/views/modals/wallet-balance.html:18
+#: 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
+#: 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
+#: www/views/tab-scan.html:21
msgid "Allow Camera Access"
msgstr "카메라 접근 허용하기"
-#: www/views/onboarding/notifications.html:7
+#: www/views/onboarding/notifications.html:7
msgid "Allow notifications"
msgstr "알림 허용"
-#: www/views/onboarding/disclaimer.html:14
+#: www/views/onboarding/disclaimer.html:14
msgid "Almost done! Let's review."
msgstr "거의 끝났습니다! 복습해보도록 하겠습니다."
-#: www/views/preferencesAltCurrency.html:4
-#: www/views/tab-settings.html:79
+#: www/views/preferencesAltCurrency.html:4
+#: www/views/tab-settings.html:79
msgid "Alternative Currency"
msgstr "알트 코인"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "가격 표시"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "법정 화폐"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "가상 화폐"
-
-#: src/js/controllers/buyAmazon.js:98
+#: src/js/controllers/buyAmazon.js:98
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
+#: 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
+#: src/js/services/bwcError.js:110
msgid "Amount below minimum allowed"
msgstr "최소 허용금액 미만"
-#: src/js/controllers/confirm.js:216
+#: src/js/controllers/confirm.js:216
msgid "Amount too big"
msgstr "허용금액 초과"
-#: www/views/includes/walletHistory.html:31
+#: www/views/includes/walletHistory.html:31
msgid "Amount too low to spend"
msgstr "허용금액 미만, 사용 불가"
-#: src/js/controllers/tab-home.js:147
+#: 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
+#: www/views/backupWarning.html:14
msgid "Anyone with your backup phrase can access or spend your bitcoin."
msgstr "백업 문구를 알고 있다면 그 누구나 당신의 비트코인을 사용할 수 있습니다."
-#: www/views/addresses.html:94
+#: www/views/addresses.html:94
msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
msgstr "지갑의 보유자산 송금 시 예상 수수료(기본 우선순위시)"
-#: www/views/backupWarning.html:10
+#: www/views/backupWarning.html:10
msgid "Are you being watched?"
msgstr "누군가가 뒤에서 보고 있나요?"
-#: src/js/controllers/preferencesExternal.js:15
+#: 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
+#: src/js/controllers/copayers.js:56
msgid "Are you sure you want to cancel and delete this wallet?"
msgstr "지갑이 삭제됩니다. 취소하시겠습니까?"
-#: src/js/controllers/addressbookView.js:37
+#: src/js/controllers/addressbookView.js:37
msgid "Are you sure you want to delete this contact?"
msgstr "연락처를 삭제하시겠습니까?"
-#: src/js/controllers/preferencesDelete.js:25
+#: src/js/controllers/preferencesDelete.js:25
msgid "Are you sure you want to delete this wallet?"
msgstr "지갑을 삭제하시겠습니까?"
-#: src/js/controllers/modals/txpDetails.js:154
+#: src/js/controllers/modals/txpDetails.js:154
msgid "Are you sure you want to reject this transaction?"
msgstr "정말 거래를 취소하시겠습니까?"
-#: src/js/controllers/modals/txpDetails.js:171
+#: src/js/controllers/modals/txpDetails.js:171
msgid "Are you sure you want to remove this transaction?"
msgstr "정말 거래를 삭제하시겠습니까?"
-#: src/js/controllers/onboarding/backupRequest.js:23
+#: 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
+#: 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 Card 계정에서 로그아웃하시겠습니까?"
-#: src/js/controllers/preferencesBitpayCard.js:7
-#: src/js/controllers/preferencesBitpayServices.js:20
+#: 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:10
+#: www/views/includes/walletInfo.html:10
msgid "Auditable"
msgstr "계좌 검토 가능"
-#: www/views/modals/wallet-balance.html:42
+#: www/views/modals/wallet-balance.html:42
msgid "Available"
msgstr "사용 가능"
-#: www/views/includes/available-balance.html:3
+#: www/views/includes/available-balance.html:3
msgid "Available Balance"
msgstr "보유자산"
-#: www/views/modals/chooseFeeLevel.html:24
-#: www/views/preferencesFee.html:15
+#: www/views/modals/chooseFeeLevel.html:24
+#: www/views/preferencesFee.html:15
msgid "Average confirmation time"
msgstr "평균 도착 시간"
-#: www/views/join.html:143
-#: www/views/tab-create-personal.html:113
-#: www/views/tab-create-shared.html:142
-#: www/views/tab-import-phrase.html:51
+#: www/views/join.html:143
+#: www/views/tab-create-personal.html:113
+#: www/views/tab-create-shared.html:142
+#: www/views/tab-import-phrase.html:51
msgid "BIP32 path for address derivation"
msgstr "주소 유도를 위한 BIP32 경로"
-#: www/views/cashScan.html:25
+#: www/views/cashScan.html:25
msgid "BTC wallets"
msgstr "비트코인 지갑"
-#: www/views/preferences.html:34
+#: www/views/preferences.html:34
msgid "Backup"
msgstr "백업"
-#: www/views/includes/backupNeededPopup.html:7
+#: www/views/includes/backupNeededPopup.html:7
msgid "Backup Needed"
msgstr "백업 필요"
-#: src/js/controllers/lockSetup.js:87
+#: src/js/controllers/lockSetup.js:87
msgid "Backup all livenet wallets before using this function"
msgstr "이 기능을 사용하시기 전에 라이브넷 지갑을 모두 백업하세요"
-#: src/js/controllers/cashScan.js:64
-#: www/views/includes/walletListSettings.html:12
-#: www/views/preferences.html:36
+#: src/js/controllers/cashScan.js:64
+#: www/views/includes/walletListSettings.html:12
+#: www/views/preferences.html:36
msgid "Backup needed"
msgstr "백업 필요"
-#: www/views/includes/backupNeededPopup.html:9
+#: www/views/includes/backupNeededPopup.html:9
msgid "Backup now"
msgstr "지금 백업하기"
-#: www/views/onboarding/backupRequest.html:11
-#: www/views/tab-export-file.html:89
+#: www/views/onboarding/backupRequest.html:11
+#: www/views/tab-export-file.html:89
msgid "Backup wallet"
msgstr "지갑 백업하기"
-#: src/js/controllers/lockSetup.js:84
+#: src/js/controllers/lockSetup.js:84
msgid "Backup your wallet before using this function"
msgstr "이 기능을 사용하시기 전에 지갑을 백업하세요"
-#: src/js/services/profileService.js:446
+#: src/js/services/profileService.js:446
msgid "Bad wallet invitation"
msgstr "지갑 초대 실패"
-#: www/views/preferencesInformation.html:102
+#: www/views/preferencesInformation.html:102
msgid "Balance By Address"
msgstr "주소별 보유자산"
-#: www/views/includes/confirmBackupPopup.html:7
+#: 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
+#: www/views/preferencesBitpayServices.html:9
msgid "BitPay Visa® Cards"
msgstr "BitPay Visa® 카드"
-#: www/views/addressbook.add.html:38
-#: www/views/includes/incomingDataMenu.html:29
+#: www/views/addressbook.add.html:38
+#: www/views/includes/incomingDataMenu.html:29
msgid "Bitcoin Address"
msgstr "비트코인 주소"
-#: www/views/cashScan.html:4
+#: www/views/cashScan.html:4
msgid "Bitcoin Cash (BCH) Balances"
msgstr "비트코인 캐시 (BCH) 보유자산"
-#: www/views/preferencesCash.html:3
-#: www/views/tab-settings.html:47
+#: www/views/preferencesCash.html:3
+#: www/views/tab-settings.html:47
msgid "Bitcoin Cash Support"
msgstr "비트코인 캐시 지원"
-#: www/views/tab-home.html:98
-#: www/views/tab-settings.html:115
+#: www/views/tab-home.html:98
+#: www/views/tab-settings.html:115
msgid "Bitcoin Cash Wallets"
msgstr "비트코인 캐시 지갑"
-#: www/views/modals/chooseFeeLevel.html:4
-#: www/views/preferencesFee.html:4
-#: www/views/tab-settings.html:90
+#: www/views/modals/chooseFeeLevel.html:4
+#: www/views/preferencesFee.html:4
+#: www/views/tab-settings.html:90
msgid "Bitcoin Network Fee Policy"
msgstr "비트코인 네트워크 수수료 정책"
-#: www/views/tab-home.html:83
-#: www/views/tab-settings.html:107
+#: www/views/tab-home.html:83
+#: www/views/tab-settings.html:107
msgid "Bitcoin Core Wallets"
msgstr "비트코인지갑"
-#: src/js/services/incomingData.js:151
+#: src/js/services/incomingData.js:151
msgid "Bitcoin cash Payment"
msgstr "비트코인 캐시 결제"
-#: www/views/onboarding/tour.html:31
+#: www/views/onboarding/tour.html:31
msgid "Bitcoin is a currency."
msgstr "비트코인은 화폐입니다."
-#: www/views/onboarding/disclaimer.html:15
+#: 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
+#: www/views/onboarding/tour.html:18
msgid "Bitcoin is secure, digital money."
msgstr "비트코인은 안전한 가상화폐입니다."
-#: www/views/preferencesFee.html:11
+#: www/views/preferencesFee.html:11
msgid "Bitcoin transactions include a fee collected by miners on the network."
msgstr "비트코인 거래의 일부는 채굴자에게 수수료로 지급됩니다."
-#: www/views/buyAmazon.html:108
+#: www/views/buyAmazon.html:108
msgid "Bought {{amountUnitStr}}"
msgstr "{{amountUnitStr}} 구매 완료"
-#: www/views/modals/txp-details.html:36
+#: www/views/modals/txp-details.html:36
msgid "Broadcast Payment"
msgstr "결제 브로드캐스트하기"
-#: src/js/controllers/modals/txpDetails.js:64
-#: src/js/controllers/tx-details.js:81
+#: src/js/controllers/modals/txpDetails.js:64
+#: src/js/controllers/tx-details.js:81
msgid "Broadcasted"
msgstr "브로드캐스트 완료"
-#: src/js/services/onGoingProcess.js:11
+#: src/js/services/onGoingProcess.js:11
msgid "Broadcasting transaction"
msgstr "거래 브로드캐스트 중"
-#: www/views/unsupported.html:6
+#: www/views/unsupported.html:6
msgid "Browser unsupported"
msgstr "지원하지 않는 브라우저"
-#: www/views/buyAmazon.html:5
-#: www/views/buyMercadoLibre.html:6
+#: www/views/buyAmazon.html:5
+#: www/views/buyMercadoLibre.html:6
msgid "Buy"
msgstr "구매"
-#: www/views/includes/buyAndSellCard.html:3
+#: www/views/includes/buyAndSellCard.html:3
msgid "Buy & Sell Bitcoin"
msgstr "비트코인 구매 & 판매"
-#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
+#: www/views/tab-send.html:35
msgid "Buy Bitcoin"
msgstr "비트코인 구매"
-#: www/views/mercadoLibre.html:22
-#: www/views/mercadoLibre.html:50
+#: www/views/mercadoLibre.html:22
+#: www/views/mercadoLibre.html:50
msgid "Buy a Gift Card"
msgstr "기프트 카드 구매하기"
-#: src/js/controllers/buyAmazon.js:334
+#: src/js/controllers/buyAmazon.js:334
msgid "Buy from"
msgstr "구매 대상"
-#: src/js/services/onGoingProcess.js:40
+#: src/js/services/onGoingProcess.js:40
msgid "Buying Bitcoin..."
msgstr "비트코인 구매 중..."
-#: src/js/services/onGoingProcess.js:12
+#: src/js/services/onGoingProcess.js:12
msgid "Calculating fee"
msgstr "수수료 계산 중"
-#: src/js/controllers/buyAmazon.js:313
-#: src/js/controllers/buyMercadoLibre.js:307
-#: src/js/controllers/confirm.js:550
-#: src/js/controllers/topup.js:287
-#: src/js/services/incomingData.js:154
-#: 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
+#: src/js/controllers/buyAmazon.js:313
+#: src/js/controllers/buyMercadoLibre.js:307
+#: src/js/controllers/confirm.js:550
+#: src/js/controllers/topup.js:287
+#: src/js/services/incomingData.js:154
+#: 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
+#: www/views/copayers.html:36
msgid "Cancel invitation"
msgstr "초대 취소"
-#: src/js/controllers/onboarding/tour.js:52
+#: src/js/controllers/onboarding/tour.js:52
msgid "Cannot Create Wallet"
msgstr "지갑을 생성할 수 없습니다"
-#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
+#: src/js/services/profileService.js:442
+msgid "Cannot join the same wallet more that once"
msgstr "같은 지갑에 한 번 이상 접속할 수 없습니다"
-#: www/views/includes/bitpayCardsCard.html:2
+#: www/views/includes/bitpayCardsCard.html:2
msgid "Cards"
msgstr "카드"
-#: www/views/modals/paypro.html:30
+#: www/views/modals/paypro.html:30
msgid "Certified by"
msgstr "인증 완료"
-#: www/views/preferencesExternal.html:19
+#: www/views/preferencesExternal.html:19
msgid "Check installation and retry."
msgstr "설치 여부 확인 후 다시 시도하세요."
-#: www/views/tab-import-file.html:4
+#: www/views/tab-import-file.html:4
msgid "Choose a backup file from your computer"
msgstr "백업 파일을 컴퓨터에서 선택하세요"
-#: www/views/modals/wallets.html:9
+#: www/views/modals/wallets.html:9
msgid "Choose your destination wallet"
msgstr "목표 지갑을 설정하세요"
-#: www/views/modals/wallets.html:10
+#: www/views/modals/wallets.html:10
msgid "Choose your source wallet"
msgstr "지급 지갑을 설정하세요"
-#: www/views/backup.html:61
+#: www/views/backup.html:61
msgid "Clear"
msgstr "지우기"
-#: www/views/preferencesHistory.html:24
+#: www/views/preferencesHistory.html:24
msgid "Clear cache"
msgstr "캐시 지우기"
-#: src/js/controllers/confirm.js:373
-#: src/js/controllers/modals/txpDetails.js:49
+#: src/js/controllers/confirm.js:373
+#: src/js/controllers/modals/txpDetails.js:49
msgid "Click to accept"
msgstr "수락하기"
-#: src/js/controllers/confirm.js:367
+#: src/js/controllers/confirm.js:367
msgid "Click to pay"
msgstr "결제하기"
-#: src/js/controllers/confirm.js:379
-#: src/js/controllers/modals/txpDetails.js:42
+#: src/js/controllers/confirm.js:379
+#: src/js/controllers/modals/txpDetails.js:42
msgid "Click to send"
msgstr "송금하기"
-#: www/views/customAmount.html:4
-#: www/views/modals/mercadolibre-card-details.html:3
-#: 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
+#: www/views/customAmount.html:4
+#: www/views/modals/mercadolibre-card-details.html:3
+#: 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/includes/cash.html:2
-#: www/views/preferencesInformation.html:17
+#: www/views/includes/cash.html:2
+#: www/views/preferencesInformation.html:17
msgid "Coin"
msgstr "코인"
-#: www/views/preferences.html:22
+#: www/views/preferences.html:22
msgid "Color"
msgstr "색상"
-#: www/views/preferencesAbout.html:21
+#: www/views/preferencesAbout.html:21
msgid "Commit hash"
msgstr "해시 커밋하기"
-#: www/views/preferences.html:49
+#: www/views/preferences.html:49
msgid "Complete the backup process to use this option"
msgstr "백업 완료 후에 사용할 수 있습니다"
-#: www/views/bitpayCard.html:93
+#: www/views/bitpayCard.html:93
msgid "Completed"
msgstr "완료"
-#: src/js/controllers/buyAmazon.js:311
-#: src/js/controllers/buyMercadoLibre.js:305
-#: src/js/controllers/confirm.js:549
-#: src/js/controllers/copayers.js:55
-#: src/js/controllers/topup.js:285
-#: www/views/backup.html:60
-#: www/views/backup.html:79
-#: www/views/confirm.html:4
-#: www/views/onboarding/collectEmail.html:32
+#: src/js/controllers/buyAmazon.js:311
+#: src/js/controllers/buyMercadoLibre.js:305
+#: src/js/controllers/confirm.js:549
+#: src/js/controllers/copayers.js:55
+#: src/js/controllers/topup.js:285
+#: www/views/backup.html:60
+#: www/views/backup.html:79
+#: 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
+#: www/views/modals/terms.html:26
+#: www/views/onboarding/disclaimer.html:44
msgid "Confirm & Finish"
msgstr "확인 & 완료"
-#: www/views/buyAmazon.html:90
+#: www/views/buyAmazon.html:90
msgid "Confirm purchase"
msgstr "구매 확인"
-#: www/views/modals/pin.html:10
+#: www/views/modals/pin.html:10
msgid "Confirm your PIN"
msgstr "비밀번호 확인"
-#: src/js/services/walletService.js:1033
+#: src/js/services/walletService.js:1033
msgid "Confirm your new spending password"
msgstr "새로운 결제 비밀번호 확인"
-#: www/views/tx-details.html:98
+#: www/views/tx-details.html:98
msgid "Confirmations"
msgstr "확인"
-#: www/views/bitpayCard.html:68
-#: www/views/modals/wallet-balance.html:61
+#: www/views/bitpayCard.html:68
+#: www/views/modals/wallet-balance.html:61
msgid "Confirming"
msgstr "확인 중"
-#: www/views/bitpayCardIntro.html:37
+#: www/views/bitpayCardIntro.html:37
msgid "Connect my BitPay Card"
msgstr "BitPay 카드 연동하기"
-#: src/js/services/onGoingProcess.js:13
+#: src/js/services/onGoingProcess.js:13
msgid "Connecting to Coinbase..."
msgstr "Coinbase에 연결 중..."
-#: src/js/services/onGoingProcess.js:14
+#: src/js/services/onGoingProcess.js:14
msgid "Connecting to Glidera..."
msgstr "Glidera에 연결 중..."
-#: src/js/services/bwcError.js:53
+#: src/js/services/bwcError.js:53
msgid "Connection reset by peer"
msgstr "연결 실패"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "연락처"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "자주 사용하는 저장된 주소"
-
-#: www/views/onboarding/notifications.html:9
+#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "계속하기"
-#: www/views/preferencesLanguage.html:26
+#: www/views/preferencesLanguage.html:26
msgid "Contribute Translations"
msgstr "번역에 기여하기"
-#: src/js/controllers/confirm.js:130
+#: src/js/controllers/confirm.js:130
msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
msgstr "Copay는 최신 버전의 주소를 사용하는 비트코인 캐시만 지원합니다"
-#: src/js/services/bwcError.js:62
+#: src/js/services/bwcError.js:62
msgid "Copayer already in this wallet"
msgstr "공동지불인이 이미 지갑에 참여 중입니다"
-#: src/js/services/bwcError.js:77
+#: src/js/services/bwcError.js:77
msgid "Copayer already voted on this spend proposal"
msgstr "공동지불인이 이미 투표를 완료했습니다"
-#: src/js/services/bwcError.js:107
+#: src/js/services/bwcError.js:107
msgid "Copayer data mismatch"
msgstr "공동지불인 데이터 불일치"
-#: www/views/includes/walletActivity.html:2
+#: www/views/includes/walletActivity.html:2
msgid "Copayer joined"
msgstr "공동지불인 합류 완료"
-#: www/views/preferencesInformation.html:94
+#: www/views/preferencesInformation.html:94
msgid "Copayer {{$index}}"
msgstr "공동지불인 {{$index}}"
-#: src/js/controllers/copayers.js:79
-#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
-#: www/views/includes/copyToClipboard.html:4
+#: 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
+#: 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/includes/logOptions.html:9
-#: www/views/tab-export-file.html:78
+#: www/views/includes/incomingDataMenu.html:51
+#: www/views/includes/incomingDataMenu.html:70
+#: www/views/includes/incomingDataMenu.html:94
+#: www/views/includes/logOptions.html:9
+#: www/views/tab-export-file.html:78
msgid "Copy to clipboard"
msgstr "클립보드에 복사하기"
-#: src/js/controllers/buyMercadoLibre.js:102
+#: src/js/controllers/buyMercadoLibre.js:102
msgid "Could not access Gift Card Service"
msgstr "기프트 카드 서비스를 사용할 수 없습니다"
-#: www/views/tab-import-phrase.html:2
+#: www/views/tab-import-phrase.html:2
msgid "Could not access the wallet at the server. Please check:"
msgstr "서버 내 지갑에 접속할 수 없습니다. 확인해주세요:"
-#: src/js/controllers/buyAmazon.js:102
+#: src/js/controllers/buyAmazon.js:102
msgid "Could not access to Amazon.com"
msgstr "아마존에 접속할 수 없습니다"
-#: src/js/services/profileService.js:511
+#: src/js/services/profileService.js:511
msgid "Could not access wallet"
msgstr "지갑에 접속할 수 없습니다"
-#: src/js/controllers/confirm.js:210
+#: src/js/controllers/confirm.js:210
msgid "Could not add message to imported wallet without shared encrypting key"
msgstr "내려받은 지갑에 메시지를 추가하려면 암호 키가 필요합니다"
-#: src/js/controllers/modals/txpDetails.js:199
+#: src/js/controllers/modals/txpDetails.js:199
msgid "Could not broadcast payment"
msgstr "거래를 브로드캐스트할 수 없습니다"
-#: src/js/services/bwcError.js:41
+#: src/js/services/bwcError.js:41
msgid "Could not build transaction"
msgstr "거래를 진행할 수 없습니다"
-#: src/js/services/walletService.js:854
+#: src/js/services/walletService.js:854
msgid "Could not create address"
msgstr "주소를 생성할 수 없습니다"
-#: src/js/controllers/topup.js:92
+#: src/js/controllers/topup.js:92
msgid "Could not create the invoice"
msgstr "청구서를 만들 수 없습니다"
-#: src/js/controllers/buyAmazon.js:164
-#: src/js/controllers/buyMercadoLibre.js:164
-#: src/js/controllers/topup.js:142
+#: src/js/controllers/buyAmazon.js:164
+#: src/js/controllers/buyMercadoLibre.js:164
+#: src/js/controllers/topup.js:142
msgid "Could not create transaction"
msgstr "거래건을 만들 수 없습니다"
-#: src/js/services/profileService.js:350
+#: src/js/services/profileService.js:350
msgid "Could not create using the specified extended private key"
msgstr "주어진 개인키로는 만들 수 없습니다"
-#: src/js/services/profileService.js:362
+#: src/js/services/profileService.js:362
msgid "Could not create using the specified extended public key"
msgstr "주어진 공개키로는 만들 수 없습니다"
-#: src/js/services/profileService.js:338
+#: src/js/services/profileService.js:338
msgid "Could not create: Invalid wallet recovery phrase"
msgstr "만들 수 없습니다: 지갑 백업 문구 오류"
-#: src/js/controllers/import.js:114
+#: src/js/controllers/import.js:114
msgid "Could not decrypt file, check your password"
msgstr "해독 실패, 비밀번호를 확인해주세요"
-#: src/js/controllers/modals/txpDetails.js:181
+#: src/js/controllers/modals/txpDetails.js:181
msgid "Could not delete payment proposal"
msgstr "지불 제안 삭제 실패"
-#: src/js/controllers/cashScan.js:117
+#: src/js/controllers/cashScan.js:117
msgid "Could not duplicate"
msgstr "복사할 수 없습니다"
-#: src/js/services/feeService.js:73
+#: src/js/services/feeService.js:73
msgid "Could not get dynamic fee"
msgstr "다이나믹 수수료 실패"
-#: src/js/services/feeService.js:43
+#: src/js/services/feeService.js:43
msgid "Could not get dynamic fee for level: {{feeLevel}}"
msgstr "{{feeLevel}}에는 다이나믹 수수료를 사용할 수 없습니다"
-#: src/js/controllers/modals/feeLevels.js:112
+#: src/js/controllers/modals/feeLevels.js:112
msgid "Could not get fee levels"
msgstr "수수료 차트를 불러올 수 없습니다"
-#: src/js/controllers/buyAmazon.js:122
-#: src/js/controllers/buyMercadoLibre.js:122
-#: src/js/controllers/topup.js:100
+#: src/js/controllers/buyAmazon.js:122
+#: src/js/controllers/buyMercadoLibre.js:122
+#: src/js/controllers/topup.js:100
msgid "Could not get the invoice"
msgstr "청구서를 불러올 수 없습니다"
-#: src/js/controllers/bitpayCard.js:66
+#: src/js/controllers/bitpayCard.js:66
msgid "Could not get transactions"
msgstr "거래를 불러올 수 없습니다"
-#: src/js/services/profileService.js:615
-#: src/js/services/profileService.js:650
-#: src/js/services/profileService.js:674
+#: src/js/services/profileService.js:615
+#: src/js/services/profileService.js:650
+#: src/js/services/profileService.js:674
msgid "Could not import"
msgstr "내려받을 수 없습니다"
-#: src/js/services/profileService.js:584
+#: src/js/services/profileService.js:584
msgid "Could not import. Check input file and spending password"
msgstr "내려받을 수 없습니다. 파일과 비밀번호를 확인해주세요"
-#: src/js/services/profileService.js:457
+#: src/js/services/profileService.js:457
msgid "Could not join wallet"
msgstr "지갑에 참여할 수 없습니다"
-#: src/js/controllers/modals/txpDetails.js:161
+#: src/js/controllers/modals/txpDetails.js:161
msgid "Could not reject payment"
msgstr "지급 받은 금액을 거부할 수 없습니다"
-#: src/js/controllers/preferencesBitpayServices.js:33
+#: src/js/controllers/preferencesBitpayServices.js:33
msgid "Could not remove account"
msgstr "계정을 제거할 수 없습니다"
-#: src/js/controllers/preferencesBitpayCard.js:20
-#: src/js/controllers/preferencesBitpayServices.js:50
+#: src/js/controllers/preferencesBitpayCard.js:20
+#: src/js/controllers/preferencesBitpayServices.js:50
msgid "Could not remove card"
msgstr "카드를 제거할 수 없습니다"
-#: src/js/services/walletService.js:776
+#: src/js/services/walletService.js:776
msgid "Could not save preferences on the server"
msgstr "개인 설정을 서버에 저장할 수 없습니다"
-#: src/js/controllers/modals/txpDetails.js:147
+#: src/js/controllers/modals/txpDetails.js:147
msgid "Could not send payment"
msgstr "송금할 수 없습니다"
-#: src/js/controllers/buyAmazon.js:325
-#: src/js/controllers/buyMercadoLibre.js:318
-#: src/js/controllers/topup.js:299
+#: src/js/controllers/buyAmazon.js:325
+#: src/js/controllers/buyMercadoLibre.js:318
+#: src/js/controllers/topup.js:299
msgid "Could not send transaction"
msgstr "거래를 완료할 수 없습니다"
-#: www/views/walletDetails.html:210
+#: www/views/walletDetails.html:210
msgid "Could not update transaction history"
msgstr "거래 내역을 업데이트할 수 없습니다"
-#: src/js/controllers/addresses.js:29
-#: src/js/controllers/addresses.js:37
-#: src/js/controllers/copayers.js:30
-#: src/js/controllers/walletDetails.js:78
+#: src/js/controllers/addresses.js:29
+#: src/js/controllers/addresses.js:37
+#: 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
+#: www/views/tab-create-personal.html:3
msgid "Create Personal Wallet"
msgstr "개인 지갑 만들기"
-#: www/views/tab-create-shared.html:3
+#: www/views/tab-create-shared.html:3
msgid "Create Shared Wallet"
msgstr "공유 지갑 만들기"
-#: www/views/onboarding/tour.html:51
-#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/onboarding/tour.html:51
+#: www/views/tab-home.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "비트코인 지갑 만들기"
-#: www/views/tab-create-personal.html:131
+#: www/views/tab-create-personal.html:131
msgid "Create new wallet"
msgstr "새로운 지갑 만들기"
-#: www/views/add.html:22
+#: www/views/add.html:22
msgid "Create shared wallet"
msgstr "공유 지갑 만들기"
-#: www/views/tab-create-shared.html:160
+#: www/views/tab-create-shared.html:160
msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet"
msgstr "{{formData.requiredCopayers}}-of-{{formData.totalCopayers}} 지갑 만들기"
-#: www/views/modals/txp-details.html:81
-#: www/views/tx-details.html:60
+#: www/views/modals/txp-details.html:81
+#: www/views/tx-details.html:60
msgid "Created by"
msgstr "만든이"
-#: src/js/services/onGoingProcess.js:18
+#: src/js/services/onGoingProcess.js:18
msgid "Creating Wallet..."
msgstr "지갑 생성 중..."
-#: src/js/services/onGoingProcess.js:17
+#: src/js/services/onGoingProcess.js:17
msgid "Creating transaction"
msgstr "거래건 생성 중"
-#: www/views/modals/chooseFeeLevel.html:34
-#: www/views/preferencesFee.html:20
+#: 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
+#: src/js/services/feeService.js:15
msgid "Custom"
msgstr "커스텀"
-#: www/views/customAmount.html:9
+#: www/views/customAmount.html:9
msgid "Custom Amount"
msgstr "커스텀 계정"
-#: src/js/controllers/preferencesFee.js:85
+#: src/js/controllers/preferencesFee.js:85
msgid "Custom Fee"
msgstr "커스텀 수수료"
-#: www/views/modals/mercadolibre-card-details.html:56
-#: www/views/modals/txp-details.html:87
-#: www/views/tx-details.html:66
+#: www/views/modals/mercadolibre-card-details.html:56
+#: www/views/modals/txp-details.html:87
+#: www/views/tx-details.html:66
msgid "Date"
msgstr "날짜"
-#: www/views/preferencesDeleteWallet.html:21
+#: www/views/preferencesDeleteWallet.html:21
msgid "Delete"
msgstr "삭제"
-#: www/views/modals/txp-details.html:164
+#: www/views/modals/txp-details.html:164
msgid "Delete Payment Proposal"
msgstr "지불 제안 삭제하기"
-#: www/views/preferencesAdvanced.html:33
-#: www/views/preferencesDeleteWallet.html:3
+#: www/views/preferencesAdvanced.html:33
+#: www/views/preferencesDeleteWallet.html:3
msgid "Delete Wallet"
msgstr "지갑 삭제하기"
-#: www/views/copayers.html:59
+#: www/views/copayers.html:59
msgid "Delete it and create a new one"
msgstr "삭제 후 다시 만들기"
-#: src/js/services/onGoingProcess.js:19
+#: src/js/services/onGoingProcess.js:19
msgid "Deleting Wallet..."
msgstr "지갑 삭제 중..."
-#: src/js/services/onGoingProcess.js:28
+#: src/js/services/onGoingProcess.js:28
msgid "Deleting payment proposal"
msgstr "지불 제안 삭제 중"
-#: www/views/join.html:141
-#: www/views/tab-create-personal.html:111
-#: www/views/tab-create-shared.html:140
-#: www/views/tab-import-phrase.html:49
+#: www/views/join.html:141
+#: www/views/tab-create-personal.html:111
+#: www/views/tab-create-shared.html:140
+#: www/views/tab-import-phrase.html:49
msgid "Derivation Path"
msgstr "유도 경로"
-#: www/views/preferencesInformation.html:47
+#: www/views/preferencesInformation.html:47
msgid "Derivation Strategy"
msgstr "유도 전략"
-#: www/views/buyAmazon.html:39
-#: www/views/buyMercadoLibre.html:38
-#: www/views/modals/mercadolibre-card-details.html:6
-#: www/views/topup.html:45
+#: www/views/buyAmazon.html:39
+#: www/views/buyMercadoLibre.html:38
+#: www/views/modals/mercadolibre-card-details.html:6
+#: www/views/topup.html:45
msgid "Details"
msgstr "디테일"
-#: src/js/controllers/lockSetup.js:9
-#: src/js/controllers/tab-settings.js:65
-#: www/views/tab-settings.html:50
+#: src/js/controllers/lockSetup.js:9
+#: src/js/controllers/tab-settings.js:65
+#: www/views/tab-settings.html:50
msgid "Disabled"
msgstr "비활성화"
-#: www/views/includes/backupNeededPopup.html:10
-#: www/views/onboarding/backupRequest.html:12
+#: www/views/includes/backupNeededPopup.html:10
+#: www/views/onboarding/backupRequest.html:12
msgid "Do it later"
msgstr "나중에 하기"
-#: www/views/tab-export-file.html:29
+#: www/views/tab-export-file.html:29
msgid "Do not include private key"
msgstr "개인키 미포함"
-#: www/views/preferencesLanguage.html:21
+#: 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에 원하시는 언어가 없다고요? 운영진을 찾아주세요! 원하시는 언어를 지원하겠습니다."
-#: www/views/tab-export-file.html:59
-#: www/views/tab-home.html:22
+#: www/views/tab-export-file.html:59
+#: www/views/tab-home.html:22
msgid "Download"
msgstr "다운로드"
-#: www/views/cashScan.html:37
+#: www/views/cashScan.html:37
msgid "Duplicate for BCH"
msgstr "비트코인 캐시로 복사"
-#: src/js/services/onGoingProcess.js:49
+#: src/js/services/onGoingProcess.js:49
msgid "Duplicating wallet..."
msgstr "지갑 복사 중..."
-#: www/views/addresses.html:19
+#: 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
+#: src/js/services/feeService.js:13
msgid "Economy"
msgstr "경제"
-#: www/views/onboarding/collectEmail.html:27
+#: www/views/onboarding/collectEmail.html:27
msgid "Edit"
msgstr "수정"
-#: www/views/addressbook.add.html:29
-#: www/views/addressbook.view.html:22
+#: www/views/addressbook.add.html:29
+#: www/views/addressbook.view.html:22
msgid "Email"
msgstr "이메일"
-#: www/views/preferencesNotifications.html:42
+#: www/views/preferencesNotifications.html:42
msgid "Email Address"
msgstr "이메일 주소"
-#: src/js/services/bwcError.js:122
+#: src/js/services/bwcError.js:122
msgid "Empty addresses limit reached. New addresses cannot be generated."
msgstr "주소를 더 이상 생성할 수 없습니다."
-#: www/views/preferencesCash.html:17
+#: www/views/preferencesCash.html:17
msgid "Enable Bitcoin Cash wallet creation and operation within the App."
msgstr "앱으로 비트코인 캐시 지갑을 만들고 운영하세요."
-#: www/views/tab-scan.html:19
+#: www/views/tab-scan.html:19
msgid "Enable camera access in your device settings to get started."
msgstr "시작하기 전, 기기 설정에서 카메라 접근을 허용해주세요."
-#: www/views/preferencesNotifications.html:29
+#: www/views/preferencesNotifications.html:29
msgid "Enable email notifications"
msgstr "이메일 알림 활성화하기"
-#: www/views/preferencesNotifications.html:12
+#: www/views/preferencesNotifications.html:12
msgid "Enable push notifications"
msgstr "푸쉬 알림 활성화하기"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "음소거 해제"
-
-#: www/views/tab-scan.html:18
+#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "카메라 접근을 허용해주세요."
-#: www/views/tab-settings.html:49
+#: www/views/tab-settings.html:49
msgid "Enabled"
msgstr "활성화"
-#: src/js/services/walletService.js:1047
-#: src/js/services/walletService.js:1062
+#: src/js/services/walletService.js:1047
+#: src/js/services/walletService.js:1062
msgid "Enter Spending Password"
msgstr "결제 비밀번호 입력"
-#: src/js/services/bitpayAccountService.js:110
+#: src/js/services/bitpayAccountService.js:110
msgid "Enter Two Factor for your BitPay account"
msgstr "BitPay 계정의 이중 비밀번호를 입력해주세요"
-#: www/views/amount.html:4
+#: www/views/amount.html:4
msgid "Enter amount"
msgstr "액수 입력"
-#: www/views/modals/chooseFeeLevel.html:41
+#: www/views/modals/chooseFeeLevel.html:41
msgid "Enter custom fee"
msgstr "커스텀 수수료 입력"
-#: src/js/services/walletService.js:1029
+#: src/js/services/walletService.js:1029
msgid "Enter new spending password"
msgstr "새로운 결제 비밀번호 입력"
-#: www/views/join.html:79
-#: www/views/tab-create-personal.html:51
-#: www/views/tab-create-shared.html:80
+#: www/views/join.html:79
+#: www/views/tab-create-personal.html:51
+#: www/views/tab-create-shared.html:80
msgid "Enter the recovery phrase (BIP39)"
msgstr "백업 문구를 입력하세요 (BIP39)"
-#: www/views/onboarding/collectEmail.html:13
+#: www/views/onboarding/collectEmail.html:13
msgid "Enter your email"
msgstr "이메일을 입력하세요"
-#: www/views/backup.html:69
+#: www/views/backup.html:69
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:42
-#: src/js/controllers/addresses.js:125
-#: src/js/controllers/addresses.js:126
-#: src/js/controllers/bitpayCard.js:66
-#: src/js/controllers/bitpayCardIntro.js:40
-#: src/js/controllers/bitpayCardIntro.js:81
-#: src/js/controllers/buyAmazon.js:24
-#: src/js/controllers/buyAmazon.js:35
-#: src/js/controllers/buyMercadoLibre.js:24
-#: src/js/controllers/buyMercadoLibre.js:35
-#: src/js/controllers/confirm.js:307
-#: src/js/controllers/copayers.js:67
-#: src/js/controllers/create.js:161
-#: src/js/controllers/create.js:174
-#: src/js/controllers/create.js:180
-#: src/js/controllers/create.js:186
-#: src/js/controllers/create.js:208
-#: src/js/controllers/create.js:215
-#: src/js/controllers/create.js:233
-#: 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:119
-#: src/js/controllers/import.js:131
-#: src/js/controllers/import.js:149
-#: src/js/controllers/import.js:200
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:238
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:266
-#: src/js/controllers/import.js:278
-#: src/js/controllers/import.js:288
-#: src/js/controllers/import.js:312
-#: src/js/controllers/import.js:325
-#: src/js/controllers/import.js:335
-#: src/js/controllers/import.js:345
-#: src/js/controllers/import.js:369
-#: src/js/controllers/import.js:382
-#: src/js/controllers/import.js:85
-#: src/js/controllers/import.js:98
-#: src/js/controllers/join.js:125
-#: src/js/controllers/join.js:139
-#: src/js/controllers/join.js:145
-#: src/js/controllers/join.js:151
-#: src/js/controllers/join.js:174
-#: src/js/controllers/join.js:182
-#: src/js/controllers/join.js:200
-#: src/js/controllers/modals/feeLevels.js:9
-#: src/js/controllers/modals/txpDetails.js:140
-#: 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:36
-#: src/js/controllers/preferencesExternal.js:20
-#: src/js/controllers/tab-home.js:174
-#: src/js/controllers/tab-send.js:143
-#: src/js/controllers/tabsController.js:36
-#: src/js/controllers/tabsController.js:7
-#: src/js/controllers/topup.js:21
-#: src/js/controllers/topup.js:32
-#: src/js/controllers/tx-details.js:119
-#: src/js/services/incomingData.js:101
-#: src/js/services/incomingData.js:125
-#: src/js/services/incomingData.js:168
-#: www/views/mercadoLibreCards.html:19
-#: www/views/modals/mercadolibre-card-details.html:45
+#. 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:42
+#: src/js/controllers/addresses.js:125
+#: src/js/controllers/addresses.js:126
+#: src/js/controllers/bitpayCard.js:66
+#: src/js/controllers/bitpayCardIntro.js:40
+#: src/js/controllers/bitpayCardIntro.js:81
+#: src/js/controllers/buyAmazon.js:24
+#: src/js/controllers/buyAmazon.js:35
+#: src/js/controllers/buyMercadoLibre.js:24
+#: src/js/controllers/buyMercadoLibre.js:35
+#: src/js/controllers/confirm.js:307
+#: src/js/controllers/copayers.js:67
+#: src/js/controllers/create.js:161
+#: src/js/controllers/create.js:174
+#: src/js/controllers/create.js:180
+#: src/js/controllers/create.js:186
+#: src/js/controllers/create.js:208
+#: src/js/controllers/create.js:215
+#: src/js/controllers/create.js:233
+#: 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:119
+#: src/js/controllers/import.js:131
+#: src/js/controllers/import.js:149
+#: src/js/controllers/import.js:200
+#: src/js/controllers/import.js:229
+#: src/js/controllers/import.js:238
+#: src/js/controllers/import.js:254
+#: src/js/controllers/import.js:266
+#: src/js/controllers/import.js:278
+#: src/js/controllers/import.js:288
+#: src/js/controllers/import.js:312
+#: src/js/controllers/import.js:325
+#: src/js/controllers/import.js:335
+#: src/js/controllers/import.js:345
+#: src/js/controllers/import.js:369
+#: src/js/controllers/import.js:382
+#: src/js/controllers/import.js:85
+#: src/js/controllers/import.js:98
+#: src/js/controllers/join.js:125
+#: src/js/controllers/join.js:139
+#: src/js/controllers/join.js:145
+#: src/js/controllers/join.js:151
+#: src/js/controllers/join.js:174
+#: src/js/controllers/join.js:182
+#: src/js/controllers/join.js:200
+#: src/js/controllers/modals/feeLevels.js:9
+#: src/js/controllers/modals/txpDetails.js:140
+#: 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:36
+#: src/js/controllers/preferencesExternal.js:20
+#: src/js/controllers/tab-home.js:174
+#: src/js/controllers/tab-send.js:143
+#: src/js/controllers/tabsController.js:36
+#: src/js/controllers/tabsController.js:7
+#: src/js/controllers/topup.js:21
+#: src/js/controllers/topup.js:32
+#: src/js/controllers/tx-details.js:119
+#: src/js/services/incomingData.js:101
+#: src/js/services/incomingData.js:125
+#: src/js/services/incomingData.js:168
+#: www/views/mercadoLibreCards.html:19
+#: www/views/modals/mercadolibre-card-details.html:45
msgid "Error"
msgstr "오류"
-#: src/js/controllers/confirm.js:502
+#: src/js/controllers/confirm.js:502
msgid "Error at confirm"
msgstr "확인 오류"
-#: src/js/controllers/buyAmazon.js:179
+#: src/js/controllers/buyAmazon.js:179
msgid "Error creating gift card"
msgstr "기프트 카드 생성 오류"
-#: src/js/controllers/buyAmazon.js:94
-#: src/js/controllers/buyMercadoLibre.js:94
+#: src/js/controllers/buyAmazon.js:94
+#: src/js/controllers/buyMercadoLibre.js:94
msgid "Error creating the invoice"
msgstr "청구서 생성 오류"
-#: src/js/services/profileService.js:412
+#: src/js/services/profileService.js:412
msgid "Error creating wallet"
msgstr "지갑 생성 오류"
-#: src/js/controllers/confirm.js:296
+#: src/js/controllers/confirm.js:296
msgid "Error getting SendMax information"
msgstr "SendMax 정보 오류"
-#: src/js/controllers/buyAmazon.js:136
-#: src/js/controllers/buyMercadoLibre.js:136
-#: src/js/controllers/topup.js:114
+#: src/js/controllers/buyAmazon.js:136
+#: src/js/controllers/buyMercadoLibre.js:136
+#: src/js/controllers/topup.js:114
msgid "Error in Payment Protocol"
msgstr "결제 프로토콜 오류"
-#: src/js/controllers/bitpayCardIntro.js:14
+#: src/js/controllers/bitpayCardIntro.js:14
msgid "Error pairing BitPay Account"
msgstr "BitPay 계정 페어링 오류"
-#: src/js/controllers/paperWallet.js:41
+#: src/js/controllers/paperWallet.js:41
msgid "Error scanning funds:"
msgstr "자금 스캔 오류:"
-#: src/js/controllers/paperWallet.js:90
+#: src/js/controllers/paperWallet.js:90
msgid "Error sweeping wallet:"
msgstr "지갑 정리 오류:"
-#: src/js/controllers/bitpayCardIntro.js:20
+#: src/js/controllers/bitpayCardIntro.js:20
msgid "Error updating Debit Cards"
msgstr "직불 카드 업데이트 오류"
-#: src/js/services/bwcError.js:143
+#: src/js/services/bwcError.js:143
msgid "Exceeded daily limit of $500 per user"
msgstr "500 달러 한도 초과"
-#: src/js/controllers/confirm.js:461
-#: www/views/confirm.html:27
-#: www/views/mercadoLibreCards.html:25
-#: www/views/modals/mercadolibre-card-details.html:34
-#: www/views/modals/txp-details.html:119
+#: src/js/controllers/confirm.js:461
+#: www/views/confirm.html:27
+#: www/views/mercadoLibreCards.html:25
+#: www/views/modals/mercadolibre-card-details.html:34
+#: www/views/modals/txp-details.html:119
msgid "Expired"
msgstr "만료"
-#: www/views/modals/paypro.html:54
-#: www/views/modals/txp-details.html:125
+#: www/views/modals/paypro.html:54
+#: www/views/modals/txp-details.html:125
msgid "Expires"
msgstr "만료"
-#: www/views/preferencesAdvanced.html:21
+#: www/views/preferencesAdvanced.html:21
msgid "Export Wallet"
msgstr "지갑 내보내기"
-#: www/views/preferencesHistory.html:11
-#: www/views/preferencesHistory.html:14
+#: www/views/preferencesHistory.html:11
+#: www/views/preferencesHistory.html:14
msgid "Export to file"
msgstr "파일로 내보내기"
-#: www/views/export.html:3
+#: www/views/export.html:3
msgid "Export wallet"
msgstr "지갑 내보내기"
-#: src/js/services/walletService.js:1174
-#: www/views/tab-export-qrCode.html:9
+#: src/js/services/walletService.js:1174
+#: www/views/tab-export-qrCode.html:9
msgid "Exporting via QR not supported for this wallet"
msgstr "이 지갑은 QR 내보내기 기능을 지원하지 않습니다."
-#: www/views/preferencesInformation.html:89
+#: www/views/preferencesInformation.html:89
msgid "Extended Public Keys"
msgstr "확장 공개키"
-#: src/js/services/onGoingProcess.js:20
+#: 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
+#: 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
+#: www/views/tab-create-personal.html:14
+#: www/views/tab-create-shared.html:14
msgid "Family vacation funds"
msgstr "가족 휴가 자금"
-#: www/views/tx-details.html:79
+#: www/views/tx-details.html:79
msgid "Fee"
msgstr "수수료"
-#: www/views/modals/chooseFeeLevel.html:75
+#: www/views/modals/chooseFeeLevel.html:75
msgid "Fee level"
msgstr "수수료 차트"
-#: src/js/controllers/modals/feeLevels.js:100
+#: src/js/controllers/modals/feeLevels.js:100
msgid "Fee level is not defined"
msgstr "수수료 차트가 정해져 있지 않습니다"
-#: www/views/confirm.html:79
-#: www/views/modals/txp-details.html:99
+#: www/views/confirm.html:79
+#: www/views/modals/txp-details.html:99
msgid "Fee:"
msgstr "수수료:"
-#: src/js/controllers/feedback/send.js:23
+#: src/js/controllers/feedback/send.js:23
msgid "Feedback could not be submitted. Please try again later."
msgstr "피드백을 제출할 수 없습니다. 다시 시도해주세요."
-#: src/js/services/onGoingProcess.js:42
+#: src/js/services/onGoingProcess.js:42
msgid "Fetching BitPay Account..."
msgstr "BitPay 계정 가져오는 중..."
-#: src/js/services/onGoingProcess.js:21
+#: src/js/services/onGoingProcess.js:21
msgid "Fetching payment information"
msgstr "결제 정보 가져오는 중"
-#: www/views/export.html:14
-#: www/views/import.html:16
+#: www/views/export.html:14
+#: www/views/import.html:16
msgid "File/Text"
msgstr "파일/텍스트"
-#: www/views/preferencesLogs.html:17
+#: www/views/preferencesLogs.html:17
msgid "Filter setting"
msgstr "필터 설정"
-#: src/js/services/fingerprintService.js:43
-#: src/js/services/fingerprintService.js:48
+#: 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
+#: src/js/controllers/feedback/send.js:34
+#: www/views/feedback/complete.html:7
msgid "Finish"
msgstr "끝내기"
-#: www/views/tab-create-personal.html:123
-#: www/views/tab-create-shared.html:152
+#: www/views/tab-create-personal.html:123
+#: www/views/tab-create-shared.html:152
msgid "For audit purposes"
msgstr "계좌 검토 용도"
-#: src/js/controllers/topup.js:308
-#: www/views/buyAmazon.html:29
-#: www/views/buyMercadoLibre.html:28
-#: www/views/confirm.html:65
-#: www/views/modals/txp-details.html:74
-#: www/views/topup.html:34
-#: www/views/tx-details.html:52
-#: www/views/review.html:22
+#: src/js/controllers/topup.js:308
+#: www/views/buyAmazon.html:29
+#: www/views/buyMercadoLibre.html:28
+#: 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
+#: src/js/controllers/bitpayCardIntro.js:71
msgid "From BitPay account"
msgstr "출처: BitPay 계정"
-#: www/views/tab-import-phrase.html:57
+#: www/views/tab-import-phrase.html:57
msgid "From Hardware Wallet"
msgstr "출처: 하드웨어 지갑"
-#: www/views/tab-export-qrCode.html:5
+#: 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
+#: src/js/services/bwcError.js:74
msgid "Funds are locked by pending spend proposals"
msgstr "자금이 진행 중인 결제 제안서에 묶여있습니다"
-#: www/views/paperWallet.html:16
+#: www/views/paperWallet.html:16
msgid "Funds found:"
msgstr "발견한 자금:"
-#: www/views/topup.html:49
+#: www/views/topup.html:49
msgid "Funds to be added"
msgstr "추가 예정인 자금"
-#: www/views/paperWallet.html:51
+#: www/views/paperWallet.html:51
msgid "Funds transferred"
msgstr "자금 이동 완료"
-#: www/views/topup.html:103
+#: www/views/topup.html:103
msgid "Funds were added to debit card"
msgstr "자금을 직불 카드로 옮겼습니다"
-#: www/views/paperWallet.html:22
+#: www/views/paperWallet.html:22
msgid "Funds will be transferred to"
msgstr "자금 이동 예정"
-#: www/views/tab-receive.html:51
+#: www/views/tab-receive.html:51
msgid "Generate new address"
msgstr "새로운 주소 생성하기"
-#: src/js/services/onGoingProcess.js:22
+#: src/js/services/onGoingProcess.js:22
msgid "Generating .csv file..."
msgstr ".csv 파일 생성 중..."
-#: src/js/services/onGoingProcess.js:37
+#: src/js/services/onGoingProcess.js:37
msgid "Generating new address..."
msgstr "새로운 주소 생성 중..."
-#: www/views/bitpayCardIntro.html:23
+#: www/views/bitpayCardIntro.html:23
msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply."
msgstr "비자 ® 호환 ATM에서 언제 어디에서나 현지 화폐로 환전하세요. 수수료가 발생할 수 있습니다."
-#: www/views/onboarding/collectEmail.html:15
+#: www/views/onboarding/collectEmail.html:15
msgid "Get news and updates from BitPay"
msgstr "BitPay에서 최신 소식을 받아보세요"
-#: www/views/onboarding/welcome.html:8
-#: www/views/bitpayCard.html:49
+#: www/views/onboarding/welcome.html:8
+msgctxt "button"
msgid "Get started"
msgstr "시작하기"
-#: www/views/addressbook.html:20
+#: www/views/bitpayCard.html:49
+msgid "Get started"
+msgstr "시작하기"
+
+#: www/views/addressbook.html:20
msgid "Get started by adding your first one."
msgstr "첫 발걸음을 떼어 보세요."
-#: src/js/services/onGoingProcess.js:23
+#: src/js/services/onGoingProcess.js:23
msgid "Getting fee levels..."
msgstr "수수료 차트 가져오는 중..."
-#: www/views/buyAmazon.html:43
-#: www/views/buyMercadoLibre.html:42
+#: www/views/buyAmazon.html:43
+#: www/views/buyMercadoLibre.html:42
msgid "Gift Card"
msgstr "기프트 카드"
-#: www/views/modals/mercadolibre-card-details.html:30
-#: www/views/modals/mercadolibre-card-details.html:35
+#: www/views/modals/mercadolibre-card-details.html:30
+#: www/views/modals/mercadolibre-card-details.html:35
msgid "Gift Card is not available to use anymore"
msgstr "더는 기프트 카드를 사용하실 수 없습니다"
-#: src/js/controllers/buyAmazon.js:204
+#: src/js/controllers/buyAmazon.js:204
msgid "Gift card expired"
msgstr "기프트 카드 기한 만료"
-#: www/views/buyAmazon.html:111
+#: 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/cashScan.js:20
-#: src/js/controllers/onboarding/terms.js:23
-#: src/js/controllers/preferences.js:67
-#: src/js/controllers/preferencesAbout.js:16
-#: src/js/controllers/preferencesCash.js:34
-#: src/js/controllers/preferencesLanguage.js:14
-#: src/js/controllers/tab-home.js:149
-#: src/js/controllers/tab-settings.js:53
-#: src/js/controllers/tx-details.js:193
-#: src/js/controllers/tx-details.js:56
+#: src/js/controllers/bitpayCard.js:114
+#: src/js/controllers/bitpayCard.js:124
+#: src/js/controllers/cashScan.js:20
+#: src/js/controllers/onboarding/terms.js:23
+#: src/js/controllers/preferences.js:67
+#: src/js/controllers/preferencesAbout.js:16
+#: src/js/controllers/preferencesCash.js:34
+#: src/js/controllers/preferencesLanguage.js:14
+#: src/js/controllers/tab-home.js:149
+#: src/js/controllers/tab-settings.js:53
+#: src/js/controllers/tx-details.js:193
+#: src/js/controllers/tx-details.js:56
msgid "Go Back"
msgstr "돌아가기"
-#: src/js/controllers/confirm.js:131
-#: src/js/controllers/onboarding/backupRequest.js:20
-#: src/js/controllers/onboarding/backupRequest.js:26
-#: src/js/services/bitpayAccountService.js:84
+#: src/js/controllers/confirm.js:131
+#: 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
+#: 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:53
-#: www/views/preferencesInformation.html:59
+#: www/views/preferencesInformation.html:53
+#: www/views/preferencesInformation.html:59
msgid "Hardware Wallet"
msgstr "하드웨어 지갑"
-#: www/views/preferencesExternal.html:18
+#: www/views/preferencesExternal.html:18
msgid "Hardware not connected."
msgstr "하드웨어 연결 실패."
-#: www/views/import.html:20
+#: www/views/import.html:20
msgid "Hardware wallet"
msgstr "하드웨어 지갑"
-#: src/js/controllers/create.js:180
-#: src/js/controllers/join.js:145
+#: src/js/controllers/create.js:180
+#: src/js/controllers/join.js:145
msgid "Hardware wallets are not yet supported with Bitcoin Cash"
msgstr "비트코인 캐시는 아직 하드웨어 지갑과 호환되지 않습니다"
-#: www/views/tab-settings.html:20
+#: www/views/tab-settings.html:20
msgid "Help & Support"
msgstr "지원 & 문의"
-#: src/js/controllers/bitpayCard.js:112
-#: src/js/controllers/tab-settings.js:51
+#: src/js/controllers/bitpayCard.js:112
+#: src/js/controllers/tab-settings.js:51
msgid "Help and support information is available at the website."
msgstr "지원 정보와 연락처는 웹사이트에서 확인하실 수 있습니다."
-#: www/views/addresses.html:25
+#: www/views/addresses.html:25
msgid "Hide"
msgstr "숨기기"
-#: www/views/preferences.html:27
+#: www/views/preferences.html:27
msgid "Hide Balance"
msgstr "보유자산 숨기기"
-#: www/views/advancedSettings.html:30
+#: www/views/advancedSettings.html:30
msgid "Hide Next Steps Card"
msgstr "다음 단계 카드 숨기기"
-#: www/views/join.html:49
-#: www/views/tab-create-personal.html:28
-#: www/views/tab-create-shared.html:57
-#: www/views/tab-export-file.html:25
-#: www/views/tab-import-file.html:30
-#: www/views/tab-import-hardware.html:31
-#: www/views/tab-import-phrase.html:36
+#: www/views/join.html:49
+#: www/views/tab-create-personal.html:28
+#: www/views/tab-create-shared.html:57
+#: www/views/tab-export-file.html:25
+#: www/views/tab-import-file.html:30
+#: www/views/tab-import-hardware.html:31
+#: www/views/tab-import-phrase.html:36
msgid "Hide advanced options"
msgstr "고급 설정 숨기기"
-#: www/views/tabs.html:3
+#: 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
+#: 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
+#: www/views/feedback/rateCard.html:3
msgid "How do you like {{appName}}?"
msgstr "{{appName}}을 잘 사용하고 계신가요?"
-#: src/js/controllers/feedback/rateCard.js:29
+#: src/js/controllers/feedback/rateCard.js:29
msgid "I don't like it"
msgstr "별로입니다"
-#: www/views/onboarding/disclaimer.html:43
+#: 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
+#: www/views/modals/terms.html:22
msgid "I have read, understood, and agree with the Terms of use."
msgstr "이용약관을 모두 읽고 이해했으며 동의합니다."
-#: www/views/join.html:137
-#: www/views/tab-create-personal.html:107
-#: www/views/tab-create-shared.html:136
+#: www/views/join.html:137
+#: www/views/tab-create-personal.html:107
+#: www/views/tab-create-shared.html:136
msgid "I have written it down"
msgstr "써놓았습니다"
-#: src/js/controllers/feedback/rateCard.js:35
+#: src/js/controllers/feedback/rateCard.js:35
msgid "I like the app"
msgstr "좋아요"
-#: src/js/controllers/feedback/rateCard.js:26
+#: 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
+#: src/js/controllers/onboarding/backupRequest.js:19
+#: www/views/includes/screenshotWarningModal.html:9
msgid "I understand"
msgstr "이해했습니다"
-#: www/views/onboarding/disclaimer.html:21
+#: 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
+#: 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:36
+#: www/views/backup.html:36
msgid "I've written it down"
msgstr "써놓았습니다"
-#: www/views/preferences.html:45
+#: 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:23
+#: www/views/advancedSettings.html:23
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:14
+#: www/views/advancedSettings.html:14
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
+#: 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
+#: 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
+#: 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:80
+#: www/views/tab-import-hardware.html:42
+#: www/views/tab-import-phrase.html:80
msgid "Import"
msgstr "내려받기"
-#: www/views/import.html:3
+#: www/views/import.html:3
msgid "Import Wallet"
msgstr "지갑 내려받기"
-#: www/views/tab-import-file.html:41
+#: www/views/tab-import-file.html:41
msgid "Import backup"
msgstr "백업 내려받기"
-#: www/views/add.html:38
+#: www/views/add.html:38
msgid "Import wallet"
msgstr "지갑 내려받기"
-#: src/js/services/onGoingProcess.js:24
+#: src/js/services/onGoingProcess.js:24
msgid "Importing Wallet..."
msgstr "지갑을 내려받는 중..."
-#: www/views/backup.html:72
+#: www/views/backup.html:72
msgid "In order to verify your wallet backup, please type your password."
msgstr "지갑의 백업을 검증하기 위해 비밀번호를 입력해주세요."
-#: www/views/mercadoLibreCards.html:24
-#: www/views/modals/mercadolibre-card-details.html:29
+#: www/views/mercadoLibreCards.html:24
+#: www/views/modals/mercadolibre-card-details.html:29
msgid "Inactive"
msgstr "비활성화"
-#: www/views/includes/walletItem.html:9
-#: www/views/includes/walletList.html:6
-#: www/views/includes/walletListSettings.html:9
-#: www/views/includes/walletSelector.html:16
+#: www/views/includes/walletItem.html:9
+#: www/views/includes/walletList.html:6
+#: www/views/includes/walletListSettings.html:9
+#: www/views/includes/walletSelector.html:16
msgid "Incomplete"
msgstr "미완성"
-#: www/views/tab-receive.html:22
+#: www/views/tab-receive.html:22
msgid "Incomplete wallet"
msgstr "미완성 지갑"
-#: www/views/modals/pin.html:12
+#: 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:85
+#. Trying to import a malformed wallet export QR code
+#: src/js/controllers/import.js:85
msgid "Incorrect code format"
msgstr "코드 포맷이 틀렸습니다"
-#: src/js/services/bwcError.js:113
+#: src/js/services/bwcError.js:113
msgid "Incorrect network address"
msgstr "네트워크 주소가 틀렸습니다"
-#: src/js/controllers/confirm.js:114
-#: src/js/controllers/confirm.js:306
-#: src/js/services/bwcError.js:44
+#: src/js/controllers/confirm.js:114
+#: src/js/controllers/confirm.js:306
+#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "확인된 잔액 부족"
+msgstr "잔액이 부족합니다"
-#: src/js/controllers/topup.js:165
-#: src/js/controllers/topup.js:177
-#: src/js/services/bwcError.js:71
+#: src/js/controllers/topup.js:165
+#: src/js/controllers/topup.js:177
+#: src/js/services/bwcError.js:71
msgid "Insufficient funds for fee"
msgstr "수수료를 지급할 잔액이 부족합니다"
-#: www/views/tab-settings.html:123
+#: www/views/tab-settings.html:123
msgid "Integrations"
msgstr "통합"
-#: www/views/includes/walletHistory.html:49
+#: www/views/includes/walletHistory.html:49
msgid "Invalid"
msgstr "인식할 수 없습니다"
-#: src/js/controllers/buyAmazon.js:137
-#: src/js/controllers/buyMercadoLibre.js:137
-#: src/js/controllers/topup.js:115
+#: src/js/controllers/buyAmazon.js:137
+#: src/js/controllers/buyMercadoLibre.js:137
+#: src/js/controllers/topup.js:115
msgid "Invalid URL"
msgstr "URL 오류"
-#: src/js/controllers/create.js:186
-#: src/js/controllers/import.js:345
-#: src/js/controllers/join.js:151
+#: src/js/controllers/create.js:186
+#: src/js/controllers/import.js:345
+#: src/js/controllers/join.js:151
msgid "Invalid account number"
msgstr "계좌 오류"
-#: src/js/services/bwcError.js:119
+#: src/js/services/bwcError.js:119
msgid "Invalid address"
msgstr "주소 오류"
-#: src/js/controllers/tabsController.js:7
+#: src/js/controllers/tabsController.js:7
msgid "Invalid data"
msgstr "데이터 오류"
-#: src/js/controllers/create.js:161
-#: src/js/controllers/import.js:266
-#: src/js/controllers/join.js:125
+#: src/js/controllers/create.js:161
+#: src/js/controllers/import.js:266
+#: src/js/controllers/join.js:125
msgid "Invalid derivation path"
msgstr "유도 경로 오류"
-#: src/js/controllers/copayers.js:90
+#: src/js/controllers/copayers.js:90
msgid "Invitation to share a {{appName}} Wallet"
msgstr "{{appName}} 지갑 공유 초청하기"
-#: www/views/mercadoLibreCards.html:20
-#: www/views/modals/mercadolibre-card-details.html:48
+#: www/views/mercadoLibreCards.html:20
+#: www/views/modals/mercadolibre-card-details.html:48
msgid "Invoice expired"
msgstr "청구서 기한 만료"
-#: src/js/controllers/feedback/send.js:79
+#: src/js/controllers/feedback/send.js:79
msgid "Is there anything we could do better?"
msgstr "저희가 더 발전할 수 있는 부분이 있나요?"
-#: www/views/backup.html:54
+#: www/views/backup.html:54
msgid "Is this correct?"
msgstr "이게 맞나요?"
-#: www/views/onboarding/collectEmail.html:22
+#: www/views/onboarding/collectEmail.html:22
msgid "Is this email address correct?"
msgstr "이 이메일 주소가 맞나요?"
-#: www/views/addresses.html:25
+#: 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
+#: 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:151
+#: www/views/join.html:151
msgid "Join"
msgstr "합류하기"
-#: src/js/controllers/copayers.js:85
+#: 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
+#: www/views/add.html:30
+#: www/views/join.html:5
msgid "Join shared wallet"
msgstr "공유 지갑에 합류하기"
-#: src/js/services/onGoingProcess.js:25
+#: src/js/services/onGoingProcess.js:25
msgid "Joining Wallet..."
msgstr "지갑에 합류 중..."
-#: www/views/onboarding/tour.html:22
+#: www/views/onboarding/tour.html:22
msgid "Just scan the code to pay."
msgstr "코드를 스캔하면 송금할 수 있습니다."
-#: src/js/services/bwcError.js:116
+#: 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:68
+#: www/views/preferencesLanguage.html:4
+#: www/views/tab-settings.html:68
msgid "Language"
msgstr "언어"
-#: www/views/bitpayCard.html:61
+#: www/views/bitpayCard.html:61
msgid "Last Month"
msgstr "지난달"
-#: src/js/controllers/confirm.js:132
-#: www/views/preferences.html:48
-#: www/views/preferencesCash.html:18
-#: www/views/tx-details.html:94
+#: src/js/controllers/confirm.js:132
+#: www/views/preferences.html:48
+#: www/views/preferencesCash.html:18
+#: www/views/tx-details.html:94
msgid "Learn more"
msgstr "더 배우기"
-#: www/views/backup.html:43
+#: www/views/backup.html:43
msgid "Let's verify your backup phrase."
msgstr "백업 문구를 검증하겠습니다."
-#: www/views/addresses.html:45
-#: www/views/allAddresses.html:14
+#: www/views/addresses.html:45
+#: www/views/allAddresses.html:14
msgid "Loading addresses..."
msgstr "주소 로딩 중..."
-#: src/js/services/onGoingProcess.js:35
+#: src/js/services/onGoingProcess.js:35
msgid "Loading transaction info..."
msgstr "거래 정보 로딩 중..."
-#: www/views/tab-settings.html:100
+#: www/views/tab-settings.html:100
msgid "Lock App"
msgstr "앱 보안 설정"
-#: src/js/controllers/lockSetup.js:23
+#: src/js/controllers/lockSetup.js:23
msgid "Lock by Fingerprint"
msgstr "지문 보안 설정"
-#: src/js/controllers/lockSetup.js:14
+#: src/js/controllers/lockSetup.js:14
msgid "Lock by PIN"
msgstr "비밀번호 보안 설정"
-#: www/views/modals/wallet-balance.html:80
+#: www/views/modals/wallet-balance.html:80
msgid "Locked"
msgstr "보안 설정 완료"
-#: src/js/services/bwcError.js:86
+#: 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
+#: src/js/services/bwcError.js:89
msgid "Locktime in effect. Please wait to remove this spend proposal"
msgstr "보안 시간이 발동되었습니다. 이 결제 제안서를 삭제하기 위해 기다려주세요"
-#: www/views/includes/logOptions.html:3
+#: www/views/includes/logOptions.html:3
msgid "Log options"
msgstr "로그 옵션"
-#: www/views/modals/bitpay-card-confirmation.html:14
+#: www/views/modals/bitpay-card-confirmation.html:14
msgid "Log out"
msgstr "로그아웃"
-#: www/views/addresses.html:87
+#: www/views/addresses.html:87
msgid "Low amount inputs"
msgstr "낮은 최소 거래 액수"
-#: www/views/includes/walletHistory.html:27
+#: www/views/includes/walletHistory.html:27
msgid "Low fees"
msgstr "낮은 수수료"
-#: www/views/onboarding/tour.html:38
+#: www/views/onboarding/tour.html:38
msgid "Makes sense"
msgstr "말이 되네요"
-#: src/js/controllers/modals/search.js:61
+#: src/js/controllers/modals/search.js:61
msgid "Matches:"
msgstr "검색 결과:"
-#: www/views/includes/copayers.html:4
-#: www/views/preferencesInformation.html:85
+#: www/views/includes/copayers.html:4
+#: www/views/preferencesInformation.html:85
msgid "Me"
msgstr "내 자신"
-#: src/js/controllers/feedback/rateCard.js:32
+#: src/js/controllers/feedback/rateCard.js:32
msgid "Meh - it's alright"
msgstr "괜찮아요"
-#: src/js/controllers/tx-details.js:165
-#: www/views/modals/paypro.html:48
-#: www/views/modals/txp-details.html:93
-#: www/views/tx-details.html:72
+#: src/js/controllers/tx-details.js:165
+#: www/views/modals/paypro.html:48
+#: www/views/modals/txp-details.html:93
+#: www/views/tx-details.html:72
msgid "Memo"
msgstr "메모"
-#: www/views/mercadoLibre.html:6
+#: www/views/mercadoLibre.html:6
msgid "Mercado Livre Brazil Gift Cards"
msgstr "메르카도 리브르 브라질 기프트 카드"
-#: src/js/controllers/buyMercadoLibre.js:98
+#: src/js/controllers/buyMercadoLibre.js:98
msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
msgstr "메르카도 리브르 기프트 카드 서비스를 사용하실 수 없습니다. 잠시 기다리신 후 다시 시도해주세요."
-#: www/views/modals/txp-details.html:131
+#: www/views/modals/txp-details.html:131
msgid "Merchant Message"
msgstr "판매자 메시지"
-#: www/views/buyAmazon.html:55
-#: www/views/buyMercadoLibre.html:54
-#: www/views/topup.html:63
+#: www/views/buyAmazon.html:55
+#: www/views/buyMercadoLibre.html:54
+#: www/views/topup.html:63
msgid "Miner Fee"
msgstr "채굴자 수수료"
-#: src/js/services/bwcError.js:134
+#: src/js/services/bwcError.js:134
msgid "Missing parameter"
msgstr "매개변수가 필요합니다"
-#: src/js/services/bwcError.js:32
+#: src/js/services/bwcError.js:32
msgid "Missing private keys to sign"
msgstr "개인키가 필요합니다"
-#: www/views/preferences.html:61
-#: www/views/preferencesAdvanced.html:3
+#: www/views/preferences.html:61
+#: www/views/preferencesAdvanced.html:3
msgid "More Options"
msgstr "추가 옵션"
-#: www/views/includes/walletHistory.html:47
-#: www/views/tx-details.html:19
+#: www/views/includes/walletHistory.html:47
+#: www/views/tx-details.html:19
msgid "Moved"
msgstr "이동 완료"
-#: src/js/controllers/tx-details.js:131
+#: src/js/controllers/tx-details.js:131
msgid "Moved Funds"
msgstr "이동된 보유자산"
-#: www/views/modals/txp-details.html:57
+#: www/views/modals/txp-details.html:57
msgid "Multiple recipients"
msgstr "다수의 수령인"
-#: www/views/tab-import-phrase.html:8
+#: 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
+#: 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:49
-#: www/views/buyMercadoLibre.html:48
-#: www/views/topup.html:56
+#: www/views/buyAmazon.html:49
+#: www/views/buyMercadoLibre.html:48
+#: www/views/topup.html:56
msgid "Network Cost"
msgstr "네트워크 수수료"
-#: src/js/services/bwcError.js:47
+#: src/js/services/bwcError.js:47
msgid "Network error"
msgstr "네트워크 오류"
-#: www/views/includes/walletActivity.html:43
+#: www/views/includes/walletActivity.html:43
msgid "New Proposal"
msgstr "새로운 제안서"
-#: src/js/controllers/addresses.js:126
+#: src/js/controllers/addresses.js:126
msgid "New address could not be generated. Please try again."
msgstr "새로운 주소를 생성할 수 없습니다. 다시 시도해주세요."
-#: www/views/add.html:14
+#: www/views/add.html:14
msgid "New personal wallet"
msgstr "새로운 개인 지갑"
-#: www/views/includes/nextSteps.html:3
+#: www/views/includes/nextSteps.html:3
msgid "Next steps"
msgstr "다음 단계"
-#: www/views/tab-receive.html:16
+#: www/views/tab-receive.html:16
msgid "No Wallet"
msgstr "지갑 없음"
-#: src/js/controllers/buyAmazon.js:115
-#: src/js/controllers/buyMercadoLibre.js:115
+#: src/js/controllers/buyAmazon.js:115
+#: src/js/controllers/buyMercadoLibre.js:115
msgid "No access key defined"
msgstr "액세스 키 없음"
-#: www/views/onboarding/backupRequest.html:5
+#: www/views/onboarding/backupRequest.html:5
msgid "No backup, no bitcoin."
msgstr "백업이 없다면 비트코인도 없습니다."
-#: www/views/addressbook.html:19
+#: www/views/addressbook.html:19
msgid "No contacts yet"
msgstr "아직 연락처 없음"
-#: www/views/preferencesLogs.html:16
+#: www/views/preferencesLogs.html:16
msgid "No entries for this log level"
msgstr "현 로그 레벨 기입 항목 없음"
-#: www/views/preferencesExternal.html:12
+#: www/views/preferencesExternal.html:12
msgid "No hardware information available."
msgstr "하드웨어 정보가 없습니다."
-#: www/views/tab-import-hardware.html:3
+#: www/views/tab-import-hardware.html:3
msgid "No hardware wallets supported on this device"
msgstr "이 기기는 하드웨어 지갑과 호환되지 않습니다"
-#: www/views/proposals.html:24
+#: www/views/proposals.html:24
msgid "No pending proposals"
msgstr "진행 중인 제안서"
-#: www/views/activity.html:25
+#: www/views/activity.html:25
msgid "No recent transactions"
msgstr "최근 거래 없음"
-#: src/js/controllers/buyAmazon.js:44
-#: src/js/controllers/topup.js:47
+#: src/js/controllers/buyAmazon.js:44
+#: src/js/controllers/topup.js:47
msgid "No signing proposal: No private key"
msgstr "개인키가 없이는 제안서를 승인할 수 없습니다"
-#: www/views/walletDetails.html:204
+#: www/views/walletDetails.html:204
msgid "No transactions yet"
msgstr "아직 거래 없음"
-#: src/js/controllers/preferencesDelete.js:15
+#: src/js/controllers/preferencesDelete.js:15
msgid "No wallet found"
msgstr "지갑을 찾을 수 없습니다"
-#: src/js/controllers/preferencesDelete.js:8
+#: src/js/controllers/preferencesDelete.js:8
msgid "No wallet selected"
msgstr "지갑을 선택하지 않았습니다"
-#: src/js/controllers/buyAmazon.js:300
-#: src/js/controllers/buyMercadoLibre.js:292
-#: src/js/controllers/confirm.js:85
-#: src/js/controllers/topup.js:265
+#: src/js/controllers/buyAmazon.js:300
+#: src/js/controllers/buyMercadoLibre.js:292
+#: src/js/controllers/confirm.js:85
+#: src/js/controllers/topup.js:265
msgid "No wallets available"
msgstr "선택할 수 있는 지갑이 없습니다"
-#: www/views/paperWallet.html:45
+#: www/views/paperWallet.html:45
msgid "No wallets available to receive funds"
msgstr "송금받을 수 있는 지갑이 없습니다"
-#: www/views/cashScan.html:15
+#: www/views/cashScan.html:15
msgid "No wallets eligible for Bitcoin Cash support"
msgstr "비트코인 캐시를 지원하는 지갑이 없습니다"
-#: src/js/controllers/cashScan.js:58
+#: src/js/controllers/cashScan.js:58
msgid "Non BIP44 wallet"
msgstr "BIP44 호환 불가 지갑"
-#: www/views/cashScan.html:46
+#: www/views/cashScan.html:46
msgid "Non eligible BTC wallets"
msgstr "비트코인을 지원하지 않는 지갑"
-#: src/js/services/feeService.js:12
+#: src/js/services/feeService.js:12
msgid "Normal"
msgstr "노말"
-#: src/js/services/bwcError.js:80
+#: src/js/services/bwcError.js:80
msgid "Not authorized"
msgstr "허가되지 않았습니다"
-#: src/js/controllers/confirm.js:307
+#: src/js/controllers/confirm.js:307
msgid "Not enough funds for fee"
msgstr "수수료를 지불 할 금액이 부족합니다"
-#: www/views/onboarding/tour.html:50
+#: www/views/onboarding/tour.html:50
msgid "Not even BitPay can access it."
msgstr "BitPay조차도 접근할 수 없습니다."
-#: src/js/controllers/paperWallet.js:47
+#: src/js/controllers/paperWallet.js:47
msgid "Not funds found"
msgstr "자금을 찾을 수 없습니다"
-#: www/views/feedback/rateApp.html:3
-#: www/views/onboarding/notifications.html:8
+#: www/views/feedback/rateApp.html:3
+#: www/views/onboarding/notifications.html:8
msgid "Not now"
msgstr "나중에요"
-#: www/views/includes/output.html:15
+#: www/views/includes/output.html:15
msgid "Note"
msgstr "노트"
-#: www/views/backup.html:19
+#: www/views/backup.html:19
msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
msgstr "노트: 이 비트코인 캐시 지갑이 비트코인 지갑의 복제본이라면, 둘은 동일한 백업 문구를 공유합니다."
-#: www/views/modals/wallets.html:25
+#: 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:61
+#: www/views/preferencesNotifications.html:3
+#: www/views/tab-settings.html:61
msgid "Notifications"
msgstr "알림"
-#: www/views/onboarding/collectEmail.html:9
+#: www/views/onboarding/collectEmail.html:9
msgid "Notifications by email"
msgstr "이메일 알림"
-#: www/views/tx-details.html:117
+#: www/views/tx-details.html:117
msgid "Notify me if confirmed"
msgstr "확정 시 알림 활성화하기"
-#: www/views/preferencesNotifications.html:24
+#: www/views/preferencesNotifications.html:24
msgid "Notify me when transactions are confirmed"
msgstr "거래 완료 시 알림 활성화하기"
-#: www/views/includes/backupNeededPopup.html:8
+#: 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
+#: 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:312
-#: src/js/controllers/topup.js:286
-#: src/js/services/incomingData.js:153
-#: 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
+#: src/js/controllers/buyAmazon.js:312
+#: src/js/controllers/topup.js:286
+#: src/js/services/incomingData.js:153
+#: 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
+#: 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
+#: www/views/modals/terms.html:15
msgid "Official English Disclaimer"
msgstr "공식 영어 포기 성명"
-#: src/js/controllers/feedback/send.js:64
+#: src/js/controllers/feedback/send.js:64
msgid "Oh no!"
msgstr "앗!"
-#: src/js/controllers/buyMercadoLibre.js:306
+#: src/js/controllers/buyMercadoLibre.js:306
msgid "Ok"
msgstr "네"
-#: www/views/tab-home.html:39
+#: 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/cashScan.js:19
-#: src/js/controllers/preferences.js:66
-#: src/js/controllers/preferencesCash.js:33
-#: src/js/controllers/tab-settings.js:52
-#: src/js/controllers/tx-details.js:55
+#: src/js/controllers/bitpayCard.js:113
+#: src/js/controllers/cashScan.js:19
+#: src/js/controllers/preferences.js:66
+#: src/js/controllers/preferencesCash.js:33
+#: src/js/controllers/tab-settings.js:52
+#: src/js/controllers/tx-details.js:55
msgid "Open"
msgstr "열기"
-#: src/js/controllers/preferencesLanguage.js:13
+#: src/js/controllers/preferencesLanguage.js:13
msgid "Open Crowdin"
msgstr "Crowdin 열기"
-#: src/js/controllers/preferencesAbout.js:15
+#: src/js/controllers/preferencesAbout.js:15
msgid "Open GitHub"
msgstr "GitHub 열기"
-#: src/js/controllers/preferencesAbout.js:13
+#: src/js/controllers/preferencesAbout.js:13
msgid "Open GitHub Project"
msgstr "GibHub Project 열기"
-#: src/js/controllers/bitpayCard.js:123
-#: src/js/controllers/tx-details.js:192
+#: src/js/controllers/bitpayCard.js:123
+#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "블록 탐색기 열기"
+msgstr "Insight 열기"
-#: www/views/tab-scan.html:22
+#: www/views/tab-scan.html:22
msgid "Open Settings"
msgstr "설정 열기"
-#: src/js/controllers/preferencesLanguage.js:11
+#: src/js/controllers/preferencesLanguage.js:11
msgid "Open Translation Community"
msgstr "번역 커뮤니티 열기"
-#: src/js/controllers/onboarding/terms.js:22
+#: src/js/controllers/onboarding/terms.js:22
msgid "Open Website"
msgstr "웹사이트 열기"
-#: src/js/controllers/preferencesCash.js:32
+#: src/js/controllers/preferencesCash.js:32
msgid "Open bitcoincash.org?"
msgstr "bitcoincash.org를 여시겠습니까?"
-#: src/js/controllers/cashScan.js:18
+#: src/js/controllers/cashScan.js:18
msgid "Open the recovery tool."
msgstr "복구 기능 열기."
-#: www/views/tab-receive.html:27
+#: www/views/tab-receive.html:27
msgid "Open wallet"
msgstr "지갑 열기"
-#: www/views/includes/incomingDataMenu.html:19
+#: www/views/includes/incomingDataMenu.html:19
msgid "Open website"
msgstr "웹사이트 열기"
-#: www/views/bitpayCardIntro.html:34
+#: www/views/bitpayCardIntro.html:34
msgid "Order the BitPay Card"
msgstr "BitPay 카드 주문하기"
-#: www/views/join.html:105
-#: www/views/join.html:96
-#: www/views/tab-create-personal.html:69
-#: www/views/tab-create-personal.html:77
-#: www/views/tab-create-shared.html:106
-#: www/views/tab-create-shared.html:98
-#: www/views/tab-import-file.html:18
-#: www/views/tab-import-phrase.html:41
+#: www/views/join.html:105
+#: www/views/join.html:96
+#: www/views/tab-create-personal.html:69
+#: www/views/tab-create-personal.html:77
+#: www/views/tab-create-shared.html:106
+#: www/views/tab-create-shared.html:98
+#: www/views/tab-import-file.html:18
+#: www/views/tab-import-phrase.html:41
msgid "Password"
msgstr "비밀번호"
-#: src/js/controllers/import.js:98
+#: src/js/controllers/import.js:98
msgid "Password required. Make sure to enter your password in advanced options"
msgstr "비밀번호가 필요합니다. 고급 설정에서 비밀번호를 입력하세요"
-#: www/views/join.html:33
+#: www/views/join.html:33
msgid "Paste invitation here"
msgstr "초대 붙여넣기"
-#: www/views/tab-import-file.html:13
+#: www/views/tab-import-file.html:13
msgid "Paste the backup plain text code"
msgstr "백업 문구 텍스트로 붙여넣기"
-#: www/views/bitpayCardIntro.html:28
+#: www/views/bitpayCardIntro.html:28
msgid "Pay 0% fees to turn bitcoin into dollars."
msgstr "0%의 수수료로 비트코인을 달러로 환전하세요."
-#: www/views/modals/paypro.html:18
+#: www/views/modals/paypro.html:18
msgid "Pay To"
msgstr "지불 대상"
-#: src/js/controllers/modals/txpDetails.js:51
-#: www/views/modals/tx-status.html:33
+#: src/js/controllers/modals/txpDetails.js:51
+#: www/views/modals/tx-status.html:33
msgid "Payment Accepted"
msgstr "지불 수락 완료"
-#: www/views/confirm.html:25
+#: www/views/confirm.html:25
msgid "Payment Expires:"
msgstr "송금 만료 기간:"
-#: www/views/modals/txp-details.html:6
+#: www/views/modals/txp-details.html:6
msgid "Payment Proposal"
msgstr "지불 제안서"
-#: www/views/modals/tx-status.html:21
+#: www/views/modals/tx-status.html:21
msgid "Payment Proposal Created"
msgstr "지불 제안서 완성"
-#: www/views/tab-home.html:46
+#: www/views/tab-home.html:46
msgid "Payment Proposals"
msgstr "지불 제안서"
-#: src/js/services/payproService.js:32
+#: src/js/services/payproService.js:32
msgid "Payment Protocol Invalid"
msgstr "결제 프로토콜 무효/오류"
-#: src/js/services/payproService.js:18
+#: src/js/services/payproService.js:18
msgid "Payment Protocol not supported on Chrome App"
msgstr "크롬 앱은 결제 프로토콜을 지원하지 않습니다"
-#: www/views/includes/walletActivity.html:20
+#: www/views/includes/walletActivity.html:20
msgid "Payment Received"
msgstr "송금 도착"
-#: www/views/modals/tx-status.html:43
-#: www/views/modals/txp-details.html:43
+#: www/views/modals/tx-status.html:43
+#: www/views/modals/txp-details.html:43
msgid "Payment Rejected"
msgstr "송금 거부"
-#: src/js/controllers/modals/txpDetails.js:44
-#: www/views/confirm.html:124
-#: www/views/includes/walletActivity.html:11
-#: www/views/modals/txp-details.html:42
+#: src/js/controllers/modals/txpDetails.js:44
+#: www/views/confirm.html:124
+#: www/views/includes/walletActivity.html:11
+#: www/views/modals/txp-details.html:42
msgid "Payment Sent"
msgstr "송금 완료"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "거래 공유"
-
-#: www/views/modals/txp-details.html:32
+#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "송금을 수락했으나 아직 브로드캐스트되지 않았습니다"
-#: www/views/modals/txp-details.html:40
+#: 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시간 내로 삭제할 수 있습니다."
-#: src/js/services/incomingData.js:152
+#: src/js/services/incomingData.js:152
msgid "Payment address was translated to new Bitcoin Cash address format:"
msgstr "기존의 결제 주소가 새로운 비트코인 캐시 주소 포맷으로 전환되었습니다:"
-#: www/views/modals/txp-details.html:107
+#: www/views/modals/txp-details.html:107
msgid "Payment details"
msgstr "결제 디테일"
-#: www/views/modals/paypro.html:6
-msgid "Payment Request"
+#: www/views/modals/paypro.html:6
+msgid "Payment request"
msgstr "결제 요구"
-#: www/views/mercadoLibreCards.html:22
-#: www/views/modals/mercadolibre-card-details.html:39
+#: www/views/mercadoLibreCards.html:22
+#: www/views/modals/mercadolibre-card-details.html:39
msgid "Pending"
msgstr "보류 중"
-#: www/views/proposals.html:4
+#: www/views/proposals.html:4
msgid "Pending Proposals"
msgstr "보류 중인 제안서"
-#: www/views/preferencesDeleteWallet.html:13
+#: www/views/preferencesDeleteWallet.html:13
msgid "Permanently delete this wallet."
msgstr "이 지갑을 영구적으로 삭제합니다."
-#: src/js/services/profileService.js:403
+#: src/js/services/profileService.js:403
msgid "Personal Wallet"
msgstr "개인 지갑"
-#: www/views/backup.html:25
+#: www/views/backup.html:25
msgid "Please carefully write down this phrase."
msgstr "이 문구를 받아적으세요."
-#: www/views/tab-scan.html:20
+#: www/views/tab-scan.html:20
msgid "Please connect a camera to get started."
msgstr "시작하기 위해 카메라를 연결해주세요."
-#: src/js/controllers/import.js:278
+#: src/js/controllers/import.js:278
msgid "Please enter the recovery phrase"
msgstr "백업 문구를 써넣어주세요"
-#: src/js/controllers/create.js:174
-#: src/js/controllers/join.js:139
+#: src/js/controllers/create.js:174
+#: src/js/controllers/join.js:139
msgid "Please enter the wallet recovery phrase"
msgstr "지갑 복구 문구를 써넣어주세요"
-#: www/views/modals/pin.html:9
+#: www/views/modals/pin.html:9
msgid "Please enter your PIN"
msgstr "PIN을 작성해주세요"
-#: www/views/backup.html:53
+#: www/views/backup.html:53
msgid "Please tap each word in the correct order."
msgstr "단어들을 올바른 순서대로 눌러주세요."
-#: src/js/services/bwcError.js:101
+#: src/js/services/bwcError.js:101
msgid "Please upgrade Copay to perform this action"
msgstr "이 액션을 취하기 위해선 Copay의 업그레이드가 필요합니다"
-#: www/views/walletDetails.html:142
-#: www/views/walletDetails.html:62
+#: www/views/walletDetails.html:142
+#: www/views/walletDetails.html:62
msgid "Please wait"
msgstr "기다려주세요"
-#: src/js/controllers/import.js:238
+#: src/js/controllers/import.js:238
msgid "Please, select your backup file"
msgstr "백업 파일을 선택해주세요"
-#: www/views/bitpayCard.html:81
+#: www/views/bitpayCard.html:81
msgid "Pre-Auth Holds"
msgstr "인증 대기 홀드"
-#: www/views/tab-settings.html:40
+#: www/views/tab-settings.html:40
msgid "Preferences"
msgstr "환경 설정"
-#: src/js/services/onGoingProcess.js:38
+#: src/js/services/onGoingProcess.js:38
msgid "Preparing addresses..."
msgstr "주소 준비 중..."
-#: src/js/controllers/export.js:198
+#: src/js/controllers/export.js:198
msgid "Preparing backup..."
msgstr "백업 준비 중..."
-#: src/js/routes.js:1264
+#: src/js/routes.js:1264
msgid "Press again to exit"
msgstr "나가기 위해선 한 번 더 눌러주세요"
-#: src/js/services/feeService.js:11
+#: src/js/services/feeService.js:11
msgid "Priority"
msgstr "우선 순위"
-#: www/views/includes/incomingDataMenu.html:80
+#: www/views/includes/incomingDataMenu.html:80
msgid "Private Key"
msgstr "개인키"
-#: src/js/controllers/paperWallet.js:136
+#: src/js/controllers/paperWallet.js:136
msgid "Private key encrypted. Enter password"
msgstr "개인키 암호화. 비밀번호를 써넣어주세요"
-#: src/js/services/bwcError.js:35
+#: src/js/services/bwcError.js:35
msgid "Private key is encrypted, cannot sign"
msgstr "개인키가 암호화되어있습니다. 사인할 수 없습니다"
-#: www/views/includes/walletActivity.html:51
+#: www/views/includes/walletActivity.html:51
msgid "Proposal Accepted"
msgstr "제안서 수락"
-#: src/js/controllers/modals/txpDetails.js:61
-#: src/js/controllers/tx-details.js:78
-#: www/views/confirm.html:125
+#: src/js/controllers/modals/txpDetails.js:61
+#: src/js/controllers/tx-details.js:78
+#: www/views/confirm.html:125
msgid "Proposal Created"
msgstr "제안서 완성"
-#: www/views/includes/walletActivity.html:27
+#: www/views/includes/walletActivity.html:27
msgid "Proposal Deleted"
msgstr "제안서 삭제 완료"
-#: www/views/includes/walletActivity.html:35
+#: www/views/includes/walletActivity.html:35
msgid "Proposal Rejected"
msgstr "제안서 거부"
-#: www/views/walletDetails.html:189
+#: www/views/walletDetails.html:189
msgid "Proposals"
msgstr "제안서"
-#: src/js/controllers/buyAmazon.js:282
+#: src/js/controllers/buyAmazon.js:282
msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
msgstr "하루에는 {{limitPerDay}} {{currency}}만 구매하실 수 있습니다"
-#: src/js/controllers/buyMercadoLibre.js:281
+#: src/js/controllers/buyMercadoLibre.js:281
msgid "Purchase amount must be a value between 50 and 2000"
msgstr "구매 수량이 50 이상 2000 이하여야 합니다"
-#: www/views/onboarding/notifications.html:3
+#: www/views/onboarding/notifications.html:3
msgid "Push Notifications"
msgstr "푸시 알림"
-#: www/views/preferencesNotifications.html:17
+#: 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
+#: www/views/export.html:17
msgid "QR Code"
msgstr "QR 코드"
-#: www/views/onboarding/disclaimer.html:13
+#: www/views/onboarding/disclaimer.html:13
msgid "Quick review!"
msgstr "복습 시간!"
-#: src/js/controllers/create.js:84
-#: src/js/controllers/join.js:68
+#: src/js/controllers/create.js:84
+#: src/js/controllers/join.js:68
msgid "Random"
msgstr "랜덤"
-#: www/views/feedback/rateApp.html:14
+#: www/views/feedback/rateApp.html:14
msgid "Rate on the app store"
msgstr "앱스토어에서 평가하기"
-#: www/views/addresses.html:52
+#: www/views/addresses.html:52
msgid "Read less"
msgstr "덜 읽고 싶어요"
-#: www/views/addresses.html:51
+#: www/views/addresses.html:51
msgid "Read more"
msgstr "더 읽기"
-#: src/js/controllers/preferences.js:65
-#: src/js/controllers/tx-details.js:54
+#: src/js/controllers/preferences.js:65
+#: src/js/controllers/tx-details.js:54
msgid "Read more in our Wiki"
msgstr "위키에서 더 많은 정보 확인하기"
-#: src/js/controllers/cashScan.js:61
+#: src/js/controllers/cashScan.js:61
msgid "Read only wallet"
msgstr "읽기 전용 지갑"
-#: www/views/tab-receive.html:3
-#: www/views/tabs.html:7
+#: www/views/tab-receive.html:3
+#: www/views/tabs.html:7
msgid "Receive"
msgstr "받기"
-#: www/views/customAmount.html:44
+#: www/views/customAmount.html:44
msgid "Receive in"
msgstr "다음으로 받기"
-#: www/views/includes/walletHistory.html:24
-#: www/views/tx-details.html:18
+#: www/views/includes/walletHistory.html:24
+#: www/views/tx-details.html:18
msgid "Received"
msgstr "받기 완료"
-#: src/js/controllers/tx-details.js:130
+#: src/js/controllers/tx-details.js:130
msgid "Received Funds"
msgstr "받은 자금"
-#: www/views/includes/walletHistory.html:57
-#: www/views/tx-details.html:24
+#: 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
+#: www/views/bitpayCard.html:60
+#: www/views/includes/walletHistory.html:3
msgid "Recent"
msgstr "최근"
-#: www/views/advancedSettings.html:21
+#: www/views/advancedSettings.html:21
msgid "Recent Transaction Card"
msgstr "최근 거래 카드"
-#: www/views/activity.html:4
-#: www/views/tab-home.html:58
+#: 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
+#: www/views/amount.html:18
+#: www/views/tab-send.html:9
msgid "Recipient"
msgstr "수령인"
-#: www/views/modals/txp-details.html:62
+#: www/views/modals/txp-details.html:62
msgid "Recipients"
msgstr "수령인"
-#: www/views/import.html:12
+#: www/views/import.html:12
msgid "Recovery phrase"
msgstr "백업 문구"
-#: src/js/services/onGoingProcess.js:26
+#: src/js/services/onGoingProcess.js:26
msgid "Recreating Wallet..."
msgstr "지갑 다시 만드는 중..."
-#: www/views/modals/mercadolibre-card-details.html:22
+#: www/views/modals/mercadolibre-card-details.html:22
msgid "Redeem now"
msgstr "지금 수령하기"
-#: src/js/controllers/modals/txpDetails.js:63
-#: src/js/controllers/tx-details.js:80
+#: src/js/controllers/modals/txpDetails.js:63
+#: src/js/controllers/tx-details.js:80
msgid "Rejected"
msgstr "거부"
-#: src/js/services/onGoingProcess.js:27
+#: src/js/services/onGoingProcess.js:27
msgid "Rejecting payment proposal"
msgstr "결제 제안서 거부 중"
-#: www/views/preferencesAbout.html:9
+#: www/views/preferencesAbout.html:9
msgid "Release information"
msgstr "버전 정보"
-#: www/views/addressbook.view.html:36
-#: www/views/modals/mercadolibre-card-details.html:69
+#: www/views/addressbook.view.html:36
+#: www/views/modals/mercadolibre-card-details.html:69
msgid "Remove"
msgstr "삭제하기"
-#: src/js/controllers/preferencesBitpayServices.js:7
+#: src/js/controllers/preferencesBitpayServices.js:7
msgid "Remove BitPay Account?"
msgstr "BitPay 계정을 삭제하시겠습니까?"
-#: src/js/controllers/preferencesBitpayServices.js:19
+#: src/js/controllers/preferencesBitpayServices.js:19
msgid "Remove BitPay Card?"
msgstr "BitPay 카드를 삭제하시겠습니까?"
-#: src/js/controllers/preferencesBitpayServices.js:8
+#: 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:116
-#: www/views/join.html:124
-#: www/views/tab-create-personal.html:86
-#: www/views/tab-create-personal.html:94
-#: www/views/tab-create-shared.html:115
-#: www/views/tab-create-shared.html:123
-#: www/views/tab-export-file.html:17
+#: www/views/join.html:116
+#: www/views/join.html:124
+#: www/views/tab-create-personal.html:86
+#: www/views/tab-create-personal.html:94
+#: www/views/tab-create-shared.html:115
+#: www/views/tab-create-shared.html:123
+#: www/views/tab-export-file.html:17
msgid "Repeat password"
msgstr "비밀번호 다시쓰기"
-#: www/views/tab-export-file.html:16
+#: www/views/tab-export-file.html:16
msgid "Repeat the password"
msgstr "비밀번호를 다시 써넣으세요"
-#: www/views/preferences.html:56
+#: www/views/preferences.html:56
msgid "Request Fingerprint"
msgstr "지문 요구하기"
-#: www/views/tab-receive.html:45
+#: www/views/tab-receive.html:45
msgid "Request Specific amount"
msgstr "특정 액수 요구하기"
-#: www/views/preferences.html:42
+#: www/views/preferences.html:42
msgid "Request Spending Password"
msgstr "결제 비밀번호 요구하기"
-#: www/views/tab-create-shared.html:44
+#: www/views/tab-create-shared.html:44
msgid "Required number of signatures"
msgstr "필요한 서명 수"
-#: www/views/onboarding/welcome.html:9
+#: www/views/onboarding/welcome.html:9
msgid "Restore from backup"
msgstr "백업으로 복원하기"
-#: src/js/services/onGoingProcess.js:29
+#: src/js/services/onGoingProcess.js:29
msgid "Retrieving inputs information"
msgstr "정보 가져오는 중"
-#: src/js/controllers/onboarding/tour.js:56
+#: src/js/controllers/onboarding/tour.js:56
msgid "Retry"
msgstr "다시 시도"
-#: www/views/tab-scan.html:23
+#: 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
+#: 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
+#: www/views/tab-scan.html:3
+#: www/views/tabs.html:11
msgid "Scan"
msgstr "스캔"
-#: www/views/tab-scan.html:15
+#: www/views/tab-scan.html:15
msgid "Scan QR Codes"
msgstr "QR 코드 스캔"
-#: www/views/addresses.html:31
+#: www/views/addresses.html:31
msgid "Scan addresses for funds"
msgstr "주소에서 자금 스캔하기"
-#: www/views/modals/fingerprintCheck.html:11
+#: www/views/modals/fingerprintCheck.html:11
msgid "Scan again"
msgstr "다시 스캔하기"
-#: src/js/services/fingerprintService.js:56
+#: src/js/services/fingerprintService.js:56
msgid "Scan your fingerprint please"
msgstr "지문을 스캔해주세요"
-#: www/views/preferencesCash.html:23
+#: www/views/preferencesCash.html:23
msgid "Scan your wallets for Bitcoin Cash"
msgstr "지갑에서 비트코인 캐시 스캔하기"
-#: src/js/services/onGoingProcess.js:30
+#: src/js/services/onGoingProcess.js:30
msgid "Scanning Wallet funds..."
msgstr "지갑 내 자산 스캔 중..."
-#: www/views/includes/walletList.html:11
+#: www/views/includes/walletList.html:11
msgid "Scanning funds..."
msgstr "자산 스캔 중..."
-#: www/views/includes/screenshotWarningModal.html:7
+#: www/views/includes/screenshotWarningModal.html:7
msgid "Screenshots are not secure"
msgstr "스크린샷은 안전하지 않습니다"
-#: www/views/modals/search.html:6
+#: www/views/modals/search.html:6
msgid "Search Transactions"
msgstr "거래 기록 검색하기"
-#: www/views/tab-send.html:13
+#: www/views/tab-send.html:13
msgid "Search or enter bitcoin address"
msgstr "비트코인 주소를 찾거나 작성"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "클립보드"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "클립보드가 비어 있습니다"
-
-#: www/views/modals/search.html:16
+#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "거래 기록 검색"
-#: www/views/preferencesAltCurrency.html:14
+#: www/views/preferencesAltCurrency.html:14
msgid "Search your currency"
msgstr "자산 검색하기"
-#: www/views/preferences.html:30
+#: www/views/preferences.html:30
msgid "Security"
msgstr "보안"
-#: www/views/modals/mercadolibre-card-details.html:64
+#: www/views/modals/mercadolibre-card-details.html:64
msgid "See invoice"
msgstr "청구서 확인하기"
-#: www/views/tab-import-file.html:7
+#: www/views/tab-import-file.html:7
msgid "Select a backup file"
msgstr "백업파일을 선택하세요"
-#: src/js/controllers/tab-receive.js:139
+#: src/js/controllers/tab-receive.js:139
msgid "Select a wallet"
msgstr "지갑을 선택하세요"
-#: www/views/modals/paypro.html:38
+#: www/views/modals/paypro.html:38
msgid "Self-signed Certificate"
msgstr "SSL 자체 서명 인증서"
-#: src/js/services/onGoingProcess.js:41
+#: 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
+#: 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
+#: www/views/feedback/send.html:3
+#: www/views/tab-settings.html:29
msgid "Send Feedback"
msgstr "피드백 보내기"
-#: www/views/addressbook.view.html:31
+#: www/views/addressbook.view.html:31
msgid "Send Money"
msgstr "송금하기"
-#: www/views/allAddresses.html:19
+#: www/views/allAddresses.html:19
msgid "Send addresses by email"
msgstr "이메일로 주소 보내기"
-#: www/views/includes/logOptions.html:17
-#: www/views/tab-export-file.html:82
+#: www/views/includes/logOptions.html:17
+#: www/views/tab-export-file.html:82
msgid "Send by email"
msgstr "이메일로 보내기"
-#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
+#: src/js/controllers/confirm.js:177
msgid "Send from"
msgstr "출처"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "보내기"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "클립보드 붙여넣기"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "주소 붙여넣기"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "지갑 간 전송"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "QR 코드 스캔"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "비트코인 속성 전송!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "자주 사용하는 주소를 저장하고 한 번의 탭으로 저장된 주소에 비트코인 전송"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "첫 번째 연락처 추가"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "비트코인 지갑이 비어 있습니다"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "시작하려면 비트코인 캐시(BCH) 또는 비트코인 코어(BTC)를 구매하거나 주소를 공유합니다."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "지갑 또는 서비스에서 비트코인을 받을 수 있습니다."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr "시작하시기 위해선 비트코인 지갑을 생성하시거나 비트코인을 구매하세요."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "지금 비트코인 구매"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "내 주소 보기"
-
-#: www/views/includes/itemSelector.html:8
+#: www/views/includes/itemSelector.html:8
msgid "Send max amount"
msgstr "최대 수량 보내기"
-#: www/views/includes/incomingDataMenu.html:46
+#: www/views/includes/incomingDataMenu.html:46
msgid "Send payment to this address"
msgstr "이 주소로 송금하기"
-#: www/views/feedback/rateApp.html:17
+#: 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
+#: 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
+#: src/js/services/onGoingProcess.js:39
msgid "Sending 2FA code..."
msgstr "2FA 코드 보내는 중..."
-#: src/js/services/onGoingProcess.js:36
+#: src/js/services/onGoingProcess.js:36
msgid "Sending feedback..."
msgstr "피드백 보내는 중..."
-#: www/views/confirm.html:16
+#: www/views/confirm.html:16
msgid "Sending maximum amount"
msgstr "최대 수량 보내는 중"
-#: src/js/services/onGoingProcess.js:31
+#: src/js/services/onGoingProcess.js:31
msgid "Sending transaction"
msgstr "송금 중"
-#: src/js/controllers/confirm.js:545
+#: src/js/controllers/confirm.js:545
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
+#: 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:129
+#: src/js/controllers/tx-details.js:129
msgid "Sent Funds"
msgstr "보낸 액수"
-#: src/js/services/bwcError.js:38
+#: src/js/services/bwcError.js:38
msgid "Server response could not be verified"
msgstr "서버의 반응이 불안정합니다"
-#: src/js/controllers/buyAmazon.js:97
-#: src/js/controllers/buyMercadoLibre.js:97
+#: src/js/controllers/buyAmazon.js:97
+#: src/js/controllers/buyMercadoLibre.js:97
msgid "Service not available"
msgstr "서비스를 사용할 수 없습니다"
-#: www/views/includes/homeIntegrations.html:3
+#: www/views/includes/homeIntegrations.html:3
msgid "Services"
msgstr "서비스"
-#: www/views/preferencesLogs.html:3
+#: www/views/preferencesLogs.html:3
msgid "Session Log"
msgstr "세션 로그"
-#: www/views/preferencesAbout.html:35
+#: www/views/preferencesAbout.html:35
msgid "Session log"
msgstr "세션 로그"
-#: www/views/tab-export-file.html:10
+#: www/views/tab-export-file.html:10
msgid "Set up a password"
msgstr "비밀번호 설정"
-#: src/js/controllers/preferencesFee.js:85
+#: src/js/controllers/preferencesFee.js:85
msgid "Set your own fee in satoshis/byte"
msgstr "본인의 수수료를 사토시/바이트로 설정하세요"
-#: www/views/tab-settings.html:3
-#: www/views/tabs.html:19
+#: 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
+#: 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
+#: 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
+#: 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
+#: www/views/tab-import-hardware.html:24
msgid "Shared Wallet"
msgstr "공유 지갑"
-#: www/views/preferencesExternal.html:34
+#: www/views/preferencesExternal.html:34
msgid "Show Recovery Phrase"
msgstr "백업 문구 확인하기"
-#: www/views/tab-receive.html:34
+#: www/views/tab-receive.html:34
msgid "Show address"
msgstr "주소 확인하기"
-#: www/views/join.html:48
-#: www/views/tab-create-personal.html:27
-#: www/views/tab-create-shared.html:56
-#: www/views/tab-export-file.html:24
-#: www/views/tab-import-file.html:29
-#: www/views/tab-import-hardware.html:30
-#: www/views/tab-import-phrase.html:35
+#: www/views/join.html:48
+#: www/views/tab-create-personal.html:27
+#: www/views/tab-create-shared.html:56
+#: www/views/tab-export-file.html:24
+#: www/views/tab-import-file.html:29
+#: www/views/tab-import-hardware.html:30
+#: www/views/tab-import-phrase.html:35
msgid "Show advanced options"
msgstr "고급 설정 확인하기"
-#: www/views/tab-send.html:37
+#: www/views/tab-send.html:37
msgid "Show bitcoin address"
msgstr "비트코인 주소 확인하기"
-#: www/views/tab-send.html:59
+#: www/views/tab-send.html:59
msgid "Show more"
msgstr "더 보기"
-#: src/js/services/bwcError.js:104
+#: src/js/services/bwcError.js:104
msgid "Signatures rejected by server"
msgstr "서버에서 거절당한 사인"
-#: src/js/services/onGoingProcess.js:32
+#: src/js/services/onGoingProcess.js:32
msgid "Signing transaction"
msgstr "거래 사인 중"
-#: www/views/onboarding/backupRequest.html:6
+#: 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:122
-#: www/views/tab-create-shared.html:151
+#: www/views/tab-create-personal.html:122
+#: www/views/tab-create-shared.html:151
msgid "Single Address Wallet"
msgstr "단일 주소 지갑"
-#: www/views/onboarding/collectEmail.html:40
-#: www/views/onboarding/tour.html:11
+#: www/views/onboarding/collectEmail.html:40
+#: www/views/onboarding/tour.html:11
msgid "Skip"
msgstr "스킵하기"
-#: src/js/controllers/confirm.js:371
-#: src/js/controllers/modals/txpDetails.js:47
+#: src/js/controllers/confirm.js:371
+#: src/js/controllers/modals/txpDetails.js:47
msgid "Slide to accept"
msgstr "밀어서 수락하기"
-#: www/views/buyAmazon.html:96
+#: www/views/buyAmazon.html:96
msgid "Slide to buy"
msgstr "밀어서 구매하기"
-#: src/js/controllers/confirm.js:365
+#: src/js/controllers/confirm.js:365
msgid "Slide to pay"
msgstr "밀어서 결제하기"
-#: src/js/controllers/confirm.js:377
-#: src/js/controllers/modals/txpDetails.js:40
+#: src/js/controllers/confirm.js:377
+#: src/js/controllers/modals/txpDetails.js:40
msgid "Slide to send"
msgstr "밀어서 송금하기"
-#: www/views/cashScan.html:56
+#: www/views/cashScan.html:56
msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
msgstr "특정 지갑은 비트코인 캐시를 지원하지 않습니다. 이 지갑들 속의 비트코인 캐시를 사용하기 위해선 다음 기능을 사용하세요"
-#: src/js/controllers/create.js:88
-#: src/js/controllers/join.js:71
+#: src/js/controllers/create.js:88
+#: src/js/controllers/join.js:71
msgid "Specify Recovery Phrase..."
msgstr "복구 문구를 자세히 적어주세요..."
-#: src/js/services/bwcError.js:92
+#: src/js/services/bwcError.js:92
msgid "Spend proposal is not accepted"
msgstr "결제 제안서 사용 불가"
-#: src/js/services/bwcError.js:95
+#: src/js/services/bwcError.js:95
msgid "Spend proposal not found"
msgstr "결제 제안서를 찾을 수 없습니다"
-#: src/js/services/bwcError.js:137
+#: src/js/services/bwcError.js:137
msgid "Spending Password needed"
msgstr "결제 비밀번호가 필요합니다"
-#: www/views/walletDetails.html:173
+#: www/views/walletDetails.html:173
msgid "Spending this balance will need significant Bitcoin network fees"
msgstr "이만큼의 금액을 사용하기 위해선 상당한 규모의 비트코인 네트워크 수수료가 필요합니다"
-#: www/views/tab-send.html:28
+#: www/views/tab-send.html:28
msgid "Start sending bitcoin"
msgstr "비트코인 송금 시작하기"
-#: www/views/lockSetup.html:3
+#: www/views/lockSetup.html:3
msgid "Startup Lock"
msgstr "시작화면 잠금"
-#: www/views/mercadoLibreCards.html:21
-#: www/views/modals/mercadolibre-card-details.html:42
+#: www/views/mercadoLibreCards.html:21
+#: www/views/modals/mercadolibre-card-details.html:42
msgid "Still pending"
msgstr "아직 대기 중"
-#: www/views/topup.html:101
+#: www/views/topup.html:101
msgid "Success"
msgstr "성공"
-#: src/js/services/feeService.js:14
+#: src/js/services/feeService.js:14
msgid "Super Economy"
msgstr "슈퍼 이코노미"
-#: www/views/preferencesCash.html:11
+#: www/views/preferencesCash.html:11
msgid "Support Bitcoin Cash"
msgstr "비트코인 캐시 지원하기"
-#: www/views/paperWallet.html:7
+#: www/views/paperWallet.html:7
msgid "Sweep"
msgstr "스윕하기"
-#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
+#: www/views/includes/incomingDataMenu.html:89
+#: www/views/paperWallet.html:3
msgid "Sweep paper wallet"
msgstr "종이 지갑 스윕하기"
-#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
-msgstr "종이 지갑 스윕하기"
-
-#: src/js/services/onGoingProcess.js:33
+#: src/js/services/onGoingProcess.js:33
msgid "Sweeping Wallet..."
msgstr "지갑 스윕 중..."
-#: www/views/preferencesDeleteWallet.html:16
+#: www/views/preferencesDeleteWallet.html:16
msgid "THIS ACTION CANNOT BE REVERSED"
msgstr "돌이킬 수 없는 행동입니다"
-#: www/views/onboarding/welcome.html:5
+#: www/views/onboarding/welcome.html:5
msgid "Take control of your money, get started with bitcoin."
msgstr "돈을 지배하세요, 비트코인과 함께 시작하세요."
-#: www/views/walletDetails.html:132
-#: www/views/walletDetails.html:52
+#: www/views/walletDetails.html:132
+#: www/views/walletDetails.html:52
msgid "Tap and hold to show"
msgstr "누르고 계시면 보입니다"
-#: www/views/includes/walletInfo.html:3
+#: www/views/includes/walletInfo.html:3
msgid "Tap to recreate"
msgstr "눌러서 다시 만들기"
-#: www/views/includes/walletInfo.html:4
+#: www/views/includes/walletInfo.html:4
msgid "Tap to retry"
msgstr "눌러서 다시 시도하기"
-#: www/views/termsOfUse.html:3
+#: 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
+#: 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:118
-#: www/views/tab-import-phrase.html:68
+#: www/views/tab-create-personal.html:118
+#: www/views/tab-import-phrase.html:68
msgid "Testnet"
msgstr "Testnet"
-#: www/views/includes/incomingDataMenu.html:61
+#: 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
+#: 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
+#: src/js/controllers/feedback/send.js:72
msgid "Thanks!"
msgstr "감사합니다!"
-#: src/js/controllers/feedback/send.js:73
+#: 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
+#: src/js/services/ledger.js:152
msgid "The Ledger Chrome application is not installed"
msgstr "Ledger Chrome 앱이 설치되지 않았습니다"
-#: www/views/modals/wallet-balance.html:55
+#: 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
+#: 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
+#: 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
+#: www/views/tab-import-phrase.html:5
msgid "The derivation path"
msgstr "유도 경로"
-#: www/views/onboarding/tour.html:37
+#: www/views/onboarding/tour.html:37
msgid "The exchange rate changes with the market."
msgstr "수수료는 시장의 상황에 따라 변화합니다."
-#: www/views/preferencesFee.html:12
+#: 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
+#: 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
+#: 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
+#: www/views/tab-import-phrase.html:4
msgid "The password of the recovery phrase (if set)"
msgstr "백업 문구 비밀번호 (설정했을 시)"
-#: src/js/services/walletService.js:1139
+#: src/js/services/walletService.js:1139
msgid "The payment was created but could not be completed. Please try again from home screen"
msgstr "거래가 생성되었으나 완료되지 않았습니다. 처음부터 다시 시도해주세요"
-#: www/views/modals/txp-details.html:26
+#: www/views/modals/txp-details.html:26
msgid "The payment was removed by creator"
msgstr "결제 내역이 사용자에 의해 삭제되었습니다"
-#: www/views/join.html:91
-#: www/views/tab-create-personal.html:63
-#: www/views/tab-create-shared.html:92
-#: www/views/tab-import-phrase.html:43
+#: www/views/join.html:91
+#: www/views/tab-create-personal.html:63
+#: www/views/tab-create-shared.html:92
+#: www/views/tab-import-phrase.html:43
msgid "The recovery phrase could require a password to be imported"
msgstr "백업 문구를 사용하기 위해선 비밀번호가 필요할 수도 있습니다"
-#: src/js/services/bwcError.js:56
+#: src/js/services/bwcError.js:56
msgid "The request could not be understood by the server"
msgstr "서버가 특정 요구를 이해할 수 없습니다"
-#: www/views/addresses.html:52
+#: 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
+#: src/js/services/bwcError.js:98
msgid "The spend proposal is not pending"
msgstr "결제 제안서 오류"
-#: www/views/modals/wallet-balance.html:36
+#: www/views/modals/wallet-balance.html:36
msgid "The total amount of bitcoin stored in this wallet."
msgstr "이 지갑에 보관 중인 비트코인 총액수."
-#: www/views/preferencesHistory.html:27
+#: 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
+#: www/views/tab-import-phrase.html:6
msgid "The wallet service URL"
msgstr "지갑 서비스 URL"
-#: src/js/controllers/tab-home.js:38
+#: src/js/controllers/tab-home.js:38
msgid "There is a new version of {{appName}} available"
msgstr "{{appName}}을 최신 버전으로 업데이트하세요"
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:335
+#: src/js/controllers/import.js:229
+#: src/js/controllers/import.js:254
+#: src/js/controllers/import.js:335
msgid "There is an error in the form"
msgstr "오류가 있습니다"
-#: src/js/controllers/feedback/send.js:61
-#: src/js/controllers/feedback/send.js:65
+#: 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
+#: src/js/controllers/feedback/rateCard.js:38
msgid "This app is fantastic!"
msgstr "이 앱은 최고에요!"
-#: www/views/onboarding/tour.html:47
+#: www/views/onboarding/tour.html:47
msgid "This app stores your bitcoin with cutting-edge security."
msgstr "이 앱은 귀하의 비트코인을 최첨단 보안 서비스로 보호합니다."
-#: src/js/controllers/confirm.js:523
+#: src/js/controllers/confirm.js:523
msgid "This bitcoin payment request has expired."
msgstr "비트코인 결제 요구가 만료되었습니다."
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "송금 만료:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "결제 요청 만료"
-
-#: www/views/join.html:133
-#: www/views/tab-create-personal.html:103
-#: www/views/tab-create-shared.html:132
+#: www/views/join.html:133
+#: www/views/tab-create-personal.html:103
+#: www/views/tab-create-shared.html:132
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:31
+#: www/views/backup.html:31
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:91
+#: www/views/tx-details.html:91
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:87
+#: www/views/tx-details.html:87
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:109
-#: www/views/walletDetails.html:29
+#: www/views/walletDetails.html:109
+#: www/views/walletDetails.html:29
msgid "This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information."
msgstr "이 지갑은 비트코어 지갑 서비스(BWS)에 등록되어있지 않습니다. 로컬 정보로 복구할 수 있습니다."
-#: www/views/modals/txp-details.html:136
-#: www/views/tx-details.html:121
+#: www/views/modals/txp-details.html:136
+#: 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:109
-#: www/views/modals/txp-details.html:53
-#: www/views/tx-details.html:41
-#: www/views/tx-details.html:53
+#: www/views/confirm.html:31
+#: www/views/includes/output.html:2
+#: www/views/modals/txp-details.html:109
+#: 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
+#: 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 "시작하시려면 비트코인을 구매하시거나 주소를 등록해주세요. 어디에서든 비트코인을 받을 수 있습니다."
-#: src/js/services/bitpayAccountService.js:73
+#: 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
+#: src/js/services/onGoingProcess.js:48
msgid "Top up in progress..."
msgstr "추가 지불(Top up) 진행 중..."
-#: src/js/controllers/topup.js:206
+#: src/js/controllers/topup.js:206
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
msgstr "체크 카드 ({{cardLastNumber}})에 {{amountStr}} 추가 지불(Top up)하기"
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "ShapeShift 시작"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "BTC를 몇 분 내에 BCH로 교환"
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "과정을 시작하려면 월릿에 펀드를 적립해야 합니다."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "과정은 빠르며 월릿에 교환 금액이 전송됩니다."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "제3자 회사 Shapeshift는 소액의 수수료를 받고 서비스를 제공합니다. 수수료 금액은 거래 시작 전에 표시됩니다."
-
-#: www/views/buyAmazon.html:61
-#: www/views/buyMercadoLibre.html:60
-#: www/views/modals/wallet-balance.html:23
-#: www/views/topup.html:70
+#: www/views/buyAmazon.html:61
+#: www/views/buyMercadoLibre.html:60
+#: www/views/modals/wallet-balance.html:23
+#: www/views/topup.html:70
msgid "Total"
msgstr "총"
-#: www/views/walletDetails.html:196
+#: www/views/walletDetails.html:196
msgid "Total Locked Balance"
msgstr "총 묶여있는 자산"
-#: www/views/tab-create-shared.html:35
+#: www/views/tab-create-shared.html:35
msgid "Total number of copayers"
msgstr "총 공동지불인 수"
-#: www/views/addresses.html:81
+#: www/views/addresses.html:81
msgid "Total wallet inputs"
msgstr "총 지갑 입력량"
-#: src/js/services/fingerprintService.js:63
-#: src/js/services/fingerprintService.js:68
+#: src/js/services/fingerprintService.js:63
+#: src/js/services/fingerprintService.js:68
msgid "Touch ID Failed"
msgstr "터치 아이디 실패"
-#: src/js/controllers/tx-details.js:12
+#: src/js/controllers/tx-details.js:12
msgid "Transaction"
msgstr "거래"
-#: www/views/confirm.html:126
+#: www/views/confirm.html:126
msgid "Transaction Created"
msgstr "거래 완성"
-#: www/views/preferencesAdvanced.html:29
-#: www/views/preferencesHistory.html:3
+#: www/views/preferencesAdvanced.html:29
+#: www/views/preferencesHistory.html:3
msgid "Transaction History"
msgstr "거래 기록"
-#: src/js/services/bwcError.js:83
+#: src/js/services/bwcError.js:83
msgid "Transaction already broadcasted"
msgstr "거래가 이미 브로드캐스트되었습니다"
-#: src/js/controllers/buyAmazon.js:308
-#: src/js/controllers/buyMercadoLibre.js:301
-#: src/js/controllers/topup.js:281
+#: src/js/controllers/buyAmazon.js:308
+#: src/js/controllers/buyMercadoLibre.js:301
+#: src/js/controllers/topup.js:281
msgid "Transaction has not been created"
msgstr "거래가 만들어지지 않았습니다"
-#: www/views/topup.html:104
+#: www/views/topup.html:104
msgid "Transaction initiated"
msgstr "거래 시작"
-#: src/js/controllers/tx-details.js:119
+#: src/js/controllers/tx-details.js:119
msgid "Transaction not available at this time"
msgstr "지금은 거래가 불가능합니다"
-#: src/js/controllers/activity.js:45
-#: src/js/controllers/tab-home.js:174
+#: src/js/controllers/activity.js:45
+#: src/js/controllers/tab-home.js:174
msgid "Transaction not found"
msgstr "거래를 찾을 수 없습니다"
-#: www/views/modals/chooseFeeLevel.html:55
+#: www/views/modals/chooseFeeLevel.html:55
msgid "Transactions without fee are not supported."
msgstr "수수료가 없는 거래는 지원되지 않습니다."
-#: src/js/controllers/paperWallet.js:109
+#: src/js/controllers/paperWallet.js:109
msgid "Transfer to"
msgstr "송금 대상"
-#: www/views/tab-send.html:67
+#: www/views/tab-send.html:67
msgid "Transfer to Wallet"
msgstr "지갑으로 송금하기"
-#: www/views/modals/pin.html:13
+#: www/views/modals/pin.html:13
msgid "Try again in {{expires}}"
msgstr "다시 시도가 만료됩니다: {{expires}}"
-#: www/views/bitpayCardIntro.html:18
+#: www/views/bitpayCardIntro.html:18
msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted."
msgstr "비트코인을 달러로 환전하세요. 비자® 는 어디에서든 사용하실 수 있습니다."
-#: www/views/tab-import-phrase.html:17
+#: www/views/tab-import-phrase.html:17
msgid "Type the Recovery Phrase (usually 12 words)"
msgstr "백업 문구 작성하기(보통 12개의 단어)"
-#: src/js/controllers/backup.js:75
+#: src/js/controllers/backup.js:75
msgid "Uh oh..."
msgstr "이런..."
-#: www/views/tx-details.html:100
+#: www/views/tx-details.html:100
msgid "Unconfirmed"
msgstr "미확인"
-#: www/views/walletDetails.html:190
+#: www/views/walletDetails.html:190
msgid "Unsent transactions"
msgstr "미완료 거래"
-#: www/views/addresses.html:39
+#: www/views/addresses.html:39
msgid "Unused Addresses"
msgstr "미사용 주소"
-#: www/views/addresses.html:50
+#: www/views/addresses.html:50
msgid "Unused Addresses Limit"
msgstr "미사용 주소 한계"
-#: src/js/controllers/tab-home.js:146
+#: src/js/controllers/tab-home.js:146
msgid "Update Available"
msgstr "업데이트 가능"
-#: www/views/proposals.html:14
+#: www/views/proposals.html:14
msgid "Updating pending proposals. Please stand by"
msgstr "진행 중인 제안서 업데이트 중. 기다려주세요"
-#: www/views/walletDetails.html:217
+#: www/views/walletDetails.html:217
msgid "Updating transaction history. Please stand by."
msgstr "거래 내역 업데이트 중. 기다려주세요."
-#: www/views/activity.html:14
+#: www/views/activity.html:14
msgid "Updating... Please stand by"
msgstr "업데이트 중... 기다려주세요"
-#: src/js/services/feeService.js:10
+#: src/js/services/feeService.js:10
msgid "Urgent"
msgstr "긴급"
-#: www/views/advancedSettings.html:12
+#: www/views/advancedSettings.html:12
msgid "Use Unconfirmed Funds"
msgstr "미확인 자산 사용하기"
-#: src/js/services/onGoingProcess.js:34
+#: src/js/services/onGoingProcess.js:34
msgid "Validating recovery phrase..."
msgstr "백업 문구 확인 중..."
-#: www/views/modals/fingerprintCheck.html:4
+#: www/views/modals/fingerprintCheck.html:4
msgid "Verify your identity"
msgstr "사용자 확인하기"
-#: www/views/preferencesAbout.html:14
-#: www/views/preferencesExternal.html:25
+#: www/views/preferencesAbout.html:14
+#: www/views/preferencesExternal.html:25
msgid "Version"
msgstr "버전"
-#: www/views/tab-export-file.html:69
+#: www/views/tab-export-file.html:69
msgid "View"
msgstr "보기"
-#: www/views/addresses.html:34
+#: www/views/addresses.html:34
msgid "View All Addresses"
msgstr "모든 주소 보기"
-#: src/js/controllers/onboarding/terms.js:20
+#: 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:191
+#: src/js/controllers/bitpayCard.js:122
+#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Explorer.Bitcoin.com에서 트랜잭션 확인하기"
+msgstr "거래 Insight 보기"
-#: src/js/controllers/tab-home.js:148
+#: src/js/controllers/tab-home.js:148
msgid "View Update"
msgstr "업데이트 보기"
-#: www/views/tx-details.html:147
+#: www/views/tx-details.html:147
msgid "View on blockchain"
msgstr "블록체인에 대한 시선"
-#: www/views/mercadoLibre.html:26
+#: www/views/mercadoLibre.html:26
msgid "Visit mercadolivre.com.br →"
msgstr "mercadolivre.com.br → 방문하기"
-#: www/views/walletDetails.html:182
+#: www/views/walletDetails.html:182
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
+#: 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
+#: 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
+#: www/views/modals/paypro.html:42
msgid "WARNING: UNTRUSTED CERTIFICATE"
msgstr "경고: 신용할 수 없는 증명서"
-#: src/js/services/onGoingProcess.js:15
+#: src/js/services/onGoingProcess.js:15
msgid "Waiting for Ledger..."
msgstr "Ledger를 기다리는 중..."
-#: src/js/services/onGoingProcess.js:16
+#: src/js/services/onGoingProcess.js:16
msgid "Waiting for Trezor..."
msgstr "Trezor을 기다리는 중..."
-#: www/views/copayers.html:48
+#: www/views/copayers.html:48
msgid "Waiting for copayers"
msgstr "공동지불인들을 기다리는 중"
-#: www/views/copayers.html:53
+#: www/views/copayers.html:53
msgid "Waiting..."
msgstr "기다리는 중..."
-#: www/views/addresses.html:3
-#: www/views/preferencesAdvanced.html:17
+#: www/views/addresses.html:3
+#: www/views/preferencesAdvanced.html:17
msgid "Wallet Addresses"
msgstr "지갑 주소"
-#: www/views/preferencesColor.html:4
+#: www/views/preferencesColor.html:4
msgid "Wallet Color"
msgstr "지갑 색"
-#: www/views/preferencesInformation.html:29
+#: www/views/preferencesInformation.html:29
msgid "Wallet Configuration (m-n)"
msgstr "지갑 설정 (m-n)"
-#: www/views/onboarding/collectEmail.html:5
+#: www/views/onboarding/collectEmail.html:5
msgid "Wallet Created"
msgstr "만든 지갑"
-#: www/views/preferencesInformation.html:23
+#: www/views/preferencesInformation.html:23
msgid "Wallet Id"
msgstr "지갑 아이디"
-#: www/views/preferencesAdvanced.html:13
-#: www/views/preferencesInformation.html:3
+#: www/views/preferencesAdvanced.html:13
+#: www/views/preferencesInformation.html:3
msgid "Wallet Information"
msgstr "지갑 정보"
-#: www/views/addresses.html:76
+#: www/views/addresses.html:76
msgid "Wallet Inputs"
msgstr "지갑 입력 내역"
-#: www/views/join.html:26
+#: www/views/join.html:26
msgid "Wallet Invitation"
msgstr "지갑 초대"
-#: www/views/join.html:60
-#: www/views/tab-create-personal.html:38
-#: www/views/tab-create-shared.html:67
+#: www/views/join.html:60
+#: www/views/tab-create-personal.html:38
+#: www/views/tab-create-shared.html:67
msgid "Wallet Key"
msgstr "지갑 키"
-#: www/views/preferencesAlias.html:4
+#: www/views/preferencesAlias.html:4
msgid "Wallet Name"
msgstr "지갑 이름"
-#: www/views/preferencesInformation.html:11
+#: www/views/preferencesInformation.html:11
msgid "Wallet Name (at creation)"
msgstr "지갑 이름 (만들었을 당시)"
-#: www/views/preferencesInformation.html:35
+#: www/views/preferencesInformation.html:35
msgid "Wallet Network"
msgstr "지갑 네트워크"
-#: www/views/join.html:77
-#: www/views/tab-create-personal.html:50
-#: www/views/tab-create-shared.html:79
+#: www/views/join.html:77
+#: www/views/tab-create-personal.html:50
+#: www/views/tab-create-shared.html:79
msgid "Wallet Recovery Phrase"
msgstr "지갑 백업 문구"
-#: src/js/services/bwcError.js:26
+#: src/js/services/bwcError.js:26
msgid "Wallet Recovery Phrase is invalid"
msgstr "지갑 백업 문구 오류"
-#: www/views/preferencesAdvanced.html:25
-#: www/views/tab-import-phrase.html:73
+#: www/views/preferencesAdvanced.html:25
+#: www/views/tab-import-phrase.html:73
msgid "Wallet Service URL"
msgstr "지갑 서비스 URL"
-#: www/views/preferences.html:4
+#: www/views/preferences.html:4
msgid "Wallet Settings"
msgstr "지갑 설정"
-#: www/views/tab-import-hardware.html:11
-#: www/views/tab-import-phrase.html:61
+#: www/views/tab-import-hardware.html:11
+#: www/views/tab-import-phrase.html:61
msgid "Wallet Type"
msgstr "지갑 종류"
-#: src/js/services/bwcError.js:59
+#: src/js/services/bwcError.js:59
msgid "Wallet already exists"
msgstr "지갑이 이미 존재합니다"
-#: src/js/services/profileService.js:516
+#: src/js/services/profileService.js:516
msgid "Wallet already in {{appName}}"
msgstr "이미 {{appName}}에 지갑이 있습니다"
-#: www/views/includes/walletActivity.html:6
+#: www/views/includes/walletActivity.html:6
msgid "Wallet created"
msgstr "지갑 완성"
-#: www/views/copayers.html:58
+#: www/views/copayers.html:58
msgid "Wallet incomplete and broken"
msgstr "지갑 미완성/불구"
-#: src/js/services/bwcError.js:65
+#: src/js/services/bwcError.js:65
msgid "Wallet is full"
msgstr "지갑이 가득 찼습니다"
-#: src/js/services/bwcError.js:125
+#: src/js/services/bwcError.js:125
msgid "Wallet is locked"
msgstr "지갑이 잠겨있습니다"
-#: src/js/services/bwcError.js:128
+#: 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
+#: www/views/tab-create-personal.html:12
+#: www/views/tab-create-shared.html:12
msgid "Wallet name"
msgstr "지갑 이름"
-#: src/js/services/bwcError.js:131
+#: src/js/services/bwcError.js:131
msgid "Wallet needs backup"
msgstr "지갑의 백업이 필요합니다"
-#: www/views/tab-receive.html:59
-#: www/views/walletDetails.html:169
+#: www/views/tab-receive.html:59
+#: www/views/walletDetails.html:169
msgid "Wallet not backed up"
msgstr "지갑 백업 필요"
-#: src/js/services/bwcError.js:68
+#: src/js/services/bwcError.js:68
msgid "Wallet not found"
msgstr "지갑을 찾을 수 없습니다"
-#: src/js/controllers/cashScan.js:81
-#: src/js/controllers/tab-home.js:230
+#: src/js/controllers/cashScan.js:81
+#: src/js/controllers/tab-home.js:230
msgid "Wallet not registered"
msgstr "미등록 지갑"
-#: src/js/services/bwcError.js:29
+#: 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:12
+#: www/views/backup.html:12
msgid "Wallet recovery phrase not available"
msgstr "지갑 백업 문구를 확인할 수 없습니다"
-#: src/js/services/bwcError.js:50
+#: src/js/services/bwcError.js:50
msgid "Wallet service not found"
msgstr "지갑 서비스를 찾을 수 없습니다"
-#: www/views/tab-home.html:69
+#: www/views/tab-home.html:69
msgid "Wallets"
msgstr "지갑"
-#: src/js/controllers/addressbookView.js:36
-#: src/js/controllers/modals/txpDetails.js:153
-#: src/js/controllers/modals/txpDetails.js:170
-#: src/js/controllers/preferencesDelete.js:24
-#: src/js/controllers/preferencesExternal.js:14
-#: www/views/preferencesDeleteWallet.html:11
+#: src/js/controllers/addressbookView.js:36
+#: src/js/controllers/modals/txpDetails.js:153
+#: src/js/controllers/modals/txpDetails.js:170
+#: src/js/controllers/preferencesDelete.js:24
+#: src/js/controllers/preferencesExternal.js:14
+#: www/views/preferencesDeleteWallet.html:11
msgid "Warning!"
msgstr "경고!"
-#: www/views/modals/txp-details.html:47
+#: www/views/modals/txp-details.html:47
msgid "Warning: this transaction has unconfirmed inputs"
msgstr "경고: 이 거래에는 확인되지 않은 사항이 있습니다"
-#: src/js/controllers/onboarding/backupRequest.js:17
+#: src/js/controllers/onboarding/backupRequest.js:17
msgid "Watch out!"
msgstr "조심하세요!"
-#: src/js/controllers/feedback/send.js:69
+#: src/js/controllers/feedback/send.js:69
msgid "We'd love to do better."
msgstr "저희는 끝없이 발전하려 합니다."
-#: www/views/backup.html:35
+#: www/views/backup.html:35
msgid "We'll confirm on the next screen."
msgstr "다음 화면에서 확인하겠습니다."
-#: src/js/controllers/feedback/send.js:77
+#: 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
+#: 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
+#: www/views/includes/incomingDataMenu.html:6
msgid "Website"
msgstr "웹사이트"
-#: www/views/preferencesLanguage.html:16
+#: 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
+#: www/views/preferencesAlias.html:11
msgid "What do you call this wallet?"
msgstr "이 지갑을 무엇으로 부르시겠습니까?"
-#: www/views/preferencesAlias.html:12
+#: 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
+#: www/views/onboarding/collectEmail.html:10
msgid "Where would you like to receive email notifications about payments?"
msgstr "결제 내역 이메일 알림을 어디로 받으시겠습니까?"
-#: www/views/addresses.html:19
+#: www/views/addresses.html:19
msgid "Why?"
msgstr "왜죠?"
-#: www/views/feedback/rateApp.html:10
+#: www/views/feedback/rateApp.html:10
msgid "Would you be willing to rate {{appName}} in the app store?"
msgstr "앱스토에서 {{appName}}를 평가해주시겠습니까?"
-#: www/views/onboarding/notifications.html:4
+#: www/views/onboarding/notifications.html:4
msgid "Would you like to receive push notifications about payments?"
msgstr "결제 내역 푸시 알림을 받으시겠습니까?"
-#: src/js/controllers/import.js:288
+#: src/js/controllers/import.js:288
msgid "Wrong number of recovery words:"
msgstr "백업 문구는 12개가 필요합니다:"
-#: src/js/services/bwcError.js:140
+#: src/js/services/bwcError.js:140
msgid "Wrong spending password"
msgstr "결제 비밀번호 오류"
-#: www/views/modals/confirmation.html:7
+#: www/views/modals/confirmation.html:7
msgid "Yes"
msgstr "네"
-#: src/js/controllers/onboarding/backupRequest.js:25
+#: src/js/controllers/onboarding/backupRequest.js:25
msgid "Yes, skip"
msgstr "네, 스킵"
-#: src/js/controllers/onboarding/backupRequest.js:24
+#: 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
+#: 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
+#: 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
+#: 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
+#: www/views/onboarding/tour.html:19
msgid "You can spend bitcoin at millions of websites and stores worldwide."
msgstr "비트코인을 전 세계의 수많은 매장과 온라인 스토어에서 사용하실 수 있습니다."
-#: www/views/backup.html:15
+#: www/views/backup.html:15
msgid "You can still export it from Advanced > Export."
msgstr "지금도 고급 > 내보내기에서 내보내실 수 있습니다."
-#: www/views/onboarding/tour.html:32
+#: 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
+#: www/views/onboarding/tour.html:46
msgid "You control your bitcoin."
msgstr "당신의 비트코인은 당신이 컨트롤합니다."
-#: www/views/modals/chooseFeeLevel.html:64
+#: www/views/modals/chooseFeeLevel.html:64
msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte."
msgstr "수수료를 {{maxFeeRecommended}} 이상의 사토시/바이트로 설정하지 마세요."
-#: www/views/modals/bitpay-card-confirmation.html:5
+#: 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
+#: 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
+#: 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/mercadoLibre.html:57
-#: www/views/mercadoLibreCards.html:6
+#: www/views/mercadoLibre.html:57
+#: www/views/mercadoLibreCards.html:6
msgid "Your Gift Cards"
msgstr "기프트 카드"
-#: www/views/includes/confirmBackupPopup.html:6
+#: www/views/includes/confirmBackupPopup.html:6
msgid "Your bitcoin wallet is backed up!"
msgstr "비트코인 지갑 백업 완료!"
-#: www/views/tab-home.html:36
+#: www/views/tab-home.html:36
msgid "Your bitcoin wallet is ready!"
msgstr "비트코인 지갑 준비 완료!"
-#: www/views/modals/chooseFeeLevel.html:61
+#: www/views/modals/chooseFeeLevel.html:61
msgid "Your fee is lower than recommended."
msgstr "추천 수수료보다 낮은 금액입니다."
-#: www/views/feedback/send.html:42
+#: www/views/feedback/send.html:42
msgid "Your ideas, feedback, or comments"
msgstr "귀하의 피드백, 아이디어 등"
-#: www/views/tab-create-shared.html:22
+#: www/views/tab-create-shared.html:22
msgid "Your name"
msgstr "이름"
-#: www/views/join.html:16
+#: www/views/join.html:16
msgid "Your nickname"
msgstr "닉네임"
-#: www/views/tab-export-file.html:11
-#: www/views/tab-import-file.html:20
+#: www/views/tab-export-file.html:11
+#: www/views/tab-import-file.html:20
msgid "Your password"
msgstr "비밀번호"
-#: www/views/buyAmazon.html:102
+#: www/views/buyAmazon.html:102
msgid "Your purchase could not be completed"
msgstr "거래 완료 불가"
-#: www/views/buyAmazon.html:105
+#: www/views/buyAmazon.html:105
msgid "Your purchase was added to the list of pending"
msgstr "대기 중인 거래로 추가되었습니다"
-#: www/views/onboarding/backupRequest.html:10
+#: 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:1030
+#: src/js/services/walletService.js:1030
msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
msgstr "지갑키가 암호화됩니다. 결제 비밀번호는 복구할 수 없습니다. 꼭 적어두세요."
-#: www/views/includes/walletList.html:13
-#: www/views/includes/walletSelector.html:21
-#: www/views/paperWallet.html:33
-#: www/views/tab-receive.html:72
-#: www/views/walletDetails.html:131
-#: www/views/walletDetails.html:51
+#: www/views/includes/walletList.html:13
+#: www/views/includes/walletSelector.html:21
+#: www/views/paperWallet.html:33
+#: www/views/tab-receive.html:72
+#: www/views/walletDetails.html:131
+#: www/views/walletDetails.html:51
msgid "[Balance Hidden]"
msgstr "[잔액 숨겨짐]"
-#: www/views/walletDetails.html:141
-#: www/views/walletDetails.html:61
+#: www/views/walletDetails.html:141
+#: www/views/walletDetails.html:61
msgid "[Scanning Funds]"
msgstr "[보유자산 스캔 중]"
-#: src/js/controllers/bitpayCardIntro.js:11
+#: src/js/controllers/bitpayCardIntro.js:11
msgid "add your BitPay Visa card(s)"
msgstr "BitPay 비자 카드 추가하기"
-#: www/views/includes/available-balance.html:8
+#: www/views/includes/available-balance.html:8
msgid "locked by pending payments"
msgstr "대기 중인 거래로 잠겨있습니다"
-#: src/js/services/profileService.js:404
+#: src/js/services/profileService.js:404
msgid "me"
msgstr "나"
-#: www/views/addressbook.add.html:32
+#: www/views/addressbook.add.html:32
msgid "name@example.com"
msgstr "name@example.com"
-#: www/views/preferencesHistory.html:15
+#: www/views/preferencesHistory.html:15
msgid "preparing..."
msgstr "준비 중..."
-#: www/views/cashScan.html:57
+#: www/views/cashScan.html:57
msgid "recovery tool."
msgstr "복구 기능."
-#: src/js/controllers/buyAmazon.js:239
+#: src/js/controllers/buyAmazon.js:239
msgid "{{amountStr}} for Amazon.com Gift Card"
msgstr "Amazon.com 기프트 카드에 {{amountStr}}"
-#: src/js/controllers/buyMercadoLibre.js:237
+#: src/js/controllers/buyMercadoLibre.js:237
msgid "{{amountStr}} for Mercado Livre Brazil Gift Card"
msgstr "메르카도 리브르 브라질 기프트 카드에 {{amountStr}}"
-#: www/views/preferencesBwsUrl.html:21
+#: 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}}은 비트코어 월렛 서비스(BWS)의 블록체인 정보와 네트워크, 공동 지불인 정보에 의존합니다. 기본 설정 확인은 https://bws.bitpay.com 으로."
-#: src/js/controllers/confirm.js:408
+#: src/js/controllers/confirm.js:408
msgid "{{fee}} will be deducted for bitcoin networking fees."
msgstr "비트코인 네트워크 수수료로 {{fee}}가 지불됩니다."
-#: www/views/confirm.html:85
+#: www/views/confirm.html:85
msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
msgstr "사용 금액의 {{tx.txp[wallet.id].feeRatePerStr}}"
-#: www/views/walletDetails.html:218
+#: www/views/walletDetails.html:218
msgid "{{updatingTxHistoryProgress}} transactions downloaded"
msgstr "{{updatingTxHistoryProgress}} 거래 내역 다운로드 완료"
-#: www/views/cashScan.html:33
-#: www/views/copayers.html:46
-#: www/views/includes/walletInfo.html:18
+#: www/views/cashScan.html:33
+#: www/views/copayers.html:46
+#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.n}}의 {{wallet.m}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "커뮤니티"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "BCH Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Bitcoin.com 트위터"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Bitcoin.com 탐색"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "BCH 게임"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "지갑 응용 프로그램 공유"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "소식"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "채굴 풀"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "도구"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "비트코인 가격 차트"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "무료 BCH"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "비트코인 지갑이 완료되었습니다!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "주소는 통화 정보를 포함하지 않으므로, 전송 금액을 확인해야 합니다."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "거래 확인"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "전송"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "전환"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "대상:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "개인 메모 작성"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "회사/업소 제안:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "텍스트 입력"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "개인 메모:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "1센트 미만"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "이 청구서는 더 이상 결제를 수락하지 않습니다"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "최대 수량 보내는 중"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "알 수 없는 오류가 발생 했습니다."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "자금 찾을 없습니다 Bitcoin Cash 현금 지갑."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "찾을 수 없습니다 Bitcoin Cash 현금."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Bitcoin Core 코어 발견:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "자금 찾을 없습니다 Bitcoin Core 현금 지갑."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "찾을 수 없습니다 Bitcoin Core 현금."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "검색 실패"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "데이터 인식 되지입니다."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "지원 되지 않는"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet는 지원 되지 않습니다."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "웹 브라우저에서 열기"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "주소 오류"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "금액은 정의 되지 않은"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Minimun 아래 금액은"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "제한 위에 금액은"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "변신에서 잘못 된 응답"
-
diff --git a/i18n/po/nl/template-nl.po b/i18n/po/nl.po
similarity index 86%
rename from i18n/po/nl/template-nl.po
rename to i18n/po/nl.po
index a42a1b370..6a04968a4 100644
--- a/i18n/po/nl/template-nl.po
+++ b/i18n/po/nl.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
+"Project-Id-Version: copay\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: nl\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: Dutch\n"
"Language: nl\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-10 08:58-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -77,30 +77,6 @@ msgstr "Account"
msgid "Account Number"
msgstr "Account Nummer"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Onmiddellijke transacties met lage kosten"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Onvoldoende saldo"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Verander valuta"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Beschikbaar saldo"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Alle beschikbare saldo gebruiken"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Volgende"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "Accounts"
@@ -179,7 +155,7 @@ msgstr "Adresboek"
#: www/views/preferencesInformation.html:41
msgid "Address Type"
-msgstr "Adrestype"
+msgstr "Adres Type"
#: www/views/addresses.html:64
msgid "Addresses With Balance"
@@ -203,11 +179,11 @@ 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 "Mogelijk is niet het volledige saldo van je Bitcoin portemonnee direct beschikbaar voor uitgaven."
+msgstr "Mogelijk is niet het volledige saldo van uw bitcoin portemonnee direct beschikbaar voor uitgaven."
#: 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 ondertekenende apparaten moeten worden toegevoegd aan deze portemonnee met meervoudige ondertekening, alvorens Bitcoin adressen kunnen worden aangemaakt."
+msgstr "Alle ondertekenende apparaten moeten worden toegevoegd aan deze meervoudige-ondertekening portemonnee voordat bitcoin adressen kunnen worden aangemaakt."
#: www/views/tab-scan.html:21
msgid "Allow Camera Access"
@@ -219,30 +195,16 @@ msgstr "Meldingen toestaan"
#: www/views/onboarding/disclaimer.html:14
msgid "Almost done! Let's review."
-msgstr "Bijna klaar! Kijk alles nog eens na."
+msgstr "Bijna klaar! Nog eens nakijken."
#: www/views/preferencesAltCurrency.html:4
#: www/views/tab-settings.html:79
msgid "Alternative Currency"
msgstr "Alternatieve Valuta"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Prijsaanduiding"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Cryptovaluta"
-
#: src/js/controllers/buyAmazon.js:98
msgid "Amazon.com is not available at this moment. Please try back later."
-msgstr "Amazon.com is op dit moment niet beschikbaar. Probeer het later nog eens."
+msgstr "Amazon.com is niet beschikbaar op dit moment. Probeer het later nog eens."
#: www/views/amount.html:44
#: www/views/customAmount.html:34
@@ -264,15 +226,15 @@ msgstr "Bedrag te laag om te besteden"
#: 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 "Er is een update voor deze app beschikbaar. Update naar de nieuwste versie voor je eigen veiligheid."
+msgstr "Er is een update voor deze app beschikbaar. Update a.u.b. naar de nieuwste versie voor uw veiligheid."
#: www/views/backupWarning.html:14
msgid "Anyone with your backup phrase can access or spend your bitcoin."
-msgstr "Iedereen die je herstelzin weet, heeft toegang tot je Bitcoin en kan deze uitgeven."
+msgstr "Iemand die uw herstel zin weet heeft toegang tot uw bitcoin en kan deze uitgeven."
#: www/views/addresses.html:94
msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-msgstr "Geschatte transactiekosten van het Bitcoin netwerk, voor het overmaken van het saldo van je portemonnee. (met normale prioriteit)"
+msgstr "Geschatte Bitcoin netwerk transactiekosten voor overdracht van volledige saldo van portemonnee (met normale prioriteit)"
#: www/views/backupWarning.html:10
msgid "Are you being watched?"
@@ -280,40 +242,40 @@ msgstr "Kijkt er iemand mee?"
#: src/js/controllers/preferencesExternal.js:15
msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin."
-msgstr "Kijkt er iemand mee? Iedereen die je herstelzin weet, heeft toegang tot je Bitcoin en kan deze uitgeven."
+msgstr "Kijkt er iemand mee? Iedereen die uw herstel zin weet heeft toegang tot uw bitcoin en kan het uitgeven."
#: src/js/controllers/copayers.js:56
msgid "Are you sure you want to cancel and delete this wallet?"
-msgstr "Weet je zeker dat je wilt annuleren en deze portemonnee verwijderen?"
+msgstr "Weet u zeker dat u wilt annuleren en deze portemonnee verwijderen?"
#: src/js/controllers/addressbookView.js:37
msgid "Are you sure you want to delete this contact?"
-msgstr "Weet je zeker dat je deze contactpersoon wilt verwijderen?"
+msgstr "Weet u zeker dat u deze contactpersoon wilt verwijderen?"
#: src/js/controllers/preferencesDelete.js:25
msgid "Are you sure you want to delete this wallet?"
-msgstr "Weet je zeker dat je deze portemonnee wilt verwijderen?"
+msgstr "Weet u zeker dat u deze portemonnee wilt verwijderen?"
#: src/js/controllers/modals/txpDetails.js:154
msgid "Are you sure you want to reject this transaction?"
-msgstr "Weet je zeker dat je deze transactie wilt afwijzen?"
+msgstr "Weet u zeker dat u deze transactie wilt afwijzen?"
#: src/js/controllers/modals/txpDetails.js:171
msgid "Are you sure you want to remove this transaction?"
-msgstr "Weet je zeker dat je deze transactie wil verwijderen?"
+msgstr "Weet u zeker dat u deze transactie wilt verwijderen?"
#: src/js/controllers/onboarding/backupRequest.js:23
msgid "Are you sure you want to skip it?"
-msgstr "Weet je zeker dat je dit wil overslaan?"
+msgstr "Weet u zeker dat u dit wilt overslaan?"
#: www/views/modals/bitpay-card-confirmation.html:4
msgid "Are you sure you would like to log out of your BitPay Card account?"
-msgstr "Weet je zeker dat je wilt uitloggen uit je BitPay Kaart account?"
+msgstr "Weet u zeker dat u wilt uitloggen uit uw BitPay Kaart account?"
#: 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 "Weet je zeker dat je de BitPay Kaart ({{lastFourDigits}}) van dit apparaat wilt verwijderen?"
+msgstr "Weet u zeker dat u de BitPay Kaart ({{lastFourDigits}}) van dit apparaat wilt verwijderen?"
#: www/views/includes/walletInfo.html:10
msgid "Auditable"
@@ -345,15 +307,15 @@ msgstr "BTC portemonnees"
#: www/views/preferences.html:34
msgid "Backup"
-msgstr "Back-up"
+msgstr "Backup"
#: www/views/includes/backupNeededPopup.html:7
msgid "Backup Needed"
-msgstr "Back-up Nodig"
+msgstr "Backup Nodig"
#: src/js/controllers/lockSetup.js:87
msgid "Backup all livenet wallets before using this function"
-msgstr "Maak een back-up van alle livenet portemonnees voordat je deze functie gebruikt"
+msgstr "Maak een backup van alle livenet portemonnees voordat u deze functie gebruikt"
#: src/js/controllers/cashScan.js:64
#: www/views/includes/walletListSettings.html:12
@@ -363,16 +325,16 @@ msgstr "Backup nodig"
#: www/views/includes/backupNeededPopup.html:9
msgid "Backup now"
-msgstr "Back-up maken"
+msgstr "Backup maken"
#: www/views/onboarding/backupRequest.html:11
#: www/views/tab-export-file.html:89
msgid "Backup wallet"
-msgstr "Back-up van portemonnee maken"
+msgstr "Backup van portemonnee maken"
#: src/js/controllers/lockSetup.js:84
msgid "Backup your wallet before using this function"
-msgstr "Maak een back-up van je portemonnee alvorens je deze functie gebruikt"
+msgstr "Maak een backup van uw portemonnee voordat u deze functie gebruikt"
#: src/js/services/profileService.js:446
msgid "Bad wallet invitation"
@@ -384,7 +346,7 @@ msgstr "Saldo Per Adres"
#: 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 "Zorg dat je de herstelzin op een veilige plek bewaard. Als je deze app verwijderd, kan je saldo niet meer hersteld worden zonder deze herstelzin."
+msgstr "Zorg dat u de herstel zin op een veilige plek bewaard. Als deze app verwijderd is, kan uw saldo niet meer worden hersteld zonder de herstel zin."
#: www/views/preferencesBitpayServices.html:9
msgid "BitPay Visa® Cards"
@@ -418,7 +380,7 @@ msgstr "Transactiekostenbeleid Bitcoin-netwerk"
#: www/views/tab-home.html:83
#: www/views/tab-settings.html:107
msgid "Bitcoin Core Wallets"
-msgstr "Bitcoin Core Portemonnees"
+msgstr "Bitcoin Portemonnees"
#: src/js/services/incomingData.js:151
msgid "Bitcoin cash Payment"
@@ -471,7 +433,6 @@ msgid "Buy & Sell Bitcoin"
msgstr "Koop & Verkoop Bitcoin"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "Bitcoin kopen"
@@ -520,8 +481,8 @@ msgid "Cannot Create Wallet"
msgstr "Kan Portemonnee Niet Aanmaken"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
-msgstr "Je kan niet meerdere keren tegelijk aan een portemonnee deelnemen"
+msgid "Cannot join the same wallet more that once"
+msgstr "Kan niet meerdere keren tegelijk deelnemen aan een portemonnee"
#: www/views/includes/bitpayCardsCard.html:2
msgid "Cards"
@@ -537,11 +498,11 @@ msgstr "Controleer de installatie en probeer het opnieuw."
#: www/views/tab-import-file.html:4
msgid "Choose a backup file from your computer"
-msgstr "Kies een backup bestand op je computer"
+msgstr "Kies een backup bestand op uw computer"
#: www/views/modals/wallets.html:9
msgid "Choose your destination wallet"
-msgstr "Kies je bestemming portemonnee"
+msgstr "Kies uw doel portemonnee"
#: www/views/modals/wallets.html:10
msgid "Choose your source wallet"
@@ -623,11 +584,11 @@ msgstr "Bevestig aankoop"
#: www/views/modals/pin.html:10
msgid "Confirm your PIN"
-msgstr "Bevestig je PIN"
+msgstr "Bevestig uw PIN"
#: src/js/services/walletService.js:1033
msgid "Confirm your new spending password"
-msgstr "Bevestig je nieuwe wachtwoord om te spenderen"
+msgstr "Bevestig uw nieuwe bestedingswachtwoord"
#: www/views/tx-details.html:98
msgid "Confirmations"
@@ -654,14 +615,10 @@ msgstr "Verbinding maken met Glidera..."
msgid "Connection reset by peer"
msgstr "Verbinding is gereset door peer"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "Contactpersonen"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Veelgebruikte adressen"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "Ga verder"
@@ -696,7 +653,6 @@ msgstr "Copayer {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "Gekopieerd naar klembord"
@@ -769,7 +725,7 @@ msgstr "Kon niet worden gemaakt: Ongeldige portemonnee herstel zin"
#: src/js/controllers/import.js:114
msgid "Could not decrypt file, check your password"
-msgstr "Het bestand kon niet worden ontsleutelt, controleer je wachtwoord"
+msgstr "Kon bestand niet ontsleutelen, check uw wachtwoord"
#: src/js/controllers/modals/txpDetails.js:181
msgid "Could not delete payment proposal"
@@ -863,7 +819,7 @@ msgstr "Gedeelde Portemonnee Aanmaken"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "Bitcoin portemonnee aanmaken"
@@ -975,7 +931,7 @@ msgstr "Privé sleutel niet bijvoegen"
#: 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 "Zie je je eigen taal niet op Crowdin? Neem contact op met de Eigenaar op Crowdin! We willen graag jouw taal ondersteunen."
+msgstr "Ziet u uw taal niet op Crowdin? Neem contact op met de Eigenaar op Crowdin! We willen graag uw taal ondersteunen."
#: www/views/tab-export-file.html:59
#: www/views/tab-home.html:22
@@ -992,7 +948,7 @@ msgstr "Portemonnee dupliceren..."
#: 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 "Elke Bitcoin portemonnee kan miljarden adressen genereren vanuit je back-up bestaande uit 12 woorden. Elke keer dat je een betaling ontvangt wordt automatisch een nieuw adres gegenereerd en getoond."
+msgstr "Elke bitcoin portemonnee kan miljarden adressen genereren vanuit uw backup bestaand uit 12 woorden. Elke keer dat u een betaling ontvangt wordt automatisch een nieuw adres gegenereerd en getoond."
#: src/js/services/feeService.js:13
msgid "Economy"
@@ -1005,7 +961,7 @@ msgstr "Bewerken"
#: www/views/addressbook.add.html:29
#: www/views/addressbook.view.html:22
msgid "Email"
-msgstr "E-mail"
+msgstr "Email"
#: www/views/preferencesNotifications.html:42
msgid "Email Address"
@@ -1021,7 +977,7 @@ msgstr "Aanmaken en gebruiken van Bitcoin Cash portemonnees inschakelen binnen d
#: www/views/tab-scan.html:19
msgid "Enable camera access in your device settings to get started."
-msgstr "Schakel camera toegang in vanuit je apparaatinstellingen om aan de slag te gaan."
+msgstr "Schakel camera toegang in vanuit uw apparaat instellingen om aan de slag te gaan."
#: www/views/preferencesNotifications.html:29
msgid "Enable email notifications"
@@ -1031,10 +987,6 @@ msgstr "Email meldingen inschakelen"
msgid "Enable push notifications"
msgstr "Push meldingen inschakelen"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Geluid inschakelen"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "Schakel de camera in om aan de slag te gaan."
@@ -1072,11 +1024,11 @@ msgstr "Vul de herstel zin in (BIP39)"
#: www/views/onboarding/collectEmail.html:13
msgid "Enter your email"
-msgstr "Vul je e-mailadres in"
+msgstr "Vul uw email in"
#: www/views/backup.html:69
msgid "Enter your password"
-msgstr "Voer je wachtwoord in"
+msgstr "Voer uw wachtwoord in"
#. Trying to import a malformed wallet export QR code
#: src/js/controllers/activity.js:45
@@ -1316,7 +1268,6 @@ msgstr "Voor audit doeleinden"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "Van"
@@ -1377,13 +1328,17 @@ msgid "Get news and updates from BitPay"
msgstr "Ontvang nieuws en updates van BitPay"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr "Aan de slag"
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Aan de slag"
#: www/views/addressbook.html:20
msgid "Get started by adding your first one."
-msgstr "Ga aan de slag door je eerste contact toe te voegen."
+msgstr "Ga aan de slag door uw eerste toe te voegen."
#: src/js/services/onGoingProcess.js:23
msgid "Getting fee levels..."
@@ -1492,7 +1447,7 @@ msgstr "Start"
#: src/js/controllers/feedback/send.js:65
#: src/js/controllers/feedback/send.js:69
msgid "How could we improve your experience?"
-msgstr "Hoe zouden wij jouw ervaring kunnen verbeteren?"
+msgstr "Hoe zouden wij uw ervaring kunnen verbeteren?"
#: www/views/feedback/rateCard.html:3
msgid "How do you like {{appName}}?"
@@ -1555,7 +1510,7 @@ msgstr "Indien ingeschakeld, zullen portemonnees ook onbevestigd saldo proberen
#: 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 "Als dit apparaat wordt vervangen of deze app wordt verwijderd, kunnen jij of BitPay je saldo niet herstellen zonder back-up."
+msgstr "Als dit apparaat wordt vervangen of deze app wordt verwijderd, kunnen u noch BitPay uw saldo herstellen zonder 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."
@@ -1563,7 +1518,7 @@ msgstr "Als u meer feedback heeft, laat het ons dan weten via de \"Geef feedback
#: 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 "Als je een screenshot neemt kunnen andere apps jouw back-up zien. Je kunt het beste een veilige back-up maken op pen en papier."
+msgstr "Als u een screenshot neemt kunnen andere apps uw backup zien. U kunt een veilige backup maken met fysieke pen en papier."
#: www/views/tab-import-hardware.html:42
#: www/views/tab-import-phrase.html:80
@@ -1588,7 +1543,7 @@ msgstr "Portemonnee importeren..."
#: www/views/backup.html:72
msgid "In order to verify your wallet backup, please type your password."
-msgstr "Vul je wachtwoord in om de back-up van je portemonnee te verifiëren."
+msgstr "Vul uw wachtwoord in om de backup van uw portemonnee te verifiëren."
#: www/views/mercadoLibreCards.html:24
#: www/views/modals/mercadolibre-card-details.html:29
@@ -1623,7 +1578,7 @@ msgstr "Onjuist netwerk adres"
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "Onvoldoende bevestigd saldo"
+msgstr "Onvoldoende saldo"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
@@ -1692,7 +1647,7 @@ msgstr "Het is aan te raden adressen niet te hergebruiken - dit beschermt uw pri
#: 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 "Het is van belang je back-up zin correct op te schrijven. Als er iets gebeurt met je portemonnee, heeft u deze back-up zin nodig om toegang tot uw geld te herstellen. Controleer je back-up zin en probeer het nogmaals."
+msgstr "Het is van belang uw backup zin correct op te schrijven. Als er iets gebeurt met uw portemonnee, heeft u deze backup nodig om toegang tot uw geld te herstellen. Controleer uw backup en probeer het nogmaals."
#: www/views/join.html:151
msgid "Join"
@@ -1700,7 +1655,7 @@ msgstr "Deelnemen"
#: 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 "Neem deel aan mijn {{appName}} Portemonnee. Hier is de uitnodigingscode: {{secret}} Je kunt {{appName}} voor je telefoon of desktop hier downloaden {{appUrl}}"
+msgstr "Neem deel aan mijn {{appName}} Portemonnee. Hier is de uitnodigingscode: {{secret}} U kunt {{appName}} voor uw telefoon of desktop hier downloaden {{appUrl}}"
#: www/views/add.html:30
#: www/views/join.html:5
@@ -1737,7 +1692,7 @@ msgstr "Meer informatie"
#: www/views/backup.html:43
msgid "Let's verify your backup phrase."
-msgstr "Laten we uw back-up zin verifiëren."
+msgstr "Laten we de backup zin verifiëren."
#: www/views/addresses.html:45
#: www/views/allAddresses.html:14
@@ -2026,11 +1981,11 @@ msgstr "Geef mij een melding wanneer transacties zijn bevestigd"
#: 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 "Dit is een goed moment om een back-up van de portemonnee te maken. Als dit apparaat kwijt raakt is het onmogelijk om toegang tot je saldo te krijgen zonder een back-up."
+msgstr "Dit is een goed moment om een backup van de portemonnee te maken. Als dit apparaat kwijt raakt is het onmogelijk om toegang tot uw saldo te krijgen zonder een backup."
#: www/views/backupWarning.html:11
msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?"
-msgstr "Dit is het juiste moment om je omgeving te bekijken. Ramen in de buurt? Verborgen camera's? Kijkt er iemand met je mee over je schouder?"
+msgstr "Dit is het juiste moment om uw omgeving te bekijken. Ramen in de buurt? Verborgen camera's? Kijkt er iemand mee over uw schouder?"
#: src/js/controllers/buyAmazon.js:312
#: src/js/controllers/topup.js:286
@@ -2064,7 +2019,7 @@ msgstr "OK"
#: www/views/tab-home.html:39
msgid "On this screen you can see all your wallets, accounts, and assets."
-msgstr "Op dit scherm zie je al je portemonnees, accounts en eigendommen."
+msgstr "Op dit scherm ziet u al uw portemonnees, accounts en eigendommen."
#: src/js/controllers/bitpayCard.js:113
#: src/js/controllers/cashScan.js:19
@@ -2090,7 +2045,7 @@ msgstr "GitHub Project openen"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "Explorer openen"
+msgstr "Insight openen"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2137,7 +2092,7 @@ msgstr "Wachtwoord"
#: src/js/controllers/import.js:98
msgid "Password required. Make sure to enter your password in advanced options"
-msgstr "Wachtwoord vereist. Vul je wachtwoord in bij de geavanceerde opties"
+msgstr "Wachtwoord vereist. Vul uw wachtwoord in bij de geavanceerde opties"
#: www/views/join.html:33
msgid "Paste invitation here"
@@ -2200,10 +2155,6 @@ msgstr "Betaling Afgewezen"
msgid "Payment Sent"
msgstr "Betaling Verzonden"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Deel deze transactie"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "Betaling geaccepteerd, maar nog niet verzonden"
@@ -2221,8 +2172,8 @@ msgid "Payment details"
msgstr "Details Betaling"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr "Betaalverzoek"
+msgid "Payment request"
+msgstr "Betalingsverzoek"
#: www/views/mercadoLibreCards.html:22
#: www/views/modals/mercadolibre-card-details.html:39
@@ -2260,7 +2211,7 @@ msgstr "Vul de herstel zin van de portemonnee in"
#: www/views/modals/pin.html:9
msgid "Please enter your PIN"
-msgstr "Vul je PIN in"
+msgstr "Vul uw PIN in"
#: www/views/backup.html:53
msgid "Please tap each word in the correct order."
@@ -2277,7 +2228,7 @@ msgstr "Een moment geduld a.u.b."
#: src/js/controllers/import.js:238
msgid "Please, select your backup file"
-msgstr "Selecteer je back-upbestand"
+msgstr "Selecteer uw backup bestand"
#: www/views/bitpayCard.html:81
msgid "Pre-Auth Holds"
@@ -2473,7 +2424,7 @@ msgstr "BitPay Kaart verwijderen?"
#: 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 "Het verwijderen van je BitPay account zal alle geassocieerde BitPay accountgegevens van dit apparaat verwijderen. Weet je zeker dat u de BitPay Account ({{email}}) van dit apparaat wil verwijderen?"
+msgstr "Het verwijderen van uw BitPay account zal alle geassocieerde BitPay accountgegevens van dit apparaat verwijderen. Weet u zeker dat u de BitPay Account ({{email}}) van dit apparaat wilt verwijderen?"
#: www/views/join.html:116
#: www/views/join.html:124
@@ -2536,7 +2487,7 @@ msgstr "Scannen"
#: www/views/tab-scan.html:15
msgid "Scan QR Codes"
-msgstr "Scan QR codes"
+msgstr "Scan QR Codes"
#: www/views/addresses.html:31
msgid "Scan addresses for funds"
@@ -2548,11 +2499,11 @@ msgstr "Scan nogmaals"
#: src/js/services/fingerprintService.js:56
msgid "Scan your fingerprint please"
-msgstr "Scan je vingerafdruk a.u.b."
+msgstr "Scan uw vingerafdruk"
#: www/views/preferencesCash.html:23
msgid "Scan your wallets for Bitcoin Cash"
-msgstr "Scan je portemonnees voor Bitcoin Cash"
+msgstr "Scannen naar Bitcoin Cash in uw portemonnees"
#: src/js/services/onGoingProcess.js:30
msgid "Scanning Wallet funds..."
@@ -2574,21 +2525,13 @@ msgstr "Doorzoek Transacties"
msgid "Search or enter bitcoin address"
msgstr "Zoeken of bitcoin adres invullen"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Klembord"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Je klembord is leeg"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "Doorzoek transacties"
#: www/views/preferencesAltCurrency.html:14
msgid "Search your currency"
-msgstr "Zoek je valuta"
+msgstr "Zoek uw valuta"
#: www/views/preferences.html:30
msgid "Security"
@@ -2640,68 +2583,9 @@ msgid "Send by email"
msgstr "Verstuur via email"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "Verzenden vanuit"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Verzenden naar"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Klembord plakken"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Adres plakken"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Overdracht tussen portemonnees"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Scan QR-code"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Stuur Bitcoin sneller!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Sla veelgebruikte adressen op en verstuur ze Bitcoin met een druk op de knop"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Je eerste contact toevoegen"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Je Bitcoin portemonnee is leeg"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Om aan de slag te gaan, koop Bitcoin Cash (BCH) of Bitcoin Core (BTC), of deel uw adres."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "U kunt Bitcoin ontvangen van elke portemonnee of dienst."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr "Om aan de slag te gaan zult u een bitcoin portemonnee moeten aanmaken en wat bitcoin moeten verkrijgen."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Bitcoin kopen"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Toon mijn adres"
-
#: www/views/includes/itemSelector.html:8
msgid "Send max amount"
msgstr "Verzend maximale hoeveelheid"
@@ -2739,7 +2623,7 @@ msgstr "Transactie verzenden"
#: src/js/controllers/confirm.js:545
msgid "Sending {{amountStr}} from your {{name}} wallet"
-msgstr "Verzenden van {{amountStr}} vanuit je portemonnee '{{name}}'"
+msgstr "Verzenden van {{amountStr}} vanuit uw {{name}} portemonnee"
#: www/views/includes/walletHistory.html:42
#: www/views/modals/tx-status.html:9
@@ -2779,7 +2663,7 @@ msgstr "Stel wachtwoord in"
#: src/js/controllers/preferencesFee.js:85
msgid "Set your own fee in satoshis/byte"
-msgstr "Kies je eigen transactiekosten in satoshi/byte"
+msgstr "Kies uw eigen transactiekosten in satoshi/byte"
#: www/views/tab-settings.html:3
#: www/views/tabs.html:19
@@ -2925,14 +2809,9 @@ msgid "Sweep"
msgstr "Saldo opnemen"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Paper wallet leeghalen"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
-msgstr "Paper wallet leeghalen"
+msgid "Sweep paper wallet"
+msgstr "Saldo papieren portemonnee opnemen"
#: src/js/services/onGoingProcess.js:33
msgid "Sweeping Wallet..."
@@ -2944,7 +2823,7 @@ msgstr "DEZE ACTIE IS ONOMKEERBAAR"
#: www/views/onboarding/welcome.html:5
msgid "Take control of your money, get started with bitcoin."
-msgstr "Neem de controle over je geld, aan de slag met Bitcoin."
+msgstr "Neem controle over uw geld, aan de slag met bitcoin."
#: www/views/walletDetails.html:132
#: www/views/walletDetails.html:52
@@ -2992,7 +2871,7 @@ msgstr "Bedankt!"
#: 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 "Dat is goed om te horen. Wij zouden graag die vijfde ster verdienen - hoe kunnen wij jouw ervaring verbeteren?"
+msgstr "Dat is goed om te horen. Wij zouden graag die vijfde ster verdienen - hoe kunnen wij uw ervaring verbeteren?"
#: src/js/services/ledger.js:152
msgid "The Ledger Chrome application is not installed"
@@ -3004,7 +2883,7 @@ msgstr "De hoeveelheid bitcoin die direct te besteden is vanuit deze portemonnee
#: 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 "De hoeveelheid Bitcoin opgeslagen in deze portemonnee, die is toegewezen als invoer voor uw wachtende betalingsvoorstellen. De hoeveelheid is bepaald, door te kijken naar ongebruikte transactie uitvoer geassocieerd met deze portemonnee en kan meer zijn dan de daadwerkelijke hoeveelheid geassocieerd met de wachtende betalingsvoorstellen."
+msgstr "De hoeveelheid bitcoin opgeslagen in deze portemonnee die is toegewezen als invoer voor uw wachtende betalingsvoorstellen. De hoeveelheid is bepaald door te kijken naar ongebruikte transactie uitvoer geassocieerd met deze portemonnee en kan meer zijn dan de daadwerkelijke hoeveelheid geassocieerd met de wachtende betalingsvoorstellen."
#: www/views/modals/wallet-balance.html:74
msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation."
@@ -3024,7 +2903,7 @@ msgstr "Des te hoger de betaalde transactiekosten, des te meer reden een miner h
#: 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 "Het maximum aantal opeenvolgende ongebruikte adressen (20) is bereikt. Wanneer een van je ongebruikte adressen een betaling ontvangt zal een nieuw adres gegenereerd en weergegeven worden in het tabblad Ontvangen."
+msgstr "Het maximum aantal opeenvolgende ongebruikte adressen (20) is bereikt. Wanneer een van uw ongebruikte adressen een betaling ontvangt zal een nieuw adres worden gegenereerd en worden getoond in het tabblad Ontvangen."
#: src/js/controllers/onboarding/terms.js:21
msgid "The official English Terms of Service are available on the BitPay website."
@@ -3094,25 +2973,17 @@ msgstr "Deze app is fantastisch!"
#: www/views/onboarding/tour.html:47
msgid "This app stores your bitcoin with cutting-edge security."
-msgstr "Deze app bewaart uw Bitcoin met de nieuwste beveiliging."
+msgstr "Deze app bewaart uw bitcoin met de nieuwste beveiliging."
#: src/js/controllers/confirm.js:523
msgid "This bitcoin payment request has expired."
msgstr "Dit bitcoin betalingsverzoek is verlopen."
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "Betaling verloopt:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "Betalingsverzoek is verlopen"
-
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds."
-msgstr "Dit wachtwoord kan niet worden achterhaald. Als het wachtwoord verloren gaat, dan is er geen mogelijkheid om toegang tot jouw saldo te herstellen."
+msgstr "Dit wachtwoord kan niet worden achterhaald. Als het wachtwoord verloren gaat is er geen mogelijkheid om toegang tot uw saldo te herstellen."
#: www/views/backup.html:31
msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed."
@@ -3147,11 +3018,15 @@ msgstr "Naar"
#: 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 "Om aan de slag te gaan, koop je Bitcoin of deel je je adres. Je kunt Bitcoin ontvangen van elke portemonnee of dienst."
+msgstr "Om aan de slag te gaan, koop bitcoin of deel uw adres. U kunt bitcoin ontvangen van elke portemonnee of dienst."
+
+#: www/views/tab-send.html:33
+msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
+msgstr "Om aan de slag te gaan zult u een bitcoin portemonnee moeten aanmaken en wat bitcoin moeten verkrijgen."
#: src/js/services/bitpayAccountService.js:73
msgid "To {{reason}} you must first add your BitPay account - {{email}}"
-msgstr "Om {{reason}} zult je eerst uw BitPay account moeten toevoegen - {{email}}"
+msgstr "Om {{reason}} zult u eerst uw BitPay account moeten toevoegen - {{email}}"
#: src/js/services/onGoingProcess.js:48
msgid "Top up in progress..."
@@ -3161,26 +3036,6 @@ msgstr "Bezig met opladen..."
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
msgstr "Vul debet kaart ({{cardLastNumber}}) aan met {{amountStr}}"
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "ShapeShift starten"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Binnen enkele minuten je BTC omwisselen naar BCH."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Om het proces te starten moet je eerst bitcoin in je portemonnee hebben staan."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "Het proces is snel en je ontvangt het uitgewisselde bedrag direct in je portemonnee."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Deze dienst wordt aangeboden door de partij ShapeShift, die zal een kleine vergoeding voor de service rekenen. Deze vergoeding wordt getoond voordat je de transactie start."
-
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
#: www/views/modals/wallet-balance.html:23
@@ -3315,7 +3170,7 @@ msgstr "Herstel zin valideren..."
#: www/views/modals/fingerprintCheck.html:4
msgid "Verify your identity"
-msgstr "Verifieër je identiteit"
+msgstr "Verifieer uw identiteit"
#: www/views/preferencesAbout.html:14
#: www/views/preferencesExternal.html:25
@@ -3337,7 +3192,7 @@ msgstr "Toon Algemene Voorwaarden"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Bekijk transactie op explorer.bitcoin.com"
+msgstr "Bekijk Transactie op Insight"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3512,7 +3367,7 @@ msgstr "Portemonnee niet geregistreerd"
#: 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 "Portemonnee niet geregistreerd bij de wallet service. Maak deze opnieuw aan vanuit \"Portemonnee Aanmaken\" en maak gebruik van \"Geavanceerde Opties\" om je herstelzin in te voeren"
+msgstr "Portemonnee niet geregistreerd bij de wallet service. Maak deze opnieuw aan vanuit \"Portemonnee Aanmaken\" en maak gebruik van \"Geavanceerde Opties\" om uw herstel zin in te voeren"
#: www/views/backup.html:12
msgid "Wallet recovery phrase not available"
@@ -3557,7 +3412,7 @@ msgstr "Wij zoeken altijd naar manieren om {{appName}} te verbeteren."
#: src/js/controllers/feedback/send.js:83
msgid "We're always looking for ways to improve {{appName}}. How could we improve your experience?"
-msgstr "Wij zoeken altijd naar manieren om {{appName}} te verbeteren. Hoe kunnen wij jouw ervaring verbeteren?"
+msgstr "Wij zoeken altijd naar manieren om {{appName}} te verbeteren. Hoe kunnen wij uw ervaring verbeteren?"
#: www/views/includes/incomingDataMenu.html:6
msgid "Website"
@@ -3609,7 +3464,7 @@ msgstr "Ja, overslaan"
#: src/js/controllers/onboarding/backupRequest.js:24
msgid "You can create a backup later from your wallet settings."
-msgstr "Je kunt later een back-up maken vanuit uw portemonnee instellingen."
+msgstr "U kunt later een backup maken vanuit uw portemonnee instellingen."
#: 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!"
@@ -3637,7 +3492,7 @@ msgstr "U kunt het inwisselen voor valuta's zoals de Amerikaanse Dollar, de Euro
#: www/views/onboarding/tour.html:46
msgid "You control your bitcoin."
-msgstr "Jij hebt de controle over jouw Bitcoin."
+msgstr "U heeft de controle over uw bitcoin."
#: www/views/modals/chooseFeeLevel.html:64
msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte."
@@ -3645,65 +3500,65 @@ msgstr "Het is af te raden transactiekosten te kiezen hoger dan {{maxFeeRecommen
#: www/views/modals/bitpay-card-confirmation.html:5
msgid "You will need to log back for fill in your BitPay Card."
-msgstr "Je zult opnieuw moeten inloggen om je BitPay Kaart op te laden."
+msgstr "U zult opnieuw moeten inloggen om uw BitPay Kaart op te laden."
#: www/views/preferencesNotifications.html:34
msgid "You'll receive email notifications about payments sent and received from your wallets."
-msgstr "U zult e-mail meldingen ontvangen over verzonden en ontvangen betalingen van jouw portemonnee."
+msgstr "U zult email meldingen ontvangen over verzonden en ontvangen betalingen van uw portemonnee."
#: 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 "Je BitPay Kaart is gereed. Voeg saldo toe aan je kaart om deze te kunnen gebruiken in winkels en pinautomaten over de hele wereld."
+msgstr "Uw BitPay Kaart is gereed. Voeg saldo toe aan uw kaart om deze te kunnen gebruiken in winkels en pinautomaten over de hele wereld."
#: www/views/mercadoLibre.html:57
#: www/views/mercadoLibreCards.html:6
msgid "Your Gift Cards"
-msgstr "Je Cadeaubonnen"
+msgstr "Uw Cadeaubonnen"
#: www/views/includes/confirmBackupPopup.html:6
msgid "Your bitcoin wallet is backed up!"
-msgstr "Er is een backup gemaakt van je Bitcoin portemonnee!"
+msgstr "Er is een backup gemaakt van uw bitcoin portemonnee!"
#: www/views/tab-home.html:36
msgid "Your bitcoin wallet is ready!"
-msgstr "Je Bitcoin portemonnee is gereed!"
+msgstr "Uw bitcoin portemonnee is gereed!"
#: www/views/modals/chooseFeeLevel.html:61
msgid "Your fee is lower than recommended."
-msgstr "Je gekozen transactiekosten zijn lager dan aangeraden."
+msgstr "Uw gekozen transactiekosten zijn lager dan aangeraden."
#: www/views/feedback/send.html:42
msgid "Your ideas, feedback, or comments"
-msgstr "Je ideeën, feedback of opmerkingen"
+msgstr "Uw ideeën, feedback of opmerkingen"
#: www/views/tab-create-shared.html:22
msgid "Your name"
-msgstr "Je naam"
+msgstr "Uw naam"
#: www/views/join.html:16
msgid "Your nickname"
-msgstr "Je bijnaam"
+msgstr "Uw bijnaam"
#: www/views/tab-export-file.html:11
#: www/views/tab-import-file.html:20
msgid "Your password"
-msgstr "Je wachtwoord"
+msgstr "Uw wachtwoord"
#: www/views/buyAmazon.html:102
msgid "Your purchase could not be completed"
-msgstr "Je aankoop kon niet worden voltooid"
+msgstr "Uw aankoop kon niet worden voltooid"
#: www/views/buyAmazon.html:105
msgid "Your purchase was added to the list of pending"
-msgstr "Je aankoop is op de in-behandeling lijst gezet"
+msgstr "Uw aankoop is op de in-behandeling lijst gezet"
#: www/views/onboarding/backupRequest.html:10
msgid "Your wallet is never saved to cloud storage or standard device backups."
-msgstr "Je portemonnee wordt nooit opgeslagen in de cloud of in standaard apparaat back-ups."
+msgstr "Uw portemonnee wordt nooit opgeslagen in de cloud of in standaard apparaat backups."
#: src/js/services/walletService.js:1030
msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
-msgstr "Je privésleutel wordt versleuteld. Het wachtwoord voor besteden kan niet worden achterhaald, schrijf deze zorgvuldig op."
+msgstr "Uw privé sleutel wordt versleuteld. Het Bestedingswachtwoord kan niet worden achterhaald, schrijf deze zorgvuldig op."
#: www/views/includes/walletList.html:13
#: www/views/includes/walletSelector.html:21
@@ -3721,7 +3576,7 @@ msgstr "[Saldo Scannen]"
#: src/js/controllers/bitpayCardIntro.js:11
msgid "add your BitPay Visa card(s)"
-msgstr "voeg je BitPay Visa kaart(en) toe"
+msgstr "voeg uw BitPay Visa kaart(en) toe"
#: www/views/includes/available-balance.html:8
msgid "locked by pending payments"
@@ -3772,172 +3627,3 @@ msgstr "{{updatingTxHistoryProgress}} transacties gedownload"
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.m}}-van-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Gemeenschap"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Bitcoin.com Twitter"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Bitcoin.com verkennen"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Bitcoin Cash spellen"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Wallet app delen"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "Nieuws"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Mining Pool"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Hulpmiddelen"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Bitcoin prijs grafieken"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Gratis Bitcoin Cash"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "Je Bitcoin portemonnee is gereed!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "Adres bevat geen valutagegevens, zorg ervoor dat je de correcte valuta verzendt."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Controleer transactie"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Je verzendt"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Je shift"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "Naar:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Persoonlijke opmerking toevoegen"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Voorgesteld door derde partij:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Voer hier tekst in"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Persoonlijke opmerking:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Minder dan 1 cent"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "Deze factuur accepteert geen betalingen meer"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Alles versturen"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Onbekende fout."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "Geen Bitcoin Cash portemonnee gevonden om bedrag naartoe over te maken."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "Geen Bitcoin Cash gevonden."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Bitcoin Core gevonden:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "Geen Bitcoin Core portemonnee gevonden om waarde naartoe te versturen."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "Geen Bitcoin Core gevonden."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "Scannen mislukt"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "Gegevens niet herkend."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "Niet ondersteund"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet wordt niet ondersteund."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Open in webbrowser"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Ongeldig adres"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "Bedrag is niet gespecificeerd"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Bedrag lager is dan het minimum"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "Bedrag is boven het limiet"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Ongeldig respons van Shapeshift"
-
diff --git a/i18n/po/pl/template-pl.po b/i18n/po/pl.po
similarity index 89%
rename from i18n/po/pl/template-pl.po
rename to i18n/po/pl.po
index 63e8e47ee..eab98ab83 100644
--- a/i18n/po/pl/template-pl.po
+++ b/i18n/po/pl.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
-"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\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: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: pl\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: Polish\n"
"Language: pl\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-09 10:33-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -41,7 +41,7 @@ msgstr "5-gwiazdkowa ocena pozwoli na wzrost popularności {{appName}}, a więks
#: www/views/mercadoLibre.html:18
#: www/views/mercadoLibre.html:40
msgid "Only redeemable on Mercado Livre (Brazil)"
-msgstr "98804213800207"
+msgstr ""
#: src/js/controllers/feedback/send.js:27
#: www/views/feedback/complete.html:21
@@ -77,30 +77,6 @@ msgstr "Konto"
msgid "Account Number"
msgstr "Numer konta"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Natychmiastowe transakcje z niskimi prowizjami"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Niewystarczające środki"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Zmień walutę"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Dostępne środki"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Użyj wszystkich dostępnych środków"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Dalej"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "Konta"
@@ -226,20 +202,6 @@ msgstr "Prawie gotowe! Dokonajmy przeglądu."
msgid "Alternative Currency"
msgstr "Alternatywna waluta"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Wyświetlanie ceny"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Kryptowaluta"
-
#: src/js/controllers/buyAmazon.js:98
msgid "Amazon.com is not available at this moment. Please try back later."
msgstr "Amazon.com jest aktualnie niedostępny. Spróbuj później."
@@ -272,7 +234,7 @@ msgstr "Każdy, kto ma Twoją kluczową frazę może uzyskać dostęp lub wydać
#: www/views/addresses.html:94
msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-msgstr "Szacunkowe opłaty sieci Bitcoin do przeniesienia salda portfela (normalny priorytet)"
+msgstr ""
#: www/views/backupWarning.html:10
msgid "Are you being watched?"
@@ -341,7 +303,7 @@ msgstr "BIP32 ścieżka dla adresu derywacji"
#: www/views/cashScan.html:25
msgid "BTC wallets"
-msgstr "Portfele BTC"
+msgstr ""
#: www/views/preferences.html:34
msgid "Backup"
@@ -397,17 +359,17 @@ msgstr "Adres bitcoin"
#: www/views/cashScan.html:4
msgid "Bitcoin Cash (BCH) Balances"
-msgstr "Salda Bitcoin Cash (BCH)"
+msgstr ""
#: www/views/preferencesCash.html:3
#: www/views/tab-settings.html:47
msgid "Bitcoin Cash Support"
-msgstr "Wsparcie Bitcoin Cash"
+msgstr ""
#: www/views/tab-home.html:98
#: www/views/tab-settings.html:115
msgid "Bitcoin Cash Wallets"
-msgstr "Płatność Bitcoin Cash"
+msgstr ""
#: www/views/modals/chooseFeeLevel.html:4
#: www/views/preferencesFee.html:4
@@ -418,11 +380,11 @@ msgstr "Polityka prowizji sieci bitcoin"
#: www/views/tab-home.html:83
#: www/views/tab-settings.html:107
msgid "Bitcoin Core Wallets"
-msgstr "Portfele Bitcoin Core"
+msgstr ""
#: src/js/services/incomingData.js:151
msgid "Bitcoin cash Payment"
-msgstr "Płatność Bitcoin Cash"
+msgstr ""
#: www/views/onboarding/tour.html:31
msgid "Bitcoin is a currency."
@@ -471,7 +433,6 @@ msgid "Buy & Sell Bitcoin"
msgstr "Kup & sprzedaj bitcoiny"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "Kup bitcoiny"
@@ -520,7 +481,7 @@ msgid "Cannot Create Wallet"
msgstr "Nie można utworzyć portfela"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
+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
@@ -654,14 +615,10 @@ msgstr "Łączenie z Gildera..."
msgid "Connection reset by peer"
msgstr "Połączenie zostało zresetowane"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "Kontakty"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Zapisane często używane adresy"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "Dalej"
@@ -672,7 +629,7 @@ msgstr "Wkład do tłumaczenia"
#: src/js/controllers/confirm.js:130
msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-msgstr "Copay obsługuje tylko Bitcoin gotówki za pomocą nowej wersji numery adresy"
+msgstr ""
#: src/js/services/bwcError.js:62
msgid "Copayer already in this wallet"
@@ -696,7 +653,6 @@ msgstr "Współwłaściciele {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "Skopiowano do schowka"
@@ -863,7 +819,7 @@ msgstr "Utwórz współdzielony portfel"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "Utwórz portfel bitcoin"
@@ -984,7 +940,7 @@ msgstr "Pobierz"
#: www/views/cashScan.html:37
msgid "Duplicate for BCH"
-msgstr "Duplikat dla BCH"
+msgstr ""
#: src/js/services/onGoingProcess.js:49
msgid "Duplicating wallet..."
@@ -1017,7 +973,7 @@ msgstr "Puste adresy osiągnęły limit. Nowe adresy nie mogą być generowane."
#: www/views/preferencesCash.html:17
msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-msgstr "Włącz tworzenie i obsługę portfela Bitcoin Cash w aplikacji."
+msgstr ""
#: www/views/tab-scan.html:19
msgid "Enable camera access in your device settings to get started."
@@ -1031,17 +987,13 @@ msgstr "Włącz powiadomienia e-mail"
msgid "Enable push notifications"
msgstr "Włącz powiadomienia"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Włącz dźwięk"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "Włącz kamerę aby rozpocząć."
#: www/views/tab-settings.html:49
msgid "Enabled"
-msgstr "Włączono"
+msgstr "Włączone"
#: src/js/services/walletService.js:1047
#: src/js/services/walletService.js:1062
@@ -1316,7 +1268,6 @@ msgstr "Do celów audytu"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "Z"
@@ -1377,6 +1328,10 @@ msgid "Get news and updates from BitPay"
msgstr "Otrzymywanie wiadomości i aktualizacji z BitPay"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr "Pierwsze kroki"
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Zacznij"
@@ -1392,7 +1347,7 @@ msgstr "Uzyskiwanie informacji o prowizji..."
#: www/views/buyAmazon.html:43
#: www/views/buyMercadoLibre.html:42
msgid "Gift Card"
-msgstr "Karta podarunkowa"
+msgstr ""
#: www/views/modals/mercadolibre-card-details.html:30
#: www/views/modals/mercadolibre-card-details.html:35
@@ -1451,7 +1406,7 @@ msgstr "Portfel sprzętowy"
#: src/js/controllers/create.js:180
#: src/js/controllers/join.js:145
msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr "Portfele sprzętowe nie są jeszcze obsługiwane z Bitcoin gotówki"
+msgstr ""
#: www/views/tab-settings.html:20
msgid "Help & Support"
@@ -1623,7 +1578,7 @@ msgstr "Nieprawidłowy adres"
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "Niewystarczające potwierdzone środki"
+msgstr "Nie ma wystarczającej ilości środków"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
@@ -1633,7 +1588,7 @@ msgstr "Niewystarczające środki na prowizję"
#: www/views/tab-settings.html:123
msgid "Integrations"
-msgstr "Integracje"
+msgstr ""
#: www/views/includes/walletHistory.html:49
msgid "Invalid"
@@ -1782,7 +1737,7 @@ msgstr "Wyloguj się"
#: www/views/addresses.html:87
msgid "Low amount inputs"
-msgstr "Niska kwota"
+msgstr ""
#: www/views/includes/walletHistory.html:27
msgid "Low fees"
@@ -1814,11 +1769,11 @@ msgstr "Notatka"
#: www/views/mercadoLibre.html:6
msgid "Mercado Livre Brazil Gift Cards"
-msgstr "Karty podarunkowe Mercado Livre Brazil"
+msgstr ""
#: src/js/controllers/buyMercadoLibre.js:98
msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr "Karta podarunkowa MercadoLibre nie jest obecnie dostępna. Spróbuj później."
+msgstr ""
#: www/views/modals/txp-details.html:131
msgid "Merchant Message"
@@ -1828,7 +1783,7 @@ msgstr "Wiadomość handlowa"
#: www/views/buyMercadoLibre.html:54
#: www/views/topup.html:63
msgid "Miner Fee"
-msgstr "Opłata dla górnika"
+msgstr ""
#: src/js/services/bwcError.js:134
msgid "Missing parameter"
@@ -1871,7 +1826,7 @@ msgstr "Nazwa"
#: www/views/buyMercadoLibre.html:48
#: www/views/topup.html:56
msgid "Network Cost"
-msgstr "Koszty sieci"
+msgstr ""
#: src/js/services/bwcError.js:47
msgid "Network error"
@@ -1933,7 +1888,7 @@ msgstr "Brak wcześniejszych transakcji"
#: src/js/controllers/buyAmazon.js:44
#: src/js/controllers/topup.js:47
msgid "No signing proposal: No private key"
-msgstr "Nie podpisywania wniosku: nie ma klucza prywatnego"
+msgstr ""
#: www/views/walletDetails.html:204
msgid "No transactions yet"
@@ -1960,15 +1915,15 @@ msgstr "Brak portfeli do otrzymania środków"
#: www/views/cashScan.html:15
msgid "No wallets eligible for Bitcoin Cash support"
-msgstr "Brak portfeli wspierających Bitcoin Cash"
+msgstr ""
#: src/js/controllers/cashScan.js:58
msgid "Non BIP44 wallet"
-msgstr "Nie BIP44 portfel"
+msgstr ""
#: www/views/cashScan.html:46
msgid "Non eligible BTC wallets"
-msgstr "Niewspierane portfele BTC"
+msgstr ""
#: src/js/services/feeService.js:12
msgid "Normal"
@@ -2001,7 +1956,7 @@ msgstr "Notatka"
#: www/views/backup.html:19
msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-msgstr "Uwaga: Jeśli ten portfel BCH został zduplikowany z portfela BTC, będą one współdzielić ten sam zwrot odzyskiwania."
+msgstr ""
#: www/views/modals/wallets.html:25
msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin"
@@ -2090,7 +2045,7 @@ msgstr "Otwórz projekt GitHub"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "Otwórz Explorer"
+msgstr "Otwórz Insight"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2110,7 +2065,7 @@ msgstr "Otworzyć bitcoincash.org?"
#: src/js/controllers/cashScan.js:18
msgid "Open the recovery tool."
-msgstr "Otwórz narzędzie do odzyskiwania."
+msgstr ""
#: www/views/tab-receive.html:27
msgid "Open wallet"
@@ -2200,10 +2155,6 @@ msgstr "Wypłata odrzucona"
msgid "Payment Sent"
msgstr "Płatność wysłana"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Udostępnij tę transakcję"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "Wypłata zaakceptowana, ale jeszcze nie nadana"
@@ -2214,14 +2165,14 @@ msgstr "Wypłata zaakceptowana. Będzie nadana przez Glidera. W przypadku wystą
#: src/js/services/incomingData.js:152
msgid "Payment address was translated to new Bitcoin Cash address format:"
-msgstr "Adres płatności został przetłumaczony na nowy format adresów Bitcoin Cash:"
+msgstr ""
#: www/views/modals/txp-details.html:107
msgid "Payment details"
msgstr "Szczegóły wypłaty"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
+msgid "Payment request"
msgstr "Wniosek o płatność"
#: www/views/mercadoLibreCards.html:22
@@ -2281,7 +2232,7 @@ msgstr "Proszę wybrać plik kopii zapasowej"
#: www/views/bitpayCard.html:81
msgid "Pre-Auth Holds"
-msgstr "Wstrzymanie przedautoryzacyjne"
+msgstr ""
#: www/views/tab-settings.html:40
msgid "Preferences"
@@ -2385,7 +2336,7 @@ msgstr "Więcej informacji w naszej Wiki"
#: src/js/controllers/cashScan.js:61
msgid "Read only wallet"
-msgstr "Portfel tylko do odczytu"
+msgstr ""
#: www/views/tab-receive.html:3
#: www/views/tabs.html:7
@@ -2394,7 +2345,7 @@ msgstr "Otrzymaj"
#: www/views/customAmount.html:44
msgid "Receive in"
-msgstr "Otrzymaj w"
+msgstr ""
#: www/views/includes/walletHistory.html:24
#: www/views/tx-details.html:18
@@ -2552,7 +2503,7 @@ msgstr "Proszę zeskanować linie papilarne"
#: www/views/preferencesCash.html:23
msgid "Scan your wallets for Bitcoin Cash"
-msgstr "Skanuj portfele w poszukiwaniu Bitcoin Cash"
+msgstr ""
#: src/js/services/onGoingProcess.js:30
msgid "Scanning Wallet funds..."
@@ -2574,14 +2525,6 @@ msgstr "Szukaj transakcji"
msgid "Search or enter bitcoin address"
msgstr "Wyszukaj lub wpisz adres bitcoin"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Schowek"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Schowek jest pusty"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "Szukaj transakcji"
@@ -2596,7 +2539,7 @@ msgstr "Bezpieczeństwo"
#: www/views/modals/mercadolibre-card-details.html:64
msgid "See invoice"
-msgstr "Zobacz fakturę"
+msgstr ""
#: www/views/tab-import-file.html:7
msgid "Select a backup file"
@@ -2640,68 +2583,9 @@ msgid "Send by email"
msgstr "Wyślij przez e-mail"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "Wyślij z"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Wyślij do"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Wklej ze schowka"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Wklej adres"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Transfer między portfelami"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Zeskanuj kod QR"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Przesyłaj Bitcoiny szybciej!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Zapisz często używane adresy i wyślij im Bitcoin za pomocą jednego dotknięcia"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Dodaj swój pierwszy kontakt"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Twój portfel jest pusty"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Aby zacząć, kup Bitcoin Cash (BCH) lub Bitcoin Core (BTC), albo udostępnij swój adres."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "Bitcoiny można odbierać z dowolnego portfela lub usługi."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: 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."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Kup Bitcoin teraz"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Pokaż mój adres"
-
#: www/views/includes/itemSelector.html:8
msgid "Send max amount"
msgstr "Wyślij całą kwotę"
@@ -2855,7 +2739,7 @@ msgstr "Pomiń"
#: src/js/controllers/confirm.js:371
#: src/js/controllers/modals/txpDetails.js:47
msgid "Slide to accept"
-msgstr "Przesuń, aby zaakceptować"
+msgstr ""
#: www/views/buyAmazon.html:96
msgid "Slide to buy"
@@ -2863,16 +2747,16 @@ msgstr "Przesuń, aby kupić"
#: src/js/controllers/confirm.js:365
msgid "Slide to pay"
-msgstr "Przesuń, aby zapłacić"
+msgstr ""
#: src/js/controllers/confirm.js:377
#: src/js/controllers/modals/txpDetails.js:40
msgid "Slide to send"
-msgstr "Przesuń, aby wysłać"
+msgstr ""
#: www/views/cashScan.html:56
msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-msgstr "Niektóre z twoich portfeli nie kwalifikują się do wsparcia Bitcoin Cash. Dostęp do środków BCH z tych portfeli można spróbować uzyskać, korzystając z"
+msgstr ""
#: src/js/controllers/create.js:88
#: src/js/controllers/join.js:71
@@ -2893,7 +2777,7 @@ msgstr "Wymagane hasło wypłat"
#: www/views/walletDetails.html:173
msgid "Spending this balance will need significant Bitcoin network fees"
-msgstr "Wydanie tego salda będzie wymagało znacznych opłat sieciowych Bitcoin"
+msgstr ""
#: www/views/tab-send.html:28
msgid "Start sending bitcoin"
@@ -2906,7 +2790,7 @@ msgstr "Blokada uruchamiania"
#: www/views/mercadoLibreCards.html:21
#: www/views/modals/mercadolibre-card-details.html:42
msgid "Still pending"
-msgstr "Jeszcze w toku"
+msgstr ""
#: www/views/topup.html:101
msgid "Success"
@@ -2918,20 +2802,15 @@ msgstr "Super Ekonomiczna"
#: www/views/preferencesCash.html:11
msgid "Support Bitcoin Cash"
-msgstr "Wsparcie Bitcoin Cash"
+msgstr ""
#: www/views/paperWallet.html:7
msgid "Sweep"
msgstr "Opróżnij"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Wyczyść papierowy portfel"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
+msgid "Sweep paper wallet"
msgstr "Wyczyść papierowy portfel"
#: src/js/services/onGoingProcess.js:33
@@ -2953,7 +2832,7 @@ msgstr "Dotknij i przytrzymaj, aby pokazać"
#: www/views/includes/walletInfo.html:3
msgid "Tap to recreate"
-msgstr "Dotknij, aby odświeżyć"
+msgstr ""
#: www/views/includes/walletInfo.html:4
msgid "Tap to retry"
@@ -3100,14 +2979,6 @@ msgstr "Ta aplikacja przechowuje Twoje bitcoiny z zaawansowanymi zabezpieczeniam
msgid "This bitcoin payment request has expired."
msgstr "Ten wniosek płatności wygasł."
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "Płatność wygasa:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "Wniosek o płatność wygasł"
-
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
@@ -3120,7 +2991,7 @@ msgstr "Ta kluczowa fraza został utworzona przy użyciu hasła. Aby odzyskać p
#: www/views/tx-details.html:91
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 "Ta kwota transakcji jest zbyt mała w porównaniu z obecnymi opłatami sieci Bitcoin. Wydanie tych środków będzie wymagało opłaty sieciowej Bitcoin, która jest porównywalna do kosztów samych funduszy."
+msgstr ""
#: www/views/tx-details.html:87
msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender"
@@ -3149,37 +3020,21 @@ msgstr "Do"
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 "Aby móc wykonać czynność {{reason}}, musisz przedtem dodać swoje konto BitPay – {{email}}"
+msgstr ""
#: src/js/services/onGoingProcess.js:48
msgid "Top up in progress..."
-msgstr "Doładowanie w trakcie..."
+msgstr ""
#: src/js/controllers/topup.js:206
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-msgstr "Doładuj o {{amountStr}} kartę debetową ({{cardLastNumber}})"
-
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "Rozpocznij ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Wymień BTC na BCH w ciągu paru chwil."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Aby zacząć, dodaj środki do portfela."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "Proces jest szybki, a użytkownik otrzyma wymienione środki do portfela."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Ta usługa jest świadczona przez podmiot zewnętrzny ShapeShift, który naliczy za nią niewielką opłatę. Będzie ona widoczna przed rozpoczęciem transakcji."
+msgstr ""
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
@@ -3198,7 +3053,7 @@ msgstr "Liczba współwłaścicieli portfela"
#: www/views/addresses.html:81
msgid "Total wallet inputs"
-msgstr "Dane wejściowe portfela łącznie"
+msgstr ""
#: src/js/services/fingerprintService.js:63
#: src/js/services/fingerprintService.js:68
@@ -3226,7 +3081,7 @@ msgstr "Transakcja została już wysłana"
#: src/js/controllers/buyMercadoLibre.js:301
#: src/js/controllers/topup.js:281
msgid "Transaction has not been created"
-msgstr "Transakcja nie została utworzona"
+msgstr ""
#: www/views/topup.html:104
msgid "Transaction initiated"
@@ -3337,7 +3192,7 @@ msgstr "Zobacz zasady użytkowania"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Zobacz transakcję na Explorer.Bitcoin.com"
+msgstr "Zobacz transakcje na Insight"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3349,7 +3204,7 @@ msgstr "Zobacz na blockchainie"
#: www/views/mercadoLibre.html:26
msgid "Visit mercadolivre.com.br →"
-msgstr "Odwiedź mercadolivre.com.br →"
+msgstr ""
#: www/views/walletDetails.html:182
msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet."
@@ -3411,7 +3266,7 @@ msgstr "Informacje o portfelu"
#: www/views/addresses.html:76
msgid "Wallet Inputs"
-msgstr "Dane wejściowe portfela"
+msgstr ""
#: www/views/join.html:26
msgid "Wallet Invitation"
@@ -3465,7 +3320,7 @@ msgstr "Portfel już istnieje"
#: src/js/services/profileService.js:516
msgid "Wallet already in {{appName}}"
-msgstr "Portfel już w aplikacji {{appName}}"
+msgstr ""
#: www/views/includes/walletActivity.html:6
msgid "Wallet created"
@@ -3516,7 +3371,7 @@ msgstr "Portfel nie jest zarejestrowany w Wallet Service. Odtwórz go używając
#: www/views/backup.html:12
msgid "Wallet recovery phrase not available"
-msgstr "Fraza odzyskiwania portfela nie jest dostępna"
+msgstr ""
#: src/js/services/bwcError.js:50
msgid "Wallet service not found"
@@ -3645,7 +3500,7 @@ msgstr "Nie należy ustawiać opłatę wyższą niż {{maxFeeRecommended}} satos
#: www/views/modals/bitpay-card-confirmation.html:5
msgid "You will need to log back for fill in your BitPay Card."
-msgstr "Musisz zalogować się ponownie, aby wypełnić swoją kartę BitPay."
+msgstr ""
#: www/views/preferencesNotifications.html:34
msgid "You'll receive email notifications about payments sent and received from your wallets."
@@ -3658,7 +3513,7 @@ msgstr "Twoja karta BitPay jest gotowa. Zasil kartę, aby zacząć ją używać
#: www/views/mercadoLibre.html:57
#: www/views/mercadoLibreCards.html:6
msgid "Your Gift Cards"
-msgstr "Twoje karty podarunkowe"
+msgstr ""
#: www/views/includes/confirmBackupPopup.html:6
msgid "Your bitcoin wallet is backed up!"
@@ -3717,7 +3572,7 @@ msgstr "[Balans ukryty]"
#: www/views/walletDetails.html:141
#: www/views/walletDetails.html:61
msgid "[Scanning Funds]"
-msgstr "[Skanowanie środków]"
+msgstr ""
#: src/js/controllers/bitpayCardIntro.js:11
msgid "add your BitPay Visa card(s)"
@@ -3741,7 +3596,7 @@ msgstr "Przygotowywanie..."
#: www/views/cashScan.html:57
msgid "recovery tool."
-msgstr "narzędzie do odzyskiwania."
+msgstr ""
#: src/js/controllers/buyAmazon.js:239
msgid "{{amountStr}} for Amazon.com Gift Card"
@@ -3749,7 +3604,7 @@ msgstr "{{amountStr}} dla karty upominkowej Amazon.com"
#: src/js/controllers/buyMercadoLibre.js:237
msgid "{{amountStr}} for Mercado Livre Brazil Gift Card"
-msgstr "{{amountStr}} na karcie podarunkowej Mercado Livre Brazil"
+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)."
@@ -3761,7 +3616,7 @@ msgstr "{{fee}} zostanie potrącone jako prowizja sieci bitcoin."
#: www/views/confirm.html:85
msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-msgstr "{{tx.txp[wallet.id].feeRatePerStr}} wysyłanej kwoty"
+msgstr ""
#: www/views/walletDetails.html:218
msgid "{{updatingTxHistoryProgress}} transactions downloaded"
@@ -3772,172 +3627,3 @@ msgstr "{{updatingTxHistoryProgress}} transakcje pobrane"
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.m}}-z-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Społeczność"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Reddit Bitcoin Cash"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Twitter Bitcoin.com"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Poznaj Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Gry Bitcoin Cash"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Udostępnij aplikację Portfel"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "Aktualności"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Pula kopalni"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Narzędzia"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Wykresy kursu Bitcoin"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Darmowa Bitcoin Cash"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "Twoje portfele Bitcoin są gotowe!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "Adres nie zawiera informacji o walucie; upewnij się, że przesyłasz odpowiednią walutę."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Potwierdzenie transakcji"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Przesyłasz"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Przelewasz"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "Do:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Dodaj notatkę osobistą"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Sugestia handlowca:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Wprowadź tekst tutaj"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Notatka osobista:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Mniej niż 1 cent"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "Nie można już opłacić tej faktury"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Wyślij maksymalną kwotę"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Nieznany błąd."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "Nie znaleziono portfela Bitcoin Cash do przekazania środków."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "Nie znaleziono Bitcoin Cash."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Znaleziono Bitcoin Core:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "Nie znaleziono portfela Bitcoin Core do przekazania środków."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "Nie znaleziono Bitcoin Core."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "Skanowanie nie powiodło się"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "Nie rozpoznano danych."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "Nieobsługiwane"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Sieć testowa nie jest obsługiwana."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "Adres URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Otwórz w przeglądarce internetowej"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Nieprawidłowy adres"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "Kwota nie jest określona"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Kwota niższa od minimalnej"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "Kwota przekracza limit"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Nieprawidłowa odpowiedź z Shapeshift"
-
diff --git a/i18n/po/pt-BR/template-pt-BR.po b/i18n/po/pt.po
similarity index 91%
rename from i18n/po/pt-BR/template-pt-BR.po
rename to i18n/po/pt.po
index 7d15602e7..b05642dbf 100644
--- a/i18n/po/pt-BR/template-pt-BR.po
+++ b/i18n/po/pt.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
+"Project-Id-Version: copay\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: pt-BR\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-10 08:58-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -77,30 +77,6 @@ msgstr "Conta"
msgid "Account Number"
msgstr "Número de conta"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Transações instantâneas com taxas baixas"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Fundos insuficientes"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Alterar moeda"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Fundos disponíveis"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Usar todos os fundos disponíveis"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Próximo"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "Contas"
@@ -226,20 +202,6 @@ msgstr "Quase pronto! Vamos rever."
msgid "Alternative Currency"
msgstr "Moeda Alternativa"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Exibição de preço"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Criptomoeda"
-
#: src/js/controllers/buyAmazon.js:98
msgid "Amazon.com is not available at this moment. Please try back later."
msgstr "Amazon.com não está disponível neste momento. Por favor, tente mais tarde."
@@ -345,7 +307,7 @@ msgstr "Carteiras BTC"
#: www/views/preferences.html:34
msgid "Backup"
-msgstr "Backup de"
+msgstr "Backup"
#: www/views/includes/backupNeededPopup.html:7
msgid "Backup Needed"
@@ -471,7 +433,6 @@ msgid "Buy & Sell Bitcoin"
msgstr "Comprar & Vender Bitcoin"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "Comprar Bitcoin"
@@ -520,8 +481,8 @@ msgid "Cannot Create Wallet"
msgstr "Não é possível criar a carteira"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
-msgstr "Não pode juntar-se à mesma carteira mais que uma vez"
+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"
@@ -654,14 +615,10 @@ msgstr "A conectar ao Glidera..."
msgid "Connection reset by peer"
msgstr "Ligação redefinida pelo mesmo nível"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "Contactos"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Salvou os endereços usados com frequência"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "Continuar"
@@ -696,7 +653,6 @@ msgstr "Copayer {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "Copiado para a área de transferência"
@@ -863,7 +819,7 @@ msgstr "Criar carteira partilhada"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "Criar carteira bitcoin"
@@ -980,7 +936,7 @@ msgstr "Não vê o seu idioma no Crowdin? Contacte o Dono no Crowdin! Nós adora
#: www/views/tab-export-file.html:59
#: www/views/tab-home.html:22
msgid "Download"
-msgstr "Baixar"
+msgstr "Download"
#: www/views/cashScan.html:37
msgid "Duplicate for BCH"
@@ -1031,10 +987,6 @@ msgstr "Ativar notificações por email"
msgid "Enable push notifications"
msgstr "Ativar notificações push"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Ativar som"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "Ative a câmera para começar."
@@ -1316,7 +1268,6 @@ msgstr "Para fins de auditoria"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "De"
@@ -1377,6 +1328,10 @@ msgid "Get news and updates from BitPay"
msgstr "Receba notícias e atualizações da BitPay"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr "Começar"
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Começar"
@@ -1623,7 +1578,7 @@ msgstr "Endereço de rede incorreto"
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "Insuficiência de fundos confirmada"
+msgstr "Fundos insuficientes"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
@@ -2041,7 +1996,7 @@ msgstr "Agora é a hora perfeita para olhar em volta. Próximo de janelas? Câme
#: src/js/services/popupService.js:72
#: www/views/modals/chooseFeeLevel.html:6
msgid "OK"
-msgstr "Okey"
+msgstr "OK"
#: www/views/modals/tx-status.html:12
#: www/views/modals/tx-status.html:24
@@ -2060,7 +2015,7 @@ msgstr "Oh não!"
#: src/js/controllers/buyMercadoLibre.js:306
msgid "Ok"
-msgstr "Okey"
+msgstr "Ok"
#: www/views/tab-home.html:39
msgid "On this screen you can see all your wallets, accounts, and assets."
@@ -2090,7 +2045,7 @@ msgstr "Abrir Projeto no GitHub"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "Abrir o Explorer"
+msgstr "Abrir Insight"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2200,10 +2155,6 @@ msgstr "Pagamento Rejeitado"
msgid "Payment Sent"
msgstr "Pagamento Enviado"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Compartilhar esta transação"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "Pagamento aceito, mas ainda não publicado"
@@ -2221,8 +2172,8 @@ msgid "Payment details"
msgstr "Detalhes do pagamento"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr "Solicitação de pagamento"
+msgid "Payment request"
+msgstr "Pedido de pagamento"
#: www/views/mercadoLibreCards.html:22
#: www/views/modals/mercadolibre-card-details.html:39
@@ -2574,14 +2525,6 @@ msgstr "Procurar transações"
msgid "Search or enter bitcoin address"
msgstr "Procure ou digite o endereço bitcoin"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Área de transferência"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "A sua área de transferência está vazia"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "Procurar transações"
@@ -2640,68 +2583,9 @@ msgid "Send by email"
msgstr "Enviar por E-mail"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "Enviar De"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Enviar para"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Colar na área de trabalho"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Colar endereço"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Transferência entre carteiras"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Digitalizar o código QR"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Envie Bitcoin mais rápido!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Salvar endereços usados com frequência e enviar Bitcoin com apenas um toque"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Adicionar o seu primeiro contato"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Sua carteira de Bitcoin está vazia"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Para começar, compre Bitcoin Cash (BCH) ou Bitcoin Core (BTC) ou compartilhe o seu endereço."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "Você pode receber bitcoin de qualquer carteira ou serviço."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: 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."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Comprar Bitcoin agora"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Mostrar meu endereço"
-
#: www/views/includes/itemSelector.html:8
msgid "Send max amount"
msgstr "Quantidade Máxima de envio"
@@ -2925,13 +2809,8 @@ msgid "Sweep"
msgstr "Limpar"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Varrer a carteira de papel"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
+msgid "Sweep paper wallet"
msgstr "Varrer a carteira de papel"
#: src/js/services/onGoingProcess.js:33
@@ -3100,14 +2979,6 @@ msgstr "Este aplicativo armazena seu bitcoin com segurança de ponta."
msgid "This bitcoin payment request has expired."
msgstr "Este bitcoin pagamento pedido expirou."
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "Pagamento expira em:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "Pedido de pagamento expirou"
-
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
@@ -3149,6 +3020,10 @@ msgstr "Para"
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}}"
@@ -3161,26 +3036,6 @@ msgstr "Recarga em andamento..."
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
msgstr "Recarga de {{amountStr}} para cartão de débito ({{cardLastNumber}})"
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "Iniciar ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Troque seu BTC para BCH em minutos."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Para iniciar o processo, você precisa adicionar fundos à sua carteira."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "O processo é rápido e você receberá a quantia convertida na sua carteira."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Este serviço é fornecido pela terceira ShapeShift, que cobrará uma pequena taxa pelo serviço. A taxa será exibida antes de você iniciar a transação."
-
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
#: www/views/modals/wallet-balance.html:23
@@ -3267,7 +3122,7 @@ msgstr "Digite a frase de recuperação (normalmente 12 palavras)"
#: src/js/controllers/backup.js:75
msgid "Uh oh..."
-msgstr "Ah Ah..."
+msgstr "Uh oh..."
#: www/views/tx-details.html:100
msgid "Unconfirmed"
@@ -3337,7 +3192,7 @@ msgstr "Ver os Termos de Serviço"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Ver transação no Explorer.Bitcoin.com"
+msgstr "Exibir Transação no Insight"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3772,172 +3627,3 @@ msgstr "Transações de {{updatingTxHistoryProgress}} transferidas"
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.m}}-de-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Comunidade"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Twitter Bitcoin.com"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Explore Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Jogos Bitcoin Cash"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Compartilhar o app de carteira"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "Notícias"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Pool de mineração"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Ferramentas"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Gráficos de preço do Bitcoin"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Bitcoin Cash grátis"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "As suas carteiras de Bitcoin estão prontas!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "O endereço não contém informações de moeda. Certifique-se de que está enviando a moeda correta."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Revisar transação"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Você está enviando"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Você está trocando"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "Para:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Adicionar nota pessoal"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Sugerido pelo comerciante:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Insira o texto aqui"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Nota pessoal:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Menos de 1 centavo"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "Essa fatura não aceita mais pagamentos"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Enviar montante máximo"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Erro desconhecido."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "Nenhuma carteira de Bitcoin Cash para transferir fundos encontrada."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "Bitcoin Cash não encontrado."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Bitcoin Core encontrado:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "Nenhuma carteira de Bitcoin Core para transferir fundos encontrada."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "Nenhum Bitcoin Core encontrado."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "Falha de verificação"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "Dados não reconhecidos."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "Não suportado"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet não suportado."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Abrir no navegador da Web"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Endereço inválido"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "Montante não definido"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Montante abaixo do mínimo"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "Montante acima do limite"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Resposta inválida do Shapeshift"
-
diff --git a/i18n/po/ru/template-ru.po b/i18n/po/ru.po
similarity index 83%
rename from i18n/po/ru/template-ru.po
rename to i18n/po/ru.po
index cb4ec3a36..fbb2090cd 100644
--- a/i18n/po/ru/template-ru.po
+++ b/i18n/po/ru.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
-"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\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: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: ru\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: Russian\n"
"Language: ru\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-09 10:33-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -32,7 +32,7 @@ msgstr "{{feeRateStr}} транзакции"
#: www/views/modals/txp-details.html:102
msgid "- {{tx.feeRateStr}} of the transaction"
-msgstr "— {{tx.feeRateStr}} транзакции"
+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!"
@@ -41,7 +41,7 @@ msgstr "=896t7!"
#: www/views/mercadoLibre.html:18
#: www/views/mercadoLibre.html:40
msgid "Only redeemable on Mercado Livre (Brazil)"
-msgstr "Погасить можно только на Mercado Livre (Бразилия)"
+msgstr ""
#: src/js/controllers/feedback/send.js:27
#: www/views/feedback/complete.html:21
@@ -77,30 +77,6 @@ msgstr "Учётная запись"
msgid "Account Number"
msgstr "Номер учётной записи"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Мгновенные транзакции с низкой комиссией"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Недостаточно средств"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Изменить валюту"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Доступные средства"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Использовать все доступные средства"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Далее"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "Аккаунты"
@@ -160,7 +136,7 @@ msgstr "Пополнить счёт"
#: src/js/services/bitpayAccountService.js:78
msgid "Add this BitPay account ({{email}})?"
-msgstr "Добавить этот аккаунт BitPay ({{email}})?"
+msgstr ""
#: www/views/add.html:3
msgid "Add wallet"
@@ -187,7 +163,7 @@ msgstr "Адреса с балансом"
#: www/views/tab-settings.html:149
msgid "Advanced"
-msgstr "Расширенные"
+msgstr "Дополнительные возможности"
#: www/views/advancedSettings.html:3
msgid "Advanced Settings"
@@ -226,23 +202,9 @@ msgstr "Почти готово! Давайте проверим."
msgid "Alternative Currency"
msgstr "Альтернативная валюта"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Отображение цен"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Фиатная валюта"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Криптовалюта"
-
#: src/js/controllers/buyAmazon.js:98
msgid "Amazon.com is not available at this moment. Please try back later."
-msgstr "Сайт Amazon.com сейчас недоступен. Попробуйте позже."
+msgstr ""
#: www/views/amount.html:44
#: www/views/customAmount.html:34
@@ -260,7 +222,7 @@ msgstr "Слишком большая сумма"
#: www/views/includes/walletHistory.html:31
msgid "Amount too low to spend"
-msgstr "Сумма слишком мала, чтобы ее потратить"
+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."
@@ -272,7 +234,7 @@ msgstr "Любой, у кого есть доступ к вашему ключе
#: www/views/addresses.html:94
msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-msgstr "Приблизительная комиссия сети Биткойн для перевода баланса кошелька (с нормальным приоритетом)"
+msgstr ""
#: www/views/backupWarning.html:10
msgid "Are you being watched?"
@@ -308,7 +270,7 @@ 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 Card?"
+msgstr ""
#: src/js/controllers/preferencesBitpayCard.js:7
#: src/js/controllers/preferencesBitpayServices.js:20
@@ -341,7 +303,7 @@ msgstr "Укажите BIP32 для генерации адресов"
#: www/views/cashScan.html:25
msgid "BTC wallets"
-msgstr "Кошельки BTC"
+msgstr ""
#: www/views/preferences.html:34
msgid "Backup"
@@ -397,17 +359,17 @@ msgstr "Биткойн-адрес"
#: www/views/cashScan.html:4
msgid "Bitcoin Cash (BCH) Balances"
-msgstr "Балансы Bitcoin Cash (BCH)"
+msgstr ""
#: www/views/preferencesCash.html:3
#: www/views/tab-settings.html:47
msgid "Bitcoin Cash Support"
-msgstr "Поддержка Bitcoin Cash"
+msgstr ""
#: www/views/tab-home.html:98
#: www/views/tab-settings.html:115
msgid "Bitcoin Cash Wallets"
-msgstr "Кошельки Bitcoin Cash"
+msgstr ""
#: www/views/modals/chooseFeeLevel.html:4
#: www/views/preferencesFee.html:4
@@ -418,11 +380,11 @@ msgstr "Политика комиссии сети Биткойн"
#: www/views/tab-home.html:83
#: www/views/tab-settings.html:107
msgid "Bitcoin Core Wallets"
-msgstr "Кошельки Bitcoin Core"
+msgstr ""
#: src/js/services/incomingData.js:151
msgid "Bitcoin cash Payment"
-msgstr "Платеж Bitcoin Cash"
+msgstr ""
#: www/views/onboarding/tour.html:31
msgid "Bitcoin is a currency."
@@ -430,7 +392,7 @@ msgstr "Биткойн - это валюта."
#: www/views/onboarding/disclaimer.html:15
msgid "Bitcoin is different – it cannot be safely held with a bank or web service."
-msgstr "С биткойнами всё иначе: их нельзя безопасно хранить в банке или на веб-сервисе."
+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."
@@ -438,11 +400,11 @@ msgstr "Биткойн это безопасные, цифровые день
#: www/views/preferencesFee.html:11
msgid "Bitcoin transactions include a fee collected by miners on the network."
-msgstr "Транзакции с биткойнами включают в себя комиссию майнеров сети."
+msgstr "Bitcoin transactions include a fee collected by miners on the network."
#: www/views/buyAmazon.html:108
msgid "Bought {{amountUnitStr}}"
-msgstr "Куплено {{amountUnitStr}}"
+msgstr ""
#: www/views/modals/txp-details.html:36
msgid "Broadcast Payment"
@@ -471,7 +433,6 @@ msgid "Buy & Sell Bitcoin"
msgstr "Купить & продать биткойн"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "Купить биткойн"
@@ -520,7 +481,7 @@ msgid "Cannot Create Wallet"
msgstr "Не удаётся создать кошелёк"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
+msgid "Cannot join the same wallet more that once"
msgstr "Нельзя присоединиться к одному и тому же кошельку более одного раза"
#: www/views/includes/bitpayCardsCard.html:2
@@ -582,7 +543,7 @@ msgstr "Закрыть"
#: www/views/includes/cash.html:2
#: www/views/preferencesInformation.html:17
msgid "Coin"
-msgstr "Монета"
+msgstr ""
#: www/views/preferences.html:22
msgid "Color"
@@ -654,14 +615,10 @@ msgstr "Подключение к Glidera..."
msgid "Connection reset by peer"
msgstr "Соединение сброшено другой стороной"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "Контакты"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Сохраненные часто используемые адреса"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "Продолжить"
@@ -672,7 +629,7 @@ msgstr "Помочь в переводе"
#: src/js/controllers/confirm.js:130
msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-msgstr "«Copay» поддерживает только Bitcoin Cash с новой адресацией номеров версий"
+msgstr ""
#: src/js/services/bwcError.js:62
msgid "Copayer already in this wallet"
@@ -696,7 +653,6 @@ msgstr "Совладелец {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "Скопировано в буфер обмена"
@@ -715,7 +671,7 @@ msgstr "Скопировать в буфер обмена"
#: src/js/controllers/buyMercadoLibre.js:102
msgid "Could not access Gift Card Service"
-msgstr "Не удалось получить доступ к сервису подарочных карт"
+msgstr ""
#: www/views/tab-import-phrase.html:2
msgid "Could not access the wallet at the server. Please check:"
@@ -723,7 +679,7 @@ msgstr "Не удалось получить доступ к кошельку н
#: src/js/controllers/buyAmazon.js:102
msgid "Could not access to Amazon.com"
-msgstr "Невозможно получить доступ к Amazon.com"
+msgstr ""
#: src/js/services/profileService.js:511
msgid "Could not access wallet"
@@ -747,13 +703,13 @@ msgstr "Не удалось создать адрес"
#: src/js/controllers/topup.js:92
msgid "Could not create the invoice"
-msgstr "Невозможно создать инвойс"
+msgstr ""
#: src/js/controllers/buyAmazon.js:164
#: src/js/controllers/buyMercadoLibre.js:164
#: src/js/controllers/topup.js:142
msgid "Could not create transaction"
-msgstr "Невозможно создать транзакцию"
+msgstr ""
#: src/js/services/profileService.js:350
msgid "Could not create using the specified extended private key"
@@ -777,7 +733,7 @@ msgstr "Не удалось удалить предложенный платёж
#: src/js/controllers/cashScan.js:117
msgid "Could not duplicate"
-msgstr "Не удалось дублировать"
+msgstr ""
#: src/js/services/feeService.js:73
msgid "Could not get dynamic fee"
@@ -789,13 +745,13 @@ msgstr "Не удалось получить динамическую комис
#: src/js/controllers/modals/feeLevels.js:112
msgid "Could not get fee levels"
-msgstr "Не удалось получить комиссии"
+msgstr ""
#: src/js/controllers/buyAmazon.js:122
#: src/js/controllers/buyMercadoLibre.js:122
#: src/js/controllers/topup.js:100
msgid "Could not get the invoice"
-msgstr "Не удалось получить инвойс"
+msgstr ""
#: src/js/controllers/bitpayCard.js:66
msgid "Could not get transactions"
@@ -840,7 +796,7 @@ msgstr "Не удалось отправить платёж"
#: src/js/controllers/buyMercadoLibre.js:318
#: src/js/controllers/topup.js:299
msgid "Could not send transaction"
-msgstr "Невозможно отправить транзакцию"
+msgstr ""
#: www/views/walletDetails.html:210
msgid "Could not update transaction history"
@@ -863,7 +819,7 @@ msgstr "Создать общий кошелёк"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "Создать биткойн-кошелёк"
@@ -899,7 +855,7 @@ msgstr "Текущая комиссия для этой политики"
#: src/js/services/feeService.js:15
msgid "Custom"
-msgstr "Комиссия"
+msgstr ""
#: www/views/customAmount.html:9
msgid "Custom Amount"
@@ -907,7 +863,7 @@ msgstr "Сумма"
#: src/js/controllers/preferencesFee.js:85
msgid "Custom Fee"
-msgstr "Комиссия"
+msgstr ""
#: www/views/modals/mercadolibre-card-details.html:56
#: www/views/modals/txp-details.html:87
@@ -984,11 +940,11 @@ msgstr "Скачать"
#: www/views/cashScan.html:37
msgid "Duplicate for BCH"
-msgstr "Дубликат для BCH"
+msgstr ""
#: src/js/services/onGoingProcess.js:49
msgid "Duplicating wallet..."
-msgstr "Дублирование кошелька..."
+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."
@@ -1005,7 +961,7 @@ msgstr "Редактировать"
#: www/views/addressbook.add.html:29
#: www/views/addressbook.view.html:22
msgid "Email"
-msgstr "Адрес эл. почты"
+msgstr "Email"
#: www/views/preferencesNotifications.html:42
msgid "Email Address"
@@ -1017,7 +973,7 @@ msgstr "Достигнут предел пустых адресов. Новые
#: www/views/preferencesCash.html:17
msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-msgstr "Включить использование в программе и создание кошельков Bitcoin Cash."
+msgstr ""
#: www/views/tab-scan.html:19
msgid "Enable camera access in your device settings to get started."
@@ -1031,17 +987,13 @@ msgstr "Включить email-уведомления"
msgid "Enable push notifications"
msgstr "Включить push-уведомления"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Включить звук"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "Чтобы начать, включите камеру."
#: www/views/tab-settings.html:49
msgid "Enabled"
-msgstr "Включено"
+msgstr "Активировать"
#: src/js/services/walletService.js:1047
#: src/js/services/walletService.js:1062
@@ -1058,7 +1010,7 @@ msgstr "Введите сумму"
#: www/views/modals/chooseFeeLevel.html:41
msgid "Enter custom fee"
-msgstr "Ввести размер комиссии"
+msgstr ""
#: src/js/services/walletService.js:1029
msgid "Enter new spending password"
@@ -1168,7 +1120,7 @@ msgstr "Ошибка создания Подарочной карты"
#: src/js/controllers/buyAmazon.js:94
#: src/js/controllers/buyMercadoLibre.js:94
msgid "Error creating the invoice"
-msgstr "Ошибка при создании инвойса"
+msgstr ""
#: src/js/services/profileService.js:412
msgid "Error creating wallet"
@@ -1176,17 +1128,17 @@ msgstr "Ошибка создания кошелька"
#: src/js/controllers/confirm.js:296
msgid "Error getting SendMax information"
-msgstr "Ошибка при получении информации SendMax"
+msgstr ""
#: src/js/controllers/buyAmazon.js:136
#: src/js/controllers/buyMercadoLibre.js:136
#: src/js/controllers/topup.js:114
msgid "Error in Payment Protocol"
-msgstr "Ошибка в платежном протоколе"
+msgstr ""
#: src/js/controllers/bitpayCardIntro.js:14
msgid "Error pairing BitPay Account"
-msgstr "Ошибка при связывании с аккаунтом BitPay"
+msgstr ""
#: src/js/controllers/paperWallet.js:41
msgid "Error scanning funds:"
@@ -1198,7 +1150,7 @@ msgstr "Ошибка считывания кошелька:"
#: src/js/controllers/bitpayCardIntro.js:20
msgid "Error updating Debit Cards"
-msgstr "Ошибка обновления дебетовых карт"
+msgstr "Ошибка обновления Дебетовых Карт"
#: src/js/services/bwcError.js:143
msgid "Exceeded daily limit of $500 per user"
@@ -1210,12 +1162,12 @@ msgstr "Превышен дневной лимит в 500$ на пользова
#: www/views/modals/mercadolibre-card-details.html:34
#: www/views/modals/txp-details.html:119
msgid "Expired"
-msgstr "Просрочено"
+msgstr "Истекла"
#: www/views/modals/paypro.html:54
#: www/views/modals/txp-details.html:125
msgid "Expires"
-msgstr "Срок действия"
+msgstr "истёк"
#: www/views/preferencesAdvanced.html:21
msgid "Export Wallet"
@@ -1241,7 +1193,7 @@ msgstr "Расширенные открытые ключи"
#: src/js/services/onGoingProcess.js:20
msgid "Extracting Wallet information..."
-msgstr "Извлечение информации о кошельке..."
+msgstr ""
#: src/js/controllers/export.js:115
#: src/js/controllers/export.js:126
@@ -1262,11 +1214,11 @@ msgstr "Комиссия"
#: www/views/modals/chooseFeeLevel.html:75
msgid "Fee level"
-msgstr "Уровень комиссии"
+msgstr ""
#: src/js/controllers/modals/feeLevels.js:100
msgid "Fee level is not defined"
-msgstr "Уровень комиссии не задан"
+msgstr ""
#: www/views/confirm.html:79
#: www/views/modals/txp-details.html:99
@@ -1283,7 +1235,7 @@ msgstr "Подключение учетной записи BitPay..."
#: src/js/services/onGoingProcess.js:21
msgid "Fetching payment information"
-msgstr "Получение платежной информации"
+msgstr ""
#: www/views/export.html:14
#: www/views/import.html:16
@@ -1316,7 +1268,6 @@ msgstr "Для целей ревизии"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "От"
@@ -1326,7 +1277,7 @@ msgstr "С аккаунта BitPay"
#: www/views/tab-import-phrase.html:57
msgid "From Hardware Wallet"
-msgstr "Из аппаратного кошелька"
+msgstr ""
#: www/views/tab-export-qrCode.html:5
msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code"
@@ -1342,7 +1293,7 @@ msgstr "Обнаружены средства:"
#: www/views/topup.html:49
msgid "Funds to be added"
-msgstr "Добавляемые средства"
+msgstr ""
#: www/views/paperWallet.html:51
msgid "Funds transferred"
@@ -1350,7 +1301,7 @@ msgstr "Средства переведены"
#: www/views/topup.html:103
msgid "Funds were added to debit card"
-msgstr "Средства добавлены на дебетовую карту"
+msgstr ""
#: www/views/paperWallet.html:22
msgid "Funds will be transferred to"
@@ -1377,6 +1328,10 @@ msgid "Get news and updates from BitPay"
msgstr "Получать письма с новостями от BitPay"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr "Начать"
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Начать"
@@ -1392,20 +1347,20 @@ msgstr "Получение информации о комиссиях..."
#: www/views/buyAmazon.html:43
#: www/views/buyMercadoLibre.html:42
msgid "Gift Card"
-msgstr "Подарочная карта"
+msgstr ""
#: www/views/modals/mercadolibre-card-details.html:30
#: www/views/modals/mercadolibre-card-details.html:35
msgid "Gift Card is not available to use anymore"
-msgstr "Подарочную карту больше использовать нельзя"
+msgstr ""
#: src/js/controllers/buyAmazon.js:204
msgid "Gift card expired"
-msgstr "Срок действия подарочной карты истек"
+msgstr ""
#: www/views/buyAmazon.html:111
msgid "Gift card generated and ready to use."
-msgstr "Подарочная карта сформирована и готова к использованию."
+msgstr ""
#: src/js/controllers/bitpayCard.js:114
#: src/js/controllers/bitpayCard.js:124
@@ -1451,7 +1406,7 @@ msgstr "Аппаратный кошелёк"
#: src/js/controllers/create.js:180
#: src/js/controllers/join.js:145
msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr "Bitcoin Cash еще не поддерживает аппаратные кошельки"
+msgstr ""
#: www/views/tab-settings.html:20
msgid "Help & Support"
@@ -1482,7 +1437,7 @@ msgstr "Пропустить следующие шаги"
#: www/views/tab-import-hardware.html:31
#: www/views/tab-import-phrase.html:36
msgid "Hide advanced options"
-msgstr "Скрыть расширенные параметры"
+msgstr "Скрыть дополнительные параметры"
#: www/views/tabs.html:3
msgid "Home"
@@ -1593,7 +1548,7 @@ msgstr "Для проверки резервной копии требуется
#: www/views/mercadoLibreCards.html:24
#: www/views/modals/mercadolibre-card-details.html:29
msgid "Inactive"
-msgstr "Неактивна"
+msgstr ""
#: www/views/includes/walletItem.html:9
#: www/views/includes/walletList.html:6
@@ -1617,13 +1572,13 @@ msgstr "Некорректный формат QR-кода"
#: src/js/services/bwcError.js:113
msgid "Incorrect network address"
-msgstr "Неверный сетевой адрес"
+msgstr ""
#: src/js/controllers/confirm.js:114
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "Недостаточно подтвержденных средств"
+msgstr "Недостаточно средств"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
@@ -1633,7 +1588,7 @@ msgstr "Недостаточно средств на комиссию"
#: www/views/tab-settings.html:123
msgid "Integrations"
-msgstr "Интеграции"
+msgstr ""
#: www/views/includes/walletHistory.html:49
msgid "Invalid"
@@ -1672,7 +1627,7 @@ msgstr "Приглашение присоединиться к кошельку
#: www/views/mercadoLibreCards.html:20
#: www/views/modals/mercadolibre-card-details.html:48
msgid "Invoice expired"
-msgstr "Срок действия инвойса истек"
+msgstr ""
#: src/js/controllers/feedback/send.js:79
msgid "Is there anything we could do better?"
@@ -1733,7 +1688,7 @@ msgstr "Прошедший месяц"
#: www/views/preferencesCash.html:18
#: www/views/tx-details.html:94
msgid "Learn more"
-msgstr "Подробнее"
+msgstr ""
#: www/views/backup.html:43
msgid "Let's verify your backup phrase."
@@ -1774,7 +1729,7 @@ msgstr "Действует блокировка. Пожалуйста, подо
#: www/views/includes/logOptions.html:3
msgid "Log options"
-msgstr "Параметры журнала"
+msgstr ""
#: www/views/modals/bitpay-card-confirmation.html:14
msgid "Log out"
@@ -1782,7 +1737,7 @@ msgstr "Bыйти"
#: www/views/addresses.html:87
msgid "Low amount inputs"
-msgstr "Входы с малыми суммами"
+msgstr ""
#: www/views/includes/walletHistory.html:27
msgid "Low fees"
@@ -1814,11 +1769,11 @@ msgstr "Памятка"
#: www/views/mercadoLibre.html:6
msgid "Mercado Livre Brazil Gift Cards"
-msgstr "Подарочные карты Mercado Livre (Бразилия)"
+msgstr ""
#: src/js/controllers/buyMercadoLibre.js:98
msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr "Сервис подарочных карт Mercadolibre сейчас недоступен. Попробуйте позже."
+msgstr ""
#: www/views/modals/txp-details.html:131
msgid "Merchant Message"
@@ -1828,7 +1783,7 @@ msgstr "Сообщение от продавца"
#: www/views/buyMercadoLibre.html:54
#: www/views/topup.html:63
msgid "Miner Fee"
-msgstr "Комиссия майнера"
+msgstr ""
#: src/js/services/bwcError.js:134
msgid "Missing parameter"
@@ -1871,7 +1826,7 @@ msgstr "Название"
#: www/views/buyMercadoLibre.html:48
#: www/views/topup.html:56
msgid "Network Cost"
-msgstr "Затраты сети"
+msgstr ""
#: src/js/services/bwcError.js:47
msgid "Network error"
@@ -1900,7 +1855,7 @@ msgstr "Нет кошельков"
#: src/js/controllers/buyAmazon.js:115
#: src/js/controllers/buyMercadoLibre.js:115
msgid "No access key defined"
-msgstr "Ключ доступа не задан"
+msgstr ""
#: www/views/onboarding/backupRequest.html:5
msgid "No backup, no bitcoin."
@@ -1912,7 +1867,7 @@ msgstr "Нет контактов"
#: www/views/preferencesLogs.html:16
msgid "No entries for this log level"
-msgstr "Для этого уровня ведения журнала записей нет"
+msgstr ""
#: www/views/preferencesExternal.html:12
msgid "No hardware information available."
@@ -1933,7 +1888,7 @@ msgstr "Нет недавних транзакций"
#: src/js/controllers/buyAmazon.js:44
#: src/js/controllers/topup.js:47
msgid "No signing proposal: No private key"
-msgstr "Нет предложения по подписыванию: нет приватного ключа"
+msgstr ""
#: www/views/walletDetails.html:204
msgid "No transactions yet"
@@ -1952,7 +1907,7 @@ msgstr "Не выбран кошелёк"
#: src/js/controllers/confirm.js:85
#: src/js/controllers/topup.js:265
msgid "No wallets available"
-msgstr "Нет кошельков"
+msgstr ""
#: www/views/paperWallet.html:45
msgid "No wallets available to receive funds"
@@ -1960,15 +1915,15 @@ msgstr "Некуда перевести средства"
#: www/views/cashScan.html:15
msgid "No wallets eligible for Bitcoin Cash support"
-msgstr "Нет кошельков с возможностью поддержки Bitcoin Cash"
+msgstr ""
#: src/js/controllers/cashScan.js:58
msgid "Non BIP44 wallet"
-msgstr "Не является кошельком BIP44"
+msgstr ""
#: www/views/cashScan.html:46
msgid "Non eligible BTC wallets"
-msgstr "Неподходящие кошельки BTC"
+msgstr ""
#: src/js/services/feeService.js:12
msgid "Normal"
@@ -2001,7 +1956,7 @@ msgstr "Примечание"
#: www/views/backup.html:19
msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-msgstr "Примечание: если этот кошелёк BCH — дубликат кошелька BTC, то у них одинаковое ключевое словосочетание."
+msgstr ""
#: www/views/modals/wallets.html:25
msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin"
@@ -2014,15 +1969,15 @@ msgstr "Уведомления"
#: www/views/onboarding/collectEmail.html:9
msgid "Notifications by email"
-msgstr "Уведомления по эл. почте"
+msgstr ""
#: www/views/tx-details.html:117
msgid "Notify me if confirmed"
-msgstr "Уведомлять при подтверждении"
+msgstr ""
#: www/views/preferencesNotifications.html:24
msgid "Notify me when transactions are confirmed"
-msgstr "Уведомлять меня при подтверждении транзакций"
+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."
@@ -2060,7 +2015,7 @@ msgstr "О, нет!"
#: src/js/controllers/buyMercadoLibre.js:306
msgid "Ok"
-msgstr "OK"
+msgstr ""
#: www/views/tab-home.html:39
msgid "On this screen you can see all your wallets, accounts, and assets."
@@ -2090,7 +2045,7 @@ msgstr "Откройте проект GitHub"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "Открыть обзор"
+msgstr "Открыть Insight"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2106,11 +2061,11 @@ msgstr "Перейти на сайт"
#: src/js/controllers/preferencesCash.js:32
msgid "Open bitcoincash.org?"
-msgstr "Открыть bitcoincash.org?"
+msgstr ""
#: src/js/controllers/cashScan.js:18
msgid "Open the recovery tool."
-msgstr "Открыть инструмент восстановления."
+msgstr ""
#: www/views/tab-receive.html:27
msgid "Open wallet"
@@ -2137,7 +2092,7 @@ msgstr "Пароль"
#: src/js/controllers/import.js:98
msgid "Password required. Make sure to enter your password in advanced options"
-msgstr "Необходим пароль. Убедитесь, что вы ввели ваш пароль в расширенных настройках"
+msgstr "Необходим пароль. Убедитесь, что вы ввели ваш пароль в дополнительных настройках"
#: www/views/join.html:33
msgid "Paste invitation here"
@@ -2162,7 +2117,7 @@ msgstr "Платёж принят"
#: www/views/confirm.html:25
msgid "Payment Expires:"
-msgstr "Срок платежа:"
+msgstr "Платёж истекает:"
#: www/views/modals/txp-details.html:6
msgid "Payment Proposal"
@@ -2200,10 +2155,6 @@ msgstr "Платёж отклонён"
msgid "Payment Sent"
msgstr "Платёж отправлен"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Поделиться транзакцией"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "Платёж принят, но пока не отправлен"
@@ -2214,20 +2165,20 @@ msgstr "Платёж принят и будет отправлен Glidera. В
#: src/js/services/incomingData.js:152
msgid "Payment address was translated to new Bitcoin Cash address format:"
-msgstr "Платежный адрес был переведен в новый формат адреса Bitcoin Cash:"
+msgstr ""
#: www/views/modals/txp-details.html:107
msgid "Payment details"
msgstr "Детали платежа"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
+msgid "Payment request"
msgstr "Запрос платежа"
#: www/views/mercadoLibreCards.html:22
#: www/views/modals/mercadolibre-card-details.html:39
msgid "Pending"
-msgstr "Ожидание"
+msgstr ""
#: www/views/proposals.html:4
msgid "Pending Proposals"
@@ -2281,7 +2232,7 @@ msgstr "Пожалуйста, выберите ваш файл резервно
#: www/views/bitpayCard.html:81
msgid "Pre-Auth Holds"
-msgstr "Предв. авторизация"
+msgstr ""
#: www/views/tab-settings.html:40
msgid "Preferences"
@@ -2339,11 +2290,11 @@ msgstr "Предложенные платежи"
#: src/js/controllers/buyAmazon.js:282
msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
-msgstr "Ограничение на сумму покупки — {{limitPerDay}} {{currency}} в день"
+msgstr ""
#: src/js/controllers/buyMercadoLibre.js:281
msgid "Purchase amount must be a value between 50 and 2000"
-msgstr "Сумма покупки должна быть от 50 до 2000"
+msgstr ""
#: www/views/onboarding/notifications.html:3
msgid "Push Notifications"
@@ -2381,11 +2332,11 @@ msgstr "Показать больше"
#: src/js/controllers/preferences.js:65
#: src/js/controllers/tx-details.js:54
msgid "Read more in our Wiki"
-msgstr "Подробнее — в нашей вики"
+msgstr ""
#: src/js/controllers/cashScan.js:61
msgid "Read only wallet"
-msgstr "Кошелёк только для чтения"
+msgstr ""
#: www/views/tab-receive.html:3
#: www/views/tabs.html:7
@@ -2394,7 +2345,7 @@ msgstr "Получить"
#: www/views/customAmount.html:44
msgid "Receive in"
-msgstr "Куда получить:"
+msgstr ""
#: www/views/includes/walletHistory.html:24
#: www/views/tx-details.html:18
@@ -2443,7 +2394,7 @@ msgstr "Воссоздаю кошелёк..."
#: www/views/modals/mercadolibre-card-details.html:22
msgid "Redeem now"
-msgstr "Погасить"
+msgstr ""
#: src/js/controllers/modals/txpDetails.js:63
#: src/js/controllers/tx-details.js:80
@@ -2544,7 +2495,7 @@ msgstr "Просканировать адреса для обнаружения
#: www/views/modals/fingerprintCheck.html:11
msgid "Scan again"
-msgstr "Сканировать еще раз"
+msgstr ""
#: src/js/services/fingerprintService.js:56
msgid "Scan your fingerprint please"
@@ -2552,7 +2503,7 @@ msgstr "Пожалуйста, отсканируйте ваш отпечаток
#: www/views/preferencesCash.html:23
msgid "Scan your wallets for Bitcoin Cash"
-msgstr "Искать в ваших кошельках Bitcoin Cash"
+msgstr ""
#: src/js/services/onGoingProcess.js:30
msgid "Scanning Wallet funds..."
@@ -2560,7 +2511,7 @@ msgstr "Сканирование адресов кошелька..."
#: www/views/includes/walletList.html:11
msgid "Scanning funds..."
-msgstr "Сканирование средств..."
+msgstr ""
#: www/views/includes/screenshotWarningModal.html:7
msgid "Screenshots are not secure"
@@ -2574,14 +2525,6 @@ msgstr "Поиск транзакций"
msgid "Search or enter bitcoin address"
msgstr "Найти или ввести биткойн-адрес"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Буфер обмена"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Буфер обмена пуст"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "Поиск транзакций"
@@ -2596,7 +2539,7 @@ msgstr "Безопасность"
#: www/views/modals/mercadolibre-card-details.html:64
msgid "See invoice"
-msgstr "Просмотр инвойса"
+msgstr ""
#: www/views/tab-import-file.html:7
msgid "Select a backup file"
@@ -2640,75 +2583,16 @@ msgid "Send by email"
msgstr "Отправить на email"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "Отправить от"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Получатель"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Вставить из буфера обмена"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Вставить адрес"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Перевод между кошельками"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Сканировать QR код"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Отправляйте биткойны еще быстрее!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Сохраняйте часто используемые адреса кошельков и отправляйте на них биткойны одним нажатием"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Добавить первый контакт"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Ваш кошелёк пуст"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "Чтобы начать работу, купите Bitcoin Cash (BCH) или Bitcoin Core (BTC), или поделитесь вашим адресом."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "Вы можете получать биткойны с любого кошелька или сервиса."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr "Чтобы начать работу, вам нужно создать кошелёк и получить биткойн."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Купить биткойны сейчас"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-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 "Отправить платеж на этот адрес"
+msgstr ""
#: www/views/feedback/rateApp.html:17
msgid "Send us feedback instead"
@@ -2759,7 +2643,7 @@ msgstr "Ответ сервера не может быть проверен"
#: src/js/controllers/buyAmazon.js:97
#: src/js/controllers/buyMercadoLibre.js:97
msgid "Service not available"
-msgstr "Сервис недоступен"
+msgstr ""
#: www/views/includes/homeIntegrations.html:3
msgid "Services"
@@ -2779,7 +2663,7 @@ msgstr "Задайте пароль"
#: src/js/controllers/preferencesFee.js:85
msgid "Set your own fee in satoshis/byte"
-msgstr "Задайте собственную комиссию в сатоши/байт"
+msgstr ""
#: www/views/tab-settings.html:3
#: www/views/tabs.html:19
@@ -2820,7 +2704,7 @@ msgstr "Показать адрес"
#: www/views/tab-import-hardware.html:30
#: www/views/tab-import-phrase.html:35
msgid "Show advanced options"
-msgstr "Показать расширенные параметры"
+msgstr "Показать дополнительные параметры"
#: www/views/tab-send.html:37
msgid "Show bitcoin address"
@@ -2855,24 +2739,24 @@ msgstr "Пропустить"
#: src/js/controllers/confirm.js:371
#: src/js/controllers/modals/txpDetails.js:47
msgid "Slide to accept"
-msgstr "Провести пальцем — принять"
+msgstr ""
#: www/views/buyAmazon.html:96
msgid "Slide to buy"
-msgstr "Провести пальцем — купить"
+msgstr ""
#: src/js/controllers/confirm.js:365
msgid "Slide to pay"
-msgstr "Провести пальцем — оплатить"
+msgstr ""
#: src/js/controllers/confirm.js:377
#: src/js/controllers/modals/txpDetails.js:40
msgid "Slide to send"
-msgstr "Провести пальцем — отправить"
+msgstr ""
#: www/views/cashScan.html:56
msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-msgstr "Некоторые из ваших кошельков не могут поддерживать Bitcoin Cash. Можно попытаться получить доступ к BCH из этих кошельков через"
+msgstr ""
#: src/js/controllers/create.js:88
#: src/js/controllers/join.js:71
@@ -2893,7 +2777,7 @@ msgstr "Необходим платёжный пароль"
#: www/views/walletDetails.html:173
msgid "Spending this balance will need significant Bitcoin network fees"
-msgstr "Чтобы потратить эту сумму, потребуются значительные комиссии сети Биткойн"
+msgstr ""
#: www/views/tab-send.html:28
msgid "Start sending bitcoin"
@@ -2906,7 +2790,7 @@ msgstr "Блокировка при запуске"
#: www/views/mercadoLibreCards.html:21
#: www/views/modals/mercadolibre-card-details.html:42
msgid "Still pending"
-msgstr "Еще в ожидании"
+msgstr ""
#: www/views/topup.html:101
msgid "Success"
@@ -2918,20 +2802,15 @@ msgstr "Очень экономичная"
#: www/views/preferencesCash.html:11
msgid "Support Bitcoin Cash"
-msgstr "Поддержка Bitcoin Cash"
+msgstr ""
#: www/views/paperWallet.html:7
msgid "Sweep"
msgstr "Считать"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "Пополнить с бумажного кошелька"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
+msgid "Sweep paper wallet"
msgstr "Пополнить с бумажного кошелька"
#: src/js/services/onGoingProcess.js:33
@@ -2953,7 +2832,7 @@ msgstr "Коснитесь и удерживайте, чтобы показат
#: www/views/includes/walletInfo.html:3
msgid "Tap to recreate"
-msgstr "Чтобы пересоздать, нажмите сюда"
+msgstr ""
#: www/views/includes/walletInfo.html:4
msgid "Tap to retry"
@@ -2992,7 +2871,7 @@ 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 "Нам интересно выслушать вас. И мы хотели бы получить от вас пять звезд — что нам нужно усовершенствовать?"
+msgstr ""
#: src/js/services/ledger.js:152
msgid "The Ledger Chrome application is not installed"
@@ -3016,7 +2895,7 @@ msgstr "Путь деривации"
#: www/views/onboarding/tour.html:37
msgid "The exchange rate changes with the market."
-msgstr "Обменные курс меняются."
+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."
@@ -3024,7 +2903,7 @@ 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). Когда один из неиспользуемых адресов получит платеж, будет создан новый адрес, который отобразится на вкладке «Получить»."
+msgstr ""
#: src/js/controllers/onboarding/terms.js:21
msgid "The official English Terms of Service are available on the BitPay website."
@@ -3055,7 +2934,7 @@ 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 сформированных подряд адресов не будут содержать средств. Чтобы без риска сформировать больше адресов, сделайте платеж на один из неиспользуемых уже сформированных адресов."
+msgstr ""
#: src/js/services/bwcError.js:98
msgid "The spend proposal is not pending"
@@ -3067,7 +2946,7 @@ 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 "История транзакций и каждая новая входящая транзакция кэшируются в приложении. Эта функция очищает его и снова проводит синхронизацию с сервером"
+msgstr ""
#: www/views/tab-import-phrase.html:6
msgid "The wallet service URL"
@@ -3086,7 +2965,7 @@ 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 "Очевидно, мы что-то делаем неправильно."
+msgstr ""
#: src/js/controllers/feedback/rateCard.js:38
msgid "This app is fantastic!"
@@ -3094,25 +2973,17 @@ msgstr "Замечательное приложение!"
#: www/views/onboarding/tour.html:47
msgid "This app stores your bitcoin with cutting-edge security."
-msgstr "Это приложение хранит биткойны с высочайшим уровнем безопасности."
+msgstr ""
#: src/js/controllers/confirm.js:523
msgid "This bitcoin payment request has expired."
-msgstr "Срок этого запроса платежа истёк."
-
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "Срок платежа:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "Срок запроса на платеж истёк"
+msgstr "Этот запрос платежа истёк."
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds."
-msgstr "Этот пароль восстановить нельзя. Если потерять пароль, вы не сможете восстановить свои средства."
+msgstr ""
#: www/views/backup.html:31
msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed."
@@ -3120,11 +2991,11 @@ msgstr "Это ключевое словосочетание было созда
#: www/views/tx-details.html:91
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 "Сумма транзакции слишком мала в сравнении с текущими комиссиями Биткойн. Чтобы потратить эти средства, понадобится комиссия сети Биткойн, сопоставимая с суммой транзакции."
+msgstr ""
#: www/views/tx-details.html:87
msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender"
-msgstr "Из-за низкой комиссии, установленной отправителем, на подтверждение транзакции может уйти много времени, или она может быть отброшена"
+msgstr ""
#: www/views/walletDetails.html:109
#: www/views/walletDetails.html:29
@@ -3149,37 +3020,21 @@ msgstr "Кому"
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}}"
+msgstr ""
#: src/js/services/onGoingProcess.js:48
msgid "Top up in progress..."
-msgstr "Выполняется пополнение..."
+msgstr ""
#: src/js/controllers/topup.js:206
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-msgstr "Пополнить дебетовую карту ({{cardLastNumber}}) на {{amountStr}}"
-
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "Начать обмен ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Обмен BTC на BCH за пару минут."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "Для начала нужно добавить средства в кошелёк."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "Обмен происходит быстро. Итоговая сумма поступит вам в кошелёк."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "Услуга предоставляется сторонней компанией ShapeShift, которая взимает небольшую комиссию. Комиссия будет показана перед началом транзакции."
+msgstr ""
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
@@ -3198,7 +3053,7 @@ msgstr "Количество совладельцев"
#: www/views/addresses.html:81
msgid "Total wallet inputs"
-msgstr "Всего входов на кошельке"
+msgstr ""
#: src/js/services/fingerprintService.js:63
#: src/js/services/fingerprintService.js:68
@@ -3211,7 +3066,7 @@ msgstr "Транзакция"
#: www/views/confirm.html:126
msgid "Transaction Created"
-msgstr "Транзакция создана"
+msgstr ""
#: www/views/preferencesAdvanced.html:29
#: www/views/preferencesHistory.html:3
@@ -3226,11 +3081,11 @@ msgstr "Транзакция уже отправлена"
#: src/js/controllers/buyMercadoLibre.js:301
#: src/js/controllers/topup.js:281
msgid "Transaction has not been created"
-msgstr "Транзакция не создана"
+msgstr ""
#: www/views/topup.html:104
msgid "Transaction initiated"
-msgstr "Транзакция начата"
+msgstr ""
#: src/js/controllers/tx-details.js:119
msgid "Transaction not available at this time"
@@ -3243,7 +3098,7 @@ msgstr "Транзакция не обнаружена"
#: www/views/modals/chooseFeeLevel.html:55
msgid "Transactions without fee are not supported."
-msgstr "Транзакции без комиссии не поддерживаются."
+msgstr ""
#: src/js/controllers/paperWallet.js:109
msgid "Transfer to"
@@ -3337,7 +3192,7 @@ msgstr "Посмотреть Условия обслуживания"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "Просмотр транзакции на странице Explorer.Bitcoin.com"
+msgstr "Просмотреть транзакцию на Insight"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3349,7 +3204,7 @@ msgstr "Посмотреть в блокчейне"
#: www/views/mercadoLibre.html:26
msgid "Visit mercadolivre.com.br →"
-msgstr "Посетить mercadolivre.com.br →"
+msgstr ""
#: www/views/walletDetails.html:182
msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet."
@@ -3411,7 +3266,7 @@ msgstr "Информация о кошельке"
#: www/views/addresses.html:76
msgid "Wallet Inputs"
-msgstr "Входы на кошельке"
+msgstr ""
#: www/views/join.html:26
msgid "Wallet Invitation"
@@ -3465,7 +3320,7 @@ msgstr "Кошелёк уже существует"
#: src/js/services/profileService.js:516
msgid "Wallet already in {{appName}}"
-msgstr "Кошелёк уже в приложении {{appName}}"
+msgstr ""
#: www/views/includes/walletActivity.html:6
msgid "Wallet created"
@@ -3512,11 +3367,11 @@ 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. Пересоздайте кошелёк воспользовавшись расширенными параметрами, чтобы указать ключевое словосочетание"
+msgstr "Кошелёк не зарегистрирован на сервере Bitcore. Пересоздайте кошелёк воспользовавшись дополнительными параметрами, чтобы указать ключевое словосочетание"
#: www/views/backup.html:12
msgid "Wallet recovery phrase not available"
-msgstr "Ключевое словосочетание кошелька недоступно"
+msgstr ""
#: src/js/services/bwcError.js:50
msgid "Wallet service not found"
@@ -3557,7 +3412,7 @@ 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}}. Как мы можем усовершенствовать приложение?"
+msgstr ""
#: www/views/includes/incomingDataMenu.html:6
msgid "Website"
@@ -3565,7 +3420,7 @@ 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."
+msgstr ""
#: www/views/preferencesAlias.html:11
msgid "What do you call this wallet?"
@@ -3585,7 +3440,7 @@ msgstr "Почему?"
#: www/views/feedback/rateApp.html:10
msgid "Would you be willing to rate {{appName}} in the app store?"
-msgstr "Хотите оценить приложение {{appName}} в магазине приложений?"
+msgstr ""
#: www/views/onboarding/notifications.html:4
msgid "Would you like to receive push notifications about payments?"
@@ -3613,7 +3468,7 @@ 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. Мы будем рады сотрудничать с вами!"
+msgstr ""
#: www/views/tab-scan.html:16
msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more."
@@ -3621,19 +3476,19 @@ 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."
+msgstr ""
#: www/views/onboarding/tour.html:19
msgid "You can spend bitcoin at millions of websites and stores worldwide."
-msgstr "Можно тратить биткойны на миллионах веб-сайтов и в магазинах по всему миру."
+msgstr ""
#: www/views/backup.html:15
msgid "You can still export it from Advanced > Export."
-msgstr "Вы можете экспортировать её в меню «Расширенные > Экспорт»."
+msgstr "Вы можете экспортировать её в Дополнительные параметры > Экспорт."
#: www/views/onboarding/tour.html:32
msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds."
-msgstr "Можно обменивать их на другую валюту, например, доллары США, евро или фунты."
+msgstr ""
#: www/views/onboarding/tour.html:46
msgid "You control your bitcoin."
@@ -3641,11 +3496,11 @@ msgstr "Вы контролируете Ваши bitcoin-ы."
#: www/views/modals/chooseFeeLevel.html:64
msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte."
-msgstr "Не следует устанавливать комиссию выше, чем {{maxFeeRecommended}} сатоши/ байт."
+msgstr ""
#: www/views/modals/bitpay-card-confirmation.html:5
msgid "You will need to log back for fill in your BitPay Card."
-msgstr "Для заполнения карты BitPay Card вам нужно будет снова войти."
+msgstr ""
#: www/views/preferencesNotifications.html:34
msgid "You'll receive email notifications about payments sent and received from your wallets."
@@ -3653,7 +3508,7 @@ 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 "Ваша карта BitPay Card готова. Пополните карту и пользуйтесь ей в магазинах и банкоматах по всему миру."
+msgstr ""
#: www/views/mercadoLibre.html:57
#: www/views/mercadoLibreCards.html:6
@@ -3670,7 +3525,7 @@ msgstr "Ваш кошелёк готов!"
#: www/views/modals/chooseFeeLevel.html:61
msgid "Your fee is lower than recommended."
-msgstr "Ваша комиссия ниже рекомендованной."
+msgstr ""
#: www/views/feedback/send.html:42
msgid "Your ideas, feedback, or comments"
@@ -3691,11 +3546,11 @@ msgstr "Ваш пароль"
#: www/views/buyAmazon.html:102
msgid "Your purchase could not be completed"
-msgstr "Покупку выполнить не удалось"
+msgstr ""
#: www/views/buyAmazon.html:105
msgid "Your purchase was added to the list of pending"
-msgstr "Покупка была добавлена в список ожидания"
+msgstr ""
#: www/views/onboarding/backupRequest.html:10
msgid "Your wallet is never saved to cloud storage or standard device backups."
@@ -3717,7 +3572,7 @@ msgstr "[Баланс скрыт]"
#: www/views/walletDetails.html:141
#: www/views/walletDetails.html:61
msgid "[Scanning Funds]"
-msgstr "[Сканирование средств]"
+msgstr ""
#: src/js/controllers/bitpayCardIntro.js:11
msgid "add your BitPay Visa card(s)"
@@ -3741,15 +3596,15 @@ msgstr "Подготавливается..."
#: www/views/cashScan.html:57
msgid "recovery tool."
-msgstr "инструмент восстановления."
+msgstr ""
#: src/js/controllers/buyAmazon.js:239
msgid "{{amountStr}} for Amazon.com Gift Card"
-msgstr "{{amountStr}} за подарочную карту Amazon.com"
+msgstr ""
#: src/js/controllers/buyMercadoLibre.js:237
msgid "{{amountStr}} for Mercado Livre Brazil Gift Card"
-msgstr "{{amountStr}} за подарочную карту Mercado Livre (Бразилия)"
+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)."
@@ -3761,7 +3616,7 @@ msgstr "{{fee}} будет использовано для оплаты коми
#: www/views/confirm.html:85
msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-msgstr "{{tx.txp[wallet.id].feeRatePerStr}} от отправляемой суммы"
+msgstr ""
#: www/views/walletDetails.html:218
msgid "{{updatingTxHistoryProgress}} transactions downloaded"
@@ -3772,172 +3627,3 @@ msgstr "{{updatingTxHistoryProgress}} транзакций загружено"
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.m}}-из-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Сообщество"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Bitcoin.com Twitter"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Обзор Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Игры Bitcoin Cash"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "Поделиться программой «Кошелёк»"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "Новости"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Пул для майнинга"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Инструменты"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Динамика курса биткойна"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Bitcoin Cash бесплатно"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "Ваши кошельки готовы!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "Адрес не содержит сведений о валюте. Проверьте, правильную ли валюту вы отправляете."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Проверка транзакции"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "Вы отправляете"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "Вы меняете"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "Куда:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Добавить личное сообщение"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Предложено продавцом:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Вводите текст сюда"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Личное сообщение:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "менее 1 копейки"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "По этому инвойсу платежи больше не принимаются"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "Отправить максимальную сумму"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "Неизвестная ошибка."
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "Не найден кошелек Bitcoin Cash для перевода средств."
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "Не найден Bitcoin Cash."
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "Найден Bitcoin Core:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "Не найден кошелек Bitcoin Core для перевода средств."
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "Не найден Bitcoin Core."
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "Ошибка сканирования"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "Данные не распознаны."
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "Не поддерживается"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "Testnet не поддерживается."
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "URL-адрес"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "Открыть в веб-браузере"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "Неверный адрес"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "Сумма не задана"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "Сумма ниже минимума"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "Сумма больше ограничения"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Неправильный ответ от Shapeshift"
-
diff --git a/i18n/po/sv-SE/template-sv-SE.po b/i18n/po/sv-SE/template-sv-SE.po
deleted file mode 100644
index b80fca04b..000000000
--- a/i18n/po/sv-SE/template-sv-SE.po
+++ /dev/null
@@ -1,3943 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
-"X-Crowdin-Language: sv-SE\n"
-"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
-"Language-Team: Swedish\n"
-"Language: sv\n"
-"PO-Revision-Date: 2018-09-06 16:45\n"
-
-#: www/views/modals/paypro.html:34
-msgid "(Trusted)"
-msgstr "(Betrodd)"
-
-#: www/views/includes/txp.html:23
-#: www/views/includes/walletHistory.html:64
-msgid "(possible double spend)"
-msgstr "(Möjlig dubbelbetalning)"
-
-#: www/views/modals/txp-details.html:159
-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 "* Det går att ta bort ett betalbegäran om 1) Du är skaparen och ingen annan har undertecknat, eller 2) 24 timmar har gått sedan betalbegäran skapades"
-
-#: www/views/tx-details.html:82
-msgid "- {{btx.feeRateStr}} of the transaction"
-msgstr "-{{btx.feeRateStr}} av transaktionen"
-
-#: www/views/modals/txp-details.html:102
-msgid "- {{tx.feeRateStr}} of the transaction"
-msgstr "-{{tx.feeRateStr}} av transaktionen"
-
-#: 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 "Fem stjärnor hjälper oss att göra {{appName}} bättre och mer åtkomlig, det gör att fler kan upptäcka vår app!"
-
-#: www/views/mercadoLibre.html:18
-#: www/views/mercadoLibre.html:40
-msgid "Only redeemable on Mercado Livre (Brazil)"
-msgstr "Only redeemable on Mercado Livre (Brazil)"
-
-#: 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:401
-msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded."
-msgstr ""
-
-#: src/js/controllers/confirm.js:395
-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 "Om appen"
-
-#: src/js/controllers/modals/txpDetails.js:62
-#: src/js/controllers/tx-details.js:79
-msgid "Accepted"
-msgstr "Accepterad"
-
-#: www/views/preferencesInformation.html:72
-msgid "Account"
-msgstr "Konto"
-
-#: www/views/join.html:72
-#: www/views/tab-create-personal.html:45
-#: www/views/tab-create-shared.html:74
-#: www/views/tab-import-hardware.html:19
-msgid "Account Number"
-msgstr "Kontonummer"
-
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Direkta transaktioner med låga avgifter"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Otillräckliga medel"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Ändra valuta"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Tillgängliga medel"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Använd alla tillgängliga medel"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Nästa"
-
-#: www/views/preferencesBitpayServices.html:23
-msgid "Accounts"
-msgstr "Konton"
-
-#: www/views/bitpayCard.html:56
-msgid "Activity"
-msgstr "Aktivitet"
-
-#: src/js/services/bitpayAccountService.js:83
-msgid "Add Account"
-msgstr "Lägg till konto"
-
-#: src/js/services/bitpayAccountService.js:69
-msgid "Add BitPay Account?"
-msgstr "Lägg till BitPay-konto?"
-
-#: www/views/addressbook.add.html:4
-#: www/views/addressbook.html:22
-msgid "Add Contact"
-msgstr "Lägg till kontakt"
-
-#: www/views/bitpayCard.html:28
-msgid "Add Funds"
-msgstr "Deponera"
-
-#: www/views/confirm.html:94
-msgid "Add Memo"
-msgstr "Lägg till anteckning"
-
-#: www/views/join.html:87
-#: www/views/tab-create-personal.html:59
-#: www/views/tab-create-shared.html:88
-msgid "Add a password"
-msgstr "Sätt ett lösenord"
-
-#: www/views/includes/accountSelector.html:27
-msgid "Add account"
-msgstr "Lägg till konto"
-
-#: www/views/join.html:90
-#: www/views/tab-create-personal.html:62
-#: www/views/tab-create-shared.html:91
-msgid "Add an optional password to secure the recovery phrase"
-msgstr "Sätt ett frivilligt lösenord för att säkra återställningsfrasen"
-
-#: www/views/includes/incomingDataMenu.html:41
-msgid "Add as a contact"
-msgstr "Lägg till som kontakt"
-
-#: src/js/controllers/confirm.js:424
-msgid "Add description"
-msgstr "Lägg till beskrivning"
-
-#: www/views/topup.html:6
-msgid "Add funds"
-msgstr "Deponera"
-
-#: src/js/services/bitpayAccountService.js:78
-msgid "Add this BitPay account ({{email}})?"
-msgstr "Lägg till BitPay-konto ({{email}})?"
-
-#: www/views/add.html:3
-msgid "Add wallet"
-msgstr "Lägg till wallet"
-
-#: www/views/addressbook.view.html:26
-#: www/views/customAmount.html:28
-#: www/views/modals/paypro.html:24
-msgid "Address"
-msgstr "Adress"
-
-#: www/views/addressbook.html:6
-#: www/views/tab-settings.html:13
-msgid "Address Book"
-msgstr "Adressbok"
-
-#: www/views/preferencesInformation.html:41
-msgid "Address Type"
-msgstr "Adresstyp"
-
-#: www/views/addresses.html:64
-msgid "Addresses With Balance"
-msgstr "Adresser med saldo"
-
-#: www/views/tab-settings.html:149
-msgid "Advanced"
-msgstr "Avancerat"
-
-#: www/views/advancedSettings.html:3
-msgid "Advanced Settings"
-msgstr "Avancerade inställningar"
-
-#: www/views/bitpayCard.html:62
-msgid "All"
-msgstr "Alla"
-
-#: www/views/allAddresses.html:3
-msgid "All Addresses"
-msgstr "Alla adresser"
-
-#: 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 "Tillåt kameraåtkomst"
-
-#: www/views/onboarding/notifications.html:7
-msgid "Allow notifications"
-msgstr "Tillåt notificationer"
-
-#: www/views/onboarding/disclaimer.html:14
-msgid "Almost done! Let's review."
-msgstr "Nästan klart! Låt oss granska."
-
-#: www/views/preferencesAltCurrency.html:4
-#: www/views/tab-settings.html:79
-msgid "Alternative Currency"
-msgstr "Alternativ Valuta"
-
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr ""
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Kryptovaluta"
-
-#: src/js/controllers/buyAmazon.js:98
-msgid "Amazon.com is not available at this moment. Please try back later."
-msgstr "Amazon.com är inte tillgängligt för tillfället. Försök igen senare."
-
-#: www/views/amount.html:44
-#: www/views/customAmount.html:34
-#: www/views/includes/output.html:7
-msgid "Amount"
-msgstr "Belopp"
-
-#: src/js/services/bwcError.js:110
-msgid "Amount below minimum allowed"
-msgstr "Belopp under minsta tillåtna"
-
-#: src/js/controllers/confirm.js:216
-msgid "Amount too big"
-msgstr "Beloppet för stort"
-
-#: www/views/includes/walletHistory.html:31
-msgid "Amount too low to spend"
-msgstr "Beloppet för lågt för att spendera"
-
-#: 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 "En uppdatering för appen är tillgänglig. För din säkerhet, var vänlig uppdatera till den senaste versionen."
-
-#: www/views/backupWarning.html:14
-msgid "Anyone with your backup phrase can access or spend your bitcoin."
-msgstr "Vem som helst med din återhämtnings fras kan kommat åt eller spendera dina bitcoin."
-
-#: www/views/addresses.html:94
-msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-msgstr "Ungefärlig Bitcoin nätverks avgift för att överföra plånbokens saldo (med normal prioritet)"
-
-#: www/views/backupWarning.html:10
-msgid "Are you being watched?"
-msgstr "Håller någon ögonen på dig?"
-
-#: src/js/controllers/preferencesExternal.js:15
-msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin."
-msgstr "Håller någon ögonen på dig? Vem som helst med din återhämtnings fras kan kommat åt eller spendera dina bitcoin."
-
-#: src/js/controllers/copayers.js:56
-msgid "Are you sure you want to cancel and delete this wallet?"
-msgstr "Är du säker på att du vill avbryta och ta bort denna plånboken?"
-
-#: src/js/controllers/addressbookView.js:37
-msgid "Are you sure you want to delete this contact?"
-msgstr "Är du säker på att du vill ta bort denna kontakten?"
-
-#: src/js/controllers/preferencesDelete.js:25
-msgid "Are you sure you want to delete this wallet?"
-msgstr "Är du säker på att du vill ta bort denna plånboken?"
-
-#: src/js/controllers/modals/txpDetails.js:154
-msgid "Are you sure you want to reject this transaction?"
-msgstr "Är du säker på att du vill avvisa denna transaktion?"
-
-#: src/js/controllers/modals/txpDetails.js:171
-msgid "Are you sure you want to remove this transaction?"
-msgstr "Är du säker på att du vill ta bort denna transaktion?"
-
-#: src/js/controllers/onboarding/backupRequest.js:23
-msgid "Are you sure you want to skip it?"
-msgstr "Är du säker på att du vill hoppa över detta?"
-
-#: www/views/modals/bitpay-card-confirmation.html:4
-msgid "Are you sure you would like to log out of your BitPay Card account?"
-msgstr "Är du säker på att du vill logga ut från ditt BitPay Card konto?"
-
-#: 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 "Är du säker på att du vill ta bort ditt BitPay Card ({{lastFourDigits}}) från denna enheten?"
-
-#: www/views/includes/walletInfo.html:10
-msgid "Auditable"
-msgstr "Granskningsbar"
-
-#: www/views/modals/wallet-balance.html:42
-msgid "Available"
-msgstr "Tillgänglig"
-
-#: www/views/includes/available-balance.html:3
-msgid "Available Balance"
-msgstr "Tillgängligt Saldo"
-
-#: www/views/modals/chooseFeeLevel.html:24
-#: www/views/preferencesFee.html:15
-msgid "Average confirmation time"
-msgstr "Genomsnittlig bekräftelsetid"
-
-#: www/views/join.html:143
-#: www/views/tab-create-personal.html:113
-#: www/views/tab-create-shared.html:142
-#: www/views/tab-import-phrase.html:51
-msgid "BIP32 path for address derivation"
-msgstr "BIP32 sökväg för adress derivering"
-
-#: www/views/cashScan.html:25
-msgid "BTC wallets"
-msgstr "BTC plånböcker"
-
-#: www/views/preferences.html:34
-msgid "Backup"
-msgstr "Säkerhetskopiera"
-
-#: www/views/includes/backupNeededPopup.html:7
-msgid "Backup Needed"
-msgstr "Säkerhetskopiering Behövs"
-
-#: src/js/controllers/lockSetup.js:87
-msgid "Backup all livenet wallets before using this function"
-msgstr "Säkerhetskopiera alla livenet plånböcker innan du använder denna funktion"
-
-#: src/js/controllers/cashScan.js:64
-#: www/views/includes/walletListSettings.html:12
-#: www/views/preferences.html:36
-msgid "Backup needed"
-msgstr "Säkerhetskopiering behövs"
-
-#: www/views/includes/backupNeededPopup.html:9
-msgid "Backup now"
-msgstr "Säkerhetskopiera nu"
-
-#: www/views/onboarding/backupRequest.html:11
-#: www/views/tab-export-file.html:89
-msgid "Backup wallet"
-msgstr "Säkerhetskopiera plånbok"
-
-#: src/js/controllers/lockSetup.js:84
-msgid "Backup your wallet before using this function"
-msgstr "Säkerhetskopiera din plånbok innan du använder denna funktion"
-
-#: src/js/services/profileService.js:446
-msgid "Bad wallet invitation"
-msgstr "Fel på plånboks inbjudan"
-
-#: www/views/preferencesInformation.html:102
-msgid "Balance By Address"
-msgstr "Saldo av Address"
-
-#: 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 "Bitcoin-adress"
-
-#: www/views/cashScan.html:4
-msgid "Bitcoin Cash (BCH) Balances"
-msgstr ""
-
-#: www/views/preferencesCash.html:3
-#: www/views/tab-settings.html:47
-msgid "Bitcoin Cash Support"
-msgstr ""
-
-#: www/views/tab-home.html:98
-#: www/views/tab-settings.html:115
-msgid "Bitcoin Cash Wallets"
-msgstr "Bitcoin Cash plånböcker"
-
-#: www/views/modals/chooseFeeLevel.html:4
-#: www/views/preferencesFee.html:4
-#: www/views/tab-settings.html:90
-msgid "Bitcoin Network Fee Policy"
-msgstr ""
-
-#: www/views/tab-home.html:83
-#: www/views/tab-settings.html:107
-msgid "Bitcoin Core Wallets"
-msgstr ""
-
-#: src/js/services/incomingData.js:151
-msgid "Bitcoin cash Payment"
-msgstr ""
-
-#: www/views/onboarding/tour.html:31
-msgid "Bitcoin is a currency."
-msgstr "Bitcoin är en valuta."
-
-#: 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 "Sänd betalning"
-
-#: src/js/controllers/modals/txpDetails.js:64
-#: src/js/controllers/tx-details.js:81
-msgid "Broadcasted"
-msgstr ""
-
-#: src/js/services/onGoingProcess.js:11
-msgid "Broadcasting transaction"
-msgstr "Sänder transaktion"
-
-#: www/views/unsupported.html:6
-msgid "Browser unsupported"
-msgstr "Webbläsaren stöds inte"
-
-#: www/views/buyAmazon.html:5
-#: www/views/buyMercadoLibre.html:6
-msgid "Buy"
-msgstr "Köp"
-
-#: www/views/includes/buyAndSellCard.html:3
-msgid "Buy & Sell Bitcoin"
-msgstr ""
-
-#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
-msgid "Buy Bitcoin"
-msgstr "Köp Bitcoin"
-
-#: www/views/mercadoLibre.html:22
-#: www/views/mercadoLibre.html:50
-msgid "Buy a Gift Card"
-msgstr "Köp ett presentkort"
-
-#: src/js/controllers/buyAmazon.js:334
-msgid "Buy from"
-msgstr "Köp från"
-
-#: src/js/services/onGoingProcess.js:40
-msgid "Buying Bitcoin..."
-msgstr ""
-
-#: src/js/services/onGoingProcess.js:12
-msgid "Calculating fee"
-msgstr "Beräknar avgift"
-
-#: src/js/controllers/buyAmazon.js:313
-#: src/js/controllers/buyMercadoLibre.js:307
-#: src/js/controllers/confirm.js:550
-#: src/js/controllers/topup.js:287
-#: src/js/services/incomingData.js:154
-#: 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 "Avbryt"
-
-#: www/views/copayers.html:36
-msgid "Cancel invitation"
-msgstr "Avbryt inbjudan"
-
-#: src/js/controllers/onboarding/tour.js:52
-msgid "Cannot Create Wallet"
-msgstr "Kan inte skapa plånbok"
-
-#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
-msgstr ""
-
-#: www/views/includes/bitpayCardsCard.html:2
-msgid "Cards"
-msgstr "Kort"
-
-#: www/views/modals/paypro.html:30
-msgid "Certified by"
-msgstr "Certifierad av"
-
-#: www/views/preferencesExternal.html:19
-msgid "Check installation and retry."
-msgstr "Kontrollera installationen och försök igen."
-
-#: www/views/tab-import-file.html:4
-msgid "Choose a backup file from your computer"
-msgstr "Välj en backup-fil från din dator"
-
-#: 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:61
-msgid "Clear"
-msgstr ""
-
-#: www/views/preferencesHistory.html:24
-msgid "Clear cache"
-msgstr ""
-
-#: src/js/controllers/confirm.js:373
-#: src/js/controllers/modals/txpDetails.js:49
-msgid "Click to accept"
-msgstr ""
-
-#: src/js/controllers/confirm.js:367
-msgid "Click to pay"
-msgstr ""
-
-#: src/js/controllers/confirm.js:379
-#: src/js/controllers/modals/txpDetails.js:42
-msgid "Click to send"
-msgstr ""
-
-#: www/views/customAmount.html:4
-#: www/views/modals/mercadolibre-card-details.html:3
-#: 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/includes/cash.html:2
-#: www/views/preferencesInformation.html:17
-msgid "Coin"
-msgstr ""
-
-#: www/views/preferences.html:22
-msgid "Color"
-msgstr ""
-
-#: www/views/preferencesAbout.html:21
-msgid "Commit hash"
-msgstr ""
-
-#: www/views/preferences.html:49
-msgid "Complete the backup process to use this option"
-msgstr ""
-
-#: www/views/bitpayCard.html:93
-msgid "Completed"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:311
-#: src/js/controllers/buyMercadoLibre.js:305
-#: src/js/controllers/confirm.js:549
-#: src/js/controllers/copayers.js:55
-#: src/js/controllers/topup.js:285
-#: www/views/backup.html:60
-#: www/views/backup.html:79
-#: 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:1033
-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:85
-msgid "Contacts"
-msgstr ""
-
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr ""
-
-#: www/views/onboarding/notifications.html:9
-msgid "Continue"
-msgstr ""
-
-#: www/views/preferencesLanguage.html:26
-msgid "Contribute Translations"
-msgstr ""
-
-#: src/js/controllers/confirm.js:130
-msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-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:94
-msgid "Copayer {{$index}}"
-msgstr ""
-
-#: src/js/controllers/copayers.js:79
-#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
-#: 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/includes/logOptions.html:9
-#: www/views/tab-export-file.html:78
-msgid "Copy to clipboard"
-msgstr ""
-
-#: src/js/controllers/buyMercadoLibre.js:102
-msgid "Could not access Gift Card Service"
-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:102
-msgid "Could not access to Amazon.com"
-msgstr ""
-
-#: src/js/services/profileService.js:511
-msgid "Could not access wallet"
-msgstr ""
-
-#: src/js/controllers/confirm.js:210
-msgid "Could not add message to imported wallet without shared encrypting key"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:199
-msgid "Could not broadcast payment"
-msgstr ""
-
-#: src/js/services/bwcError.js:41
-msgid "Could not build transaction"
-msgstr ""
-
-#: src/js/services/walletService.js:854
-msgid "Could not create address"
-msgstr ""
-
-#: src/js/controllers/topup.js:92
-msgid "Could not create the invoice"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:164
-#: src/js/controllers/buyMercadoLibre.js:164
-#: src/js/controllers/topup.js:142
-msgid "Could not create transaction"
-msgstr ""
-
-#: src/js/services/profileService.js:350
-msgid "Could not create using the specified extended private key"
-msgstr ""
-
-#: src/js/services/profileService.js:362
-msgid "Could not create using the specified extended public key"
-msgstr ""
-
-#: src/js/services/profileService.js:338
-msgid "Could not create: Invalid wallet recovery phrase"
-msgstr ""
-
-#: src/js/controllers/import.js:114
-msgid "Could not decrypt file, check your password"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:181
-msgid "Could not delete payment proposal"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:117
-msgid "Could not duplicate"
-msgstr ""
-
-#: src/js/services/feeService.js:73
-msgid "Could not get dynamic fee"
-msgstr ""
-
-#: src/js/services/feeService.js:43
-msgid "Could not get dynamic fee for level: {{feeLevel}}"
-msgstr ""
-
-#: src/js/controllers/modals/feeLevels.js:112
-msgid "Could not get fee levels"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:122
-#: src/js/controllers/buyMercadoLibre.js:122
-#: src/js/controllers/topup.js:100
-msgid "Could not get the invoice"
-msgstr ""
-
-#: src/js/controllers/bitpayCard.js:66
-msgid "Could not get transactions"
-msgstr ""
-
-#: src/js/services/profileService.js:615
-#: src/js/services/profileService.js:650
-#: src/js/services/profileService.js:674
-msgid "Could not import"
-msgstr ""
-
-#: src/js/services/profileService.js:584
-msgid "Could not import. Check input file and spending password"
-msgstr ""
-
-#: src/js/services/profileService.js:457
-msgid "Could not join wallet"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:161
-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:147
-msgid "Could not send payment"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:325
-#: src/js/controllers/buyMercadoLibre.js:318
-#: src/js/controllers/topup.js:299
-msgid "Could not send transaction"
-msgstr ""
-
-#: www/views/walletDetails.html:210
-msgid "Could not update transaction history"
-msgstr ""
-
-#: src/js/controllers/addresses.js:29
-#: src/js/controllers/addresses.js:37
-#: 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:75
-#: www/views/tab-send.html:75
-msgid "Create bitcoin wallet"
-msgstr ""
-
-#: www/views/tab-create-personal.html:131
-msgid "Create new wallet"
-msgstr ""
-
-#: www/views/add.html:22
-msgid "Create shared wallet"
-msgstr ""
-
-#: www/views/tab-create-shared.html:160
-msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet"
-msgstr ""
-
-#: www/views/modals/txp-details.html:81
-#: www/views/tx-details.html:60
-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:85
-msgid "Custom Fee"
-msgstr ""
-
-#: www/views/modals/mercadolibre-card-details.html:56
-#: www/views/modals/txp-details.html:87
-#: www/views/tx-details.html:66
-msgid "Date"
-msgstr ""
-
-#: www/views/preferencesDeleteWallet.html:21
-msgid "Delete"
-msgstr ""
-
-#: www/views/modals/txp-details.html:164
-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:141
-#: www/views/tab-create-personal.html:111
-#: www/views/tab-create-shared.html:140
-#: www/views/tab-import-phrase.html:49
-msgid "Derivation Path"
-msgstr ""
-
-#: www/views/preferencesInformation.html:47
-msgid "Derivation Strategy"
-msgstr ""
-
-#: www/views/buyAmazon.html:39
-#: www/views/buyMercadoLibre.html:38
-#: www/views/modals/mercadolibre-card-details.html:6
-#: www/views/topup.html:45
-msgid "Details"
-msgstr ""
-
-#: src/js/controllers/lockSetup.js:9
-#: src/js/controllers/tab-settings.js:65
-#: www/views/tab-settings.html:50
-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/cashScan.html:37
-msgid "Duplicate for BCH"
-msgstr ""
-
-#: src/js/services/onGoingProcess.js:49
-msgid "Duplicating wallet..."
-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/preferencesCash.html:17
-msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-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/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr ""
-
-#: www/views/tab-scan.html:18
-msgid "Enable the camera to get started."
-msgstr ""
-
-#: www/views/tab-settings.html:49
-msgid "Enabled"
-msgstr ""
-
-#: src/js/services/walletService.js:1047
-#: src/js/services/walletService.js:1062
-msgid "Enter Spending Password"
-msgstr ""
-
-#: src/js/services/bitpayAccountService.js:110
-msgid "Enter Two Factor for your BitPay account"
-msgstr ""
-
-#: www/views/amount.html:4
-msgid "Enter amount"
-msgstr ""
-
-#: www/views/modals/chooseFeeLevel.html:41
-msgid "Enter custom fee"
-msgstr ""
-
-#: src/js/services/walletService.js:1029
-msgid "Enter new spending password"
-msgstr ""
-
-#: www/views/join.html:79
-#: www/views/tab-create-personal.html:51
-#: www/views/tab-create-shared.html:80
-msgid "Enter the recovery phrase (BIP39)"
-msgstr ""
-
-#: www/views/onboarding/collectEmail.html:13
-msgid "Enter your email"
-msgstr ""
-
-#: www/views/backup.html:69
-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:42
-#: src/js/controllers/addresses.js:125
-#: src/js/controllers/addresses.js:126
-#: src/js/controllers/bitpayCard.js:66
-#: src/js/controllers/bitpayCardIntro.js:40
-#: src/js/controllers/bitpayCardIntro.js:81
-#: src/js/controllers/buyAmazon.js:24
-#: src/js/controllers/buyAmazon.js:35
-#: src/js/controllers/buyMercadoLibre.js:24
-#: src/js/controllers/buyMercadoLibre.js:35
-#: src/js/controllers/confirm.js:307
-#: src/js/controllers/copayers.js:67
-#: src/js/controllers/create.js:161
-#: src/js/controllers/create.js:174
-#: src/js/controllers/create.js:180
-#: src/js/controllers/create.js:186
-#: src/js/controllers/create.js:208
-#: src/js/controllers/create.js:215
-#: src/js/controllers/create.js:233
-#: 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:119
-#: src/js/controllers/import.js:131
-#: src/js/controllers/import.js:149
-#: src/js/controllers/import.js:200
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:238
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:266
-#: src/js/controllers/import.js:278
-#: src/js/controllers/import.js:288
-#: src/js/controllers/import.js:312
-#: src/js/controllers/import.js:325
-#: src/js/controllers/import.js:335
-#: src/js/controllers/import.js:345
-#: src/js/controllers/import.js:369
-#: src/js/controllers/import.js:382
-#: src/js/controllers/import.js:85
-#: src/js/controllers/import.js:98
-#: src/js/controllers/join.js:125
-#: src/js/controllers/join.js:139
-#: src/js/controllers/join.js:145
-#: src/js/controllers/join.js:151
-#: src/js/controllers/join.js:174
-#: src/js/controllers/join.js:182
-#: src/js/controllers/join.js:200
-#: src/js/controllers/modals/feeLevels.js:9
-#: src/js/controllers/modals/txpDetails.js:140
-#: 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:36
-#: src/js/controllers/preferencesExternal.js:20
-#: src/js/controllers/tab-home.js:174
-#: src/js/controllers/tab-send.js:143
-#: src/js/controllers/tabsController.js:36
-#: src/js/controllers/tabsController.js:7
-#: src/js/controllers/topup.js:21
-#: src/js/controllers/topup.js:32
-#: src/js/controllers/tx-details.js:119
-#: src/js/services/incomingData.js:101
-#: src/js/services/incomingData.js:125
-#: src/js/services/incomingData.js:168
-#: www/views/mercadoLibreCards.html:19
-#: www/views/modals/mercadolibre-card-details.html:45
-msgid "Error"
-msgstr ""
-
-#: src/js/controllers/confirm.js:502
-msgid "Error at confirm"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:179
-msgid "Error creating gift card"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:94
-#: src/js/controllers/buyMercadoLibre.js:94
-msgid "Error creating the invoice"
-msgstr ""
-
-#: src/js/services/profileService.js:412
-msgid "Error creating wallet"
-msgstr ""
-
-#: src/js/controllers/confirm.js:296
-msgid "Error getting SendMax information"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:136
-#: src/js/controllers/buyMercadoLibre.js:136
-#: src/js/controllers/topup.js:114
-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:90
-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:461
-#: www/views/confirm.html:27
-#: www/views/mercadoLibreCards.html:25
-#: www/views/modals/mercadolibre-card-details.html:34
-#: www/views/modals/txp-details.html:119
-msgid "Expired"
-msgstr ""
-
-#: www/views/modals/paypro.html:54
-#: www/views/modals/txp-details.html:125
-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:1174
-#: www/views/tab-export-qrCode.html:9
-msgid "Exporting via QR not supported for this wallet"
-msgstr ""
-
-#: www/views/preferencesInformation.html:89
-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:79
-msgid "Fee"
-msgstr ""
-
-#: www/views/modals/chooseFeeLevel.html:75
-msgid "Fee level"
-msgstr ""
-
-#: src/js/controllers/modals/feeLevels.js:100
-msgid "Fee level is not defined"
-msgstr ""
-
-#: www/views/confirm.html:79
-#: www/views/modals/txp-details.html:99
-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 ""
-
-#: www/views/preferencesLogs.html:17
-msgid "Filter setting"
-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:123
-#: www/views/tab-create-shared.html:152
-msgid "For audit purposes"
-msgstr ""
-
-#: src/js/controllers/topup.js:308
-#: www/views/buyAmazon.html:29
-#: www/views/buyMercadoLibre.html:28
-#: www/views/confirm.html:65
-#: www/views/modals/txp-details.html:74
-#: www/views/topup.html:34
-#: www/views/tx-details.html:52
-#: www/views/review.html:22
-msgid "From"
-msgstr ""
-
-#: src/js/controllers/bitpayCardIntro.js:71
-msgid "From BitPay account"
-msgstr ""
-
-#: www/views/tab-import-phrase.html:57
-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:51
-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/onboarding/welcome.html:8
-#: www/views/bitpayCard.html:49
-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
-#: www/views/buyMercadoLibre.html:42
-msgid "Gift Card"
-msgstr ""
-
-#: www/views/modals/mercadolibre-card-details.html:30
-#: www/views/modals/mercadolibre-card-details.html:35
-msgid "Gift Card is not available to use anymore"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:204
-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/cashScan.js:20
-#: src/js/controllers/onboarding/terms.js:23
-#: src/js/controllers/preferences.js:67
-#: src/js/controllers/preferencesAbout.js:16
-#: src/js/controllers/preferencesCash.js:34
-#: src/js/controllers/preferencesLanguage.js:14
-#: src/js/controllers/tab-home.js:149
-#: src/js/controllers/tab-settings.js:53
-#: src/js/controllers/tx-details.js:193
-#: src/js/controllers/tx-details.js:56
-msgid "Go Back"
-msgstr ""
-
-#: src/js/controllers/confirm.js:131
-#: 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:53
-#: www/views/preferencesInformation.html:59
-msgid "Hardware Wallet"
-msgstr ""
-
-#: www/views/preferencesExternal.html:18
-msgid "Hardware not connected."
-msgstr ""
-
-#: www/views/import.html:20
-msgid "Hardware wallet"
-msgstr ""
-
-#: src/js/controllers/create.js:180
-#: src/js/controllers/join.js:145
-msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr ""
-
-#: www/views/tab-settings.html:20
-msgid "Help & Support"
-msgstr ""
-
-#: src/js/controllers/bitpayCard.js:112
-#: src/js/controllers/tab-settings.js:51
-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:30
-msgid "Hide Next Steps Card"
-msgstr ""
-
-#: www/views/join.html:49
-#: www/views/tab-create-personal.html:28
-#: www/views/tab-create-shared.html:57
-#: www/views/tab-export-file.html:25
-#: www/views/tab-import-file.html:30
-#: www/views/tab-import-hardware.html:31
-#: www/views/tab-import-phrase.html:36
-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:137
-#: www/views/tab-create-personal.html:107
-#: www/views/tab-create-shared.html:136
-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:36
-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:23
-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:14
-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:80
-msgid "Import"
-msgstr ""
-
-#: www/views/import.html:3
-msgid "Import Wallet"
-msgstr ""
-
-#: www/views/tab-import-file.html:41
-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:72
-msgid "In order to verify your wallet backup, please type your password."
-msgstr ""
-
-#: www/views/mercadoLibreCards.html:24
-#: www/views/modals/mercadolibre-card-details.html:29
-msgid "Inactive"
-msgstr ""
-
-#: www/views/includes/walletItem.html:9
-#: www/views/includes/walletList.html:6
-#: www/views/includes/walletListSettings.html:9
-#: www/views/includes/walletSelector.html:16
-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:85
-msgid "Incorrect code format"
-msgstr ""
-
-#: src/js/services/bwcError.js:113
-msgid "Incorrect network address"
-msgstr ""
-
-#: src/js/controllers/confirm.js:114
-#: src/js/controllers/confirm.js:306
-#: src/js/services/bwcError.js:44
-msgid "Insufficient confirmed funds"
-msgstr ""
-
-#: src/js/controllers/topup.js:165
-#: src/js/controllers/topup.js:177
-#: src/js/services/bwcError.js:71
-msgid "Insufficient funds for fee"
-msgstr ""
-
-#: www/views/tab-settings.html:123
-msgid "Integrations"
-msgstr ""
-
-#: www/views/includes/walletHistory.html:49
-msgid "Invalid"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:137
-#: src/js/controllers/buyMercadoLibre.js:137
-#: src/js/controllers/topup.js:115
-msgid "Invalid URL"
-msgstr ""
-
-#: src/js/controllers/create.js:186
-#: src/js/controllers/import.js:345
-#: src/js/controllers/join.js:151
-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:161
-#: src/js/controllers/import.js:266
-#: src/js/controllers/join.js:125
-msgid "Invalid derivation path"
-msgstr ""
-
-#: src/js/controllers/copayers.js:90
-msgid "Invitation to share a {{appName}} Wallet"
-msgstr ""
-
-#: www/views/mercadoLibreCards.html:20
-#: www/views/modals/mercadolibre-card-details.html:48
-msgid "Invoice expired"
-msgstr ""
-
-#: src/js/controllers/feedback/send.js:79
-msgid "Is there anything we could do better?"
-msgstr ""
-
-#: www/views/backup.html:54
-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:151
-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:68
-msgid "Language"
-msgstr ""
-
-#: www/views/bitpayCard.html:61
-msgid "Last Month"
-msgstr ""
-
-#: src/js/controllers/confirm.js:132
-#: www/views/preferences.html:48
-#: www/views/preferencesCash.html:18
-#: www/views/tx-details.html:94
-msgid "Learn more"
-msgstr ""
-
-#: www/views/backup.html:43
-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:100
-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/includes/logOptions.html:3
-msgid "Log options"
-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:85
-msgid "Me"
-msgstr ""
-
-#: src/js/controllers/feedback/rateCard.js:32
-msgid "Meh - it's alright"
-msgstr ""
-
-#: src/js/controllers/tx-details.js:165
-#: www/views/modals/paypro.html:48
-#: www/views/modals/txp-details.html:93
-#: www/views/tx-details.html:72
-msgid "Memo"
-msgstr ""
-
-#: www/views/mercadoLibre.html:6
-msgid "Mercado Livre Brazil Gift Cards"
-msgstr ""
-
-#: src/js/controllers/buyMercadoLibre.js:98
-msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr ""
-
-#: www/views/modals/txp-details.html:131
-msgid "Merchant Message"
-msgstr ""
-
-#: www/views/buyAmazon.html:55
-#: www/views/buyMercadoLibre.html:54
-#: www/views/topup.html:63
-msgid "Miner Fee"
-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:61
-#: 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:131
-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:49
-#: www/views/buyMercadoLibre.html:48
-#: www/views/topup.html:56
-msgid "Network Cost"
-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:126
-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:115
-#: src/js/controllers/buyMercadoLibre.js:115
-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/preferencesLogs.html:16
-msgid "No entries for this log level"
-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:44
-#: src/js/controllers/topup.js:47
-msgid "No signing proposal: No private key"
-msgstr ""
-
-#: www/views/walletDetails.html:204
-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:300
-#: src/js/controllers/buyMercadoLibre.js:292
-#: src/js/controllers/confirm.js:85
-#: src/js/controllers/topup.js:265
-msgid "No wallets available"
-msgstr ""
-
-#: www/views/paperWallet.html:45
-msgid "No wallets available to receive funds"
-msgstr ""
-
-#: www/views/cashScan.html:15
-msgid "No wallets eligible for Bitcoin Cash support"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:58
-msgid "Non BIP44 wallet"
-msgstr ""
-
-#: www/views/cashScan.html:46
-msgid "Non eligible BTC wallets"
-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:307
-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/backup.html:19
-msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-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:61
-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:312
-#: src/js/controllers/topup.js:286
-#: src/js/services/incomingData.js:153
-#: 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 ""
-
-#: src/js/controllers/buyMercadoLibre.js:306
-msgid "Ok"
-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/cashScan.js:19
-#: src/js/controllers/preferences.js:66
-#: src/js/controllers/preferencesCash.js:33
-#: src/js/controllers/tab-settings.js:52
-#: src/js/controllers/tx-details.js:55
-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:192
-msgid "Open Explorer"
-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 ""
-
-#: src/js/controllers/preferencesCash.js:32
-msgid "Open bitcoincash.org?"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:18
-msgid "Open the recovery tool."
-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:105
-#: www/views/join.html:96
-#: www/views/tab-create-personal.html:69
-#: www/views/tab-create-personal.html:77
-#: www/views/tab-create-shared.html:106
-#: www/views/tab-create-shared.html:98
-#: www/views/tab-import-file.html:18
-#: www/views/tab-import-phrase.html:41
-msgid "Password"
-msgstr ""
-
-#: src/js/controllers/import.js:98
-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:51
-#: 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:44
-#: www/views/confirm.html:124
-#: www/views/includes/walletActivity.html:11
-#: www/views/modals/txp-details.html:42
-msgid "Payment Sent"
-msgstr ""
-
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-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 ""
-
-#: src/js/services/incomingData.js:152
-msgid "Payment address was translated to new Bitcoin Cash address format:"
-msgstr ""
-
-#: www/views/modals/txp-details.html:107
-msgid "Payment details"
-msgstr ""
-
-#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr ""
-
-#: www/views/mercadoLibreCards.html:22
-#: www/views/modals/mercadolibre-card-details.html:39
-msgid "Pending"
-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:403
-msgid "Personal Wallet"
-msgstr ""
-
-#: www/views/backup.html:25
-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:278
-msgid "Please enter the recovery phrase"
-msgstr ""
-
-#: src/js/controllers/create.js:174
-#: src/js/controllers/join.js:139
-msgid "Please enter the wallet recovery phrase"
-msgstr ""
-
-#: www/views/modals/pin.html:9
-msgid "Please enter your PIN"
-msgstr ""
-
-#: www/views/backup.html:53
-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 ""
-
-#: www/views/walletDetails.html:142
-#: www/views/walletDetails.html:62
-msgid "Please wait"
-msgstr ""
-
-#: src/js/controllers/import.js:238
-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:1264
-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:136
-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:61
-#: src/js/controllers/tx-details.js:78
-#: www/views/confirm.html:125
-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:189
-msgid "Proposals"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:282
-msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
-msgstr ""
-
-#: src/js/controllers/buyMercadoLibre.js:281
-msgid "Purchase amount must be a value between 50 and 2000"
-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:84
-#: src/js/controllers/join.js:68
-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 ""
-
-#: src/js/controllers/preferences.js:65
-#: src/js/controllers/tx-details.js:54
-msgid "Read more in our Wiki"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:61
-msgid "Read only wallet"
-msgstr ""
-
-#: www/views/tab-receive.html:3
-#: www/views/tabs.html:7
-msgid "Receive"
-msgstr ""
-
-#: www/views/customAmount.html:44
-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:130
-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:21
-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 ""
-
-#: src/js/services/onGoingProcess.js:26
-msgid "Recreating Wallet..."
-msgstr ""
-
-#: www/views/modals/mercadolibre-card-details.html:22
-msgid "Redeem now"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:63
-#: src/js/controllers/tx-details.js:80
-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
-#: www/views/modals/mercadolibre-card-details.html:69
-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:116
-#: www/views/join.html:124
-#: www/views/tab-create-personal.html:86
-#: www/views/tab-create-personal.html:94
-#: www/views/tab-create-shared.html:115
-#: www/views/tab-create-shared.html:123
-#: 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:56
-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:44
-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 ""
-
-#: www/views/preferencesCash.html:23
-msgid "Scan your wallets for Bitcoin Cash"
-msgstr ""
-
-#: src/js/services/onGoingProcess.js:30
-msgid "Scanning Wallet funds..."
-msgstr ""
-
-#: www/views/includes/walletList.html:11
-msgid "Scanning 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 ""
-
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr ""
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-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/modals/mercadolibre-card-details.html:64
-msgid "See invoice"
-msgstr ""
-
-#: www/views/tab-import-file.html:7
-msgid "Select a backup file"
-msgstr ""
-
-#: src/js/controllers/tab-receive.js:139
-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/includes/logOptions.html:17
-#: www/views/tab-export-file.html:82
-msgid "Send by email"
-msgstr ""
-
-#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
-msgid "Send from"
-msgstr ""
-
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr ""
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr ""
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr ""
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr ""
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr ""
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr ""
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr ""
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr ""
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr ""
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr ""
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr ""
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr ""
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr ""
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-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:545
-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:129
-msgid "Sent Funds"
-msgstr ""
-
-#: src/js/services/bwcError.js:38
-msgid "Server response could not be verified"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:97
-#: src/js/controllers/buyMercadoLibre.js:97
-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:85
-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:48
-#: www/views/tab-create-personal.html:27
-#: www/views/tab-create-shared.html:56
-#: www/views/tab-export-file.html:24
-#: www/views/tab-import-file.html:29
-#: www/views/tab-import-hardware.html:30
-#: www/views/tab-import-phrase.html:35
-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:122
-#: www/views/tab-create-shared.html:151
-msgid "Single Address Wallet"
-msgstr ""
-
-#: www/views/onboarding/collectEmail.html:40
-#: www/views/onboarding/tour.html:11
-msgid "Skip"
-msgstr ""
-
-#: src/js/controllers/confirm.js:371
-#: src/js/controllers/modals/txpDetails.js:47
-msgid "Slide to accept"
-msgstr ""
-
-#: www/views/buyAmazon.html:96
-msgid "Slide to buy"
-msgstr ""
-
-#: src/js/controllers/confirm.js:365
-msgid "Slide to pay"
-msgstr ""
-
-#: src/js/controllers/confirm.js:377
-#: src/js/controllers/modals/txpDetails.js:40
-msgid "Slide to send"
-msgstr ""
-
-#: www/views/cashScan.html:56
-msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-msgstr ""
-
-#: src/js/controllers/create.js:88
-#: src/js/controllers/join.js:71
-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:173
-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/mercadoLibreCards.html:21
-#: www/views/modals/mercadolibre-card-details.html:42
-msgid "Still pending"
-msgstr ""
-
-#: www/views/topup.html:101
-msgid "Success"
-msgstr ""
-
-#: src/js/services/feeService.js:14
-msgid "Super Economy"
-msgstr ""
-
-#: www/views/preferencesCash.html:11
-msgid "Support Bitcoin Cash"
-msgstr ""
-
-#: www/views/paperWallet.html:7
-msgid "Sweep"
-msgstr ""
-
-#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr ""
-
-#: www/views/paperWallet.html:3
-msgctxt "Page title"
-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:132
-#: www/views/walletDetails.html:52
-msgid "Tap and hold to show"
-msgstr ""
-
-#: www/views/includes/walletInfo.html:3
-msgid "Tap to recreate"
-msgstr ""
-
-#: www/views/includes/walletInfo.html:4
-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:118
-#: www/views/tab-import-phrase.html:68
-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:1139
-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:91
-#: www/views/tab-create-personal.html:63
-#: www/views/tab-create-shared.html:92
-#: www/views/tab-import-phrase.html:43
-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:229
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:335
-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:523
-msgid "This bitcoin payment request has expired."
-msgstr ""
-
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr ""
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr ""
-
-#: www/views/join.html:133
-#: www/views/tab-create-personal.html:103
-#: www/views/tab-create-shared.html:132
-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:31
-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:91
-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:87
-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:109
-#: www/views/walletDetails.html:29
-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:136
-#: 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:109
-#: 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 ""
-
-#: 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:206
-msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-msgstr ""
-
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr ""
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr ""
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr ""
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr ""
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr ""
-
-#: www/views/buyAmazon.html:61
-#: www/views/buyMercadoLibre.html:60
-#: www/views/modals/wallet-balance.html:23
-#: www/views/topup.html:70
-msgid "Total"
-msgstr ""
-
-#: www/views/walletDetails.html:196
-msgid "Total Locked Balance"
-msgstr ""
-
-#: www/views/tab-create-shared.html:35
-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:12
-msgid "Transaction"
-msgstr ""
-
-#: www/views/confirm.html:126
-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:308
-#: src/js/controllers/buyMercadoLibre.js:301
-#: src/js/controllers/topup.js:281
-msgid "Transaction has not been created"
-msgstr ""
-
-#: www/views/topup.html:104
-msgid "Transaction initiated"
-msgstr ""
-
-#: src/js/controllers/tx-details.js:119
-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:55
-msgid "Transactions without fee are not supported."
-msgstr ""
-
-#: src/js/controllers/paperWallet.js:109
-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/walletDetails.html:190
-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:217
-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:12
-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:191
-msgid "View Transaction on Explorer.Bitcoin.com"
-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/mercadoLibre.html:26
-msgid "Visit mercadolivre.com.br →"
-msgstr ""
-
-#: www/views/walletDetails.html:182
-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:29
-msgid "Wallet Configuration (m-n)"
-msgstr ""
-
-#: www/views/onboarding/collectEmail.html:5
-msgid "Wallet Created"
-msgstr ""
-
-#: www/views/preferencesInformation.html:23
-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:60
-#: www/views/tab-create-personal.html:38
-#: www/views/tab-create-shared.html:67
-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:35
-msgid "Wallet Network"
-msgstr ""
-
-#: www/views/join.html:77
-#: www/views/tab-create-personal.html:50
-#: www/views/tab-create-shared.html:79
-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:73
-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:61
-msgid "Wallet Type"
-msgstr ""
-
-#: src/js/services/bwcError.js:59
-msgid "Wallet already exists"
-msgstr ""
-
-#: src/js/services/profileService.js:516
-msgid "Wallet already in {{appName}}"
-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:169
-msgid "Wallet not backed up"
-msgstr ""
-
-#: src/js/services/bwcError.js:68
-msgid "Wallet not found"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:81
-#: src/js/controllers/tab-home.js:230
-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:12
-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 ""
-
-#: src/js/controllers/addressbookView.js:36
-#: src/js/controllers/modals/txpDetails.js:153
-#: src/js/controllers/modals/txpDetails.js:170
-#: src/js/controllers/preferencesDelete.js:24
-#: 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:35
-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:288
-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:15
-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:64
-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/mercadoLibre.html:57
-#: www/views/mercadoLibreCards.html:6
-msgid "Your Gift Cards"
-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:61
-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:1030
-msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
-msgstr ""
-
-#: www/views/includes/walletList.html:13
-#: www/views/includes/walletSelector.html:21
-#: www/views/paperWallet.html:33
-#: www/views/tab-receive.html:72
-#: www/views/walletDetails.html:131
-#: www/views/walletDetails.html:51
-msgid "[Balance Hidden]"
-msgstr ""
-
-#: www/views/walletDetails.html:141
-#: www/views/walletDetails.html:61
-msgid "[Scanning Funds]"
-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:404
-msgid "me"
-msgstr ""
-
-#: www/views/addressbook.add.html:32
-msgid "name@example.com"
-msgstr ""
-
-#: www/views/preferencesHistory.html:15
-msgid "preparing..."
-msgstr ""
-
-#: www/views/cashScan.html:57
-msgid "recovery tool."
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:239
-msgid "{{amountStr}} for Amazon.com Gift Card"
-msgstr ""
-
-#: src/js/controllers/buyMercadoLibre.js:237
-msgid "{{amountStr}} for Mercado Livre Brazil 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:408
-msgid "{{fee}} will be deducted for bitcoin networking fees."
-msgstr ""
-
-#: www/views/confirm.html:85
-msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-msgstr ""
-
-#: www/views/walletDetails.html:218
-msgid "{{updatingTxHistoryProgress}} transactions downloaded"
-msgstr ""
-
-#: www/views/cashScan.html:33
-#: www/views/copayers.html:46
-#: www/views/includes/walletInfo.html:18
-msgid "{{wallet.m}}-of-{{wallet.n}}"
-msgstr ""
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr ""
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr ""
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr ""
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr ""
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr ""
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr ""
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr ""
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr ""
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr ""
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr ""
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr ""
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr ""
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr ""
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr ""
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr ""
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr ""
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr ""
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr ""
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr ""
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr ""
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr ""
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr ""
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr ""
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr ""
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr ""
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr ""
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr ""
-
diff --git a/i18n/po/template.pot b/i18n/po/template.pot
index 2b1068ad4..d97008340 100644
--- a/i18n/po/template.pot
+++ b/i18n/po/template.pot
@@ -1,3933 +1,3624 @@
-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:159
-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:82
-msgid "- {{btx.feeRateStr}} of the transaction"
-msgstr ""
-
-#: www/views/modals/txp-details.html:102
-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 ""
-
-#: www/views/mercadoLibre.html:18
-#: www/views/mercadoLibre.html:40
-msgid "Only redeemable on Mercado Livre (Brazil)"
-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:401
-msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded."
-msgstr ""
-
-#: src/js/controllers/confirm.js:395
-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:62
-#: src/js/controllers/tx-details.js:79
-msgid "Accepted"
-msgstr ""
-
-#: www/views/preferencesInformation.html:72
-msgid "Account"
-msgstr ""
-
-#: www/views/join.html:72
-#: www/views/tab-create-personal.html:45
-#: www/views/tab-create-shared.html:74
-#: www/views/tab-import-hardware.html:19
-msgid "Account Number"
-msgstr ""
-
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr ""
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr ""
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr ""
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr ""
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr ""
-
-#: www/views/amount.html:99
-msgid "Next"
-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:94
-msgid "Add Memo"
-msgstr ""
-
-#: www/views/join.html:87
-#: www/views/tab-create-personal.html:59
-#: www/views/tab-create-shared.html:88
-msgid "Add a password"
-msgstr ""
-
-#: www/views/includes/accountSelector.html:27
-msgid "Add account"
-msgstr ""
-
-#: www/views/join.html:90
-#: www/views/tab-create-personal.html:62
-#: www/views/tab-create-shared.html:91
-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:424
-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:41
-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:79
-msgid "Alternative Currency"
-msgstr ""
-
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr ""
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr ""
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:98
-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:216
-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:37
-msgid "Are you sure you want to delete this contact?"
-msgstr ""
-
-#: src/js/controllers/preferencesDelete.js:25
-msgid "Are you sure you want to delete this wallet?"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:154
-msgid "Are you sure you want to reject this transaction?"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:171
-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:10
-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:143
-#: www/views/tab-create-personal.html:113
-#: www/views/tab-create-shared.html:142
-#: www/views/tab-import-phrase.html:51
-msgid "BIP32 path for address derivation"
-msgstr ""
-
-#: www/views/cashScan.html:25
-msgid "BTC wallets"
-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 ""
-
-#: src/js/controllers/cashScan.js:64
-#: www/views/includes/walletListSettings.html:12
-#: www/views/preferences.html:36
-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:446
-msgid "Bad wallet invitation"
-msgstr ""
-
-#: www/views/preferencesInformation.html:102
-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/cashScan.html:4
-msgid "Bitcoin Cash (BCH) Balances"
-msgstr ""
-
-#: www/views/preferencesCash.html:3
-#: www/views/tab-settings.html:47
-msgid "Bitcoin Cash Support"
-msgstr ""
-
-#: www/views/tab-home.html:98
-#: www/views/tab-settings.html:115
-msgid "Bitcoin Cash Wallets"
-msgstr ""
-
-#: www/views/modals/chooseFeeLevel.html:4
-#: www/views/preferencesFee.html:4
-#: www/views/tab-settings.html:90
-msgid "Bitcoin Network Fee Policy"
-msgstr ""
-
-#: www/views/tab-home.html:83
-#: www/views/tab-settings.html:107
-msgid "Bitcoin Core Wallets"
-msgstr ""
-
-#: src/js/services/incomingData.js:151
-msgid "Bitcoin cash Payment"
-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:64
-#: src/js/controllers/tx-details.js:81
-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
-#: www/views/buyMercadoLibre.html:6
-msgid "Buy"
-msgstr ""
-
-#: www/views/includes/buyAndSellCard.html:3
-msgid "Buy & Sell Bitcoin"
-msgstr ""
-
-#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
-msgid "Buy Bitcoin"
-msgstr ""
-
-#: www/views/mercadoLibre.html:22
-#: www/views/mercadoLibre.html:50
-msgid "Buy a Gift Card"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:334
-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:313
-#: src/js/controllers/buyMercadoLibre.js:307
-#: src/js/controllers/confirm.js:550
-#: src/js/controllers/topup.js:287
-#: src/js/services/incomingData.js:154
-#: 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:442
-msgid "Cannot join the same wallet more than 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:61
-msgid "Clear"
-msgstr ""
-
-#: www/views/preferencesHistory.html:24
-msgid "Clear cache"
-msgstr ""
-
-#: src/js/controllers/confirm.js:373
-#: src/js/controllers/modals/txpDetails.js:49
-msgid "Click to accept"
-msgstr ""
-
-#: src/js/controllers/confirm.js:367
-msgid "Click to pay"
-msgstr ""
-
-#: src/js/controllers/confirm.js:379
-#: src/js/controllers/modals/txpDetails.js:42
-msgid "Click to send"
-msgstr ""
-
-#: www/views/customAmount.html:4
-#: www/views/modals/mercadolibre-card-details.html:3
-#: 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/includes/cash.html:2
-#: www/views/preferencesInformation.html:17
-msgid "Coin"
-msgstr ""
-
-#: www/views/preferences.html:22
-msgid "Color"
-msgstr ""
-
-#: www/views/preferencesAbout.html:21
-msgid "Commit hash"
-msgstr ""
-
-#: www/views/preferences.html:49
-msgid "Complete the backup process to use this option"
-msgstr ""
-
-#: www/views/bitpayCard.html:93
-msgid "Completed"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:311
-#: src/js/controllers/buyMercadoLibre.js:305
-#: src/js/controllers/confirm.js:549
-#: src/js/controllers/copayers.js:55
-#: src/js/controllers/topup.js:285
-#: www/views/backup.html:60
-#: www/views/backup.html:79
-#: 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:1033
-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:85
-msgid "Contacts"
-msgstr ""
-
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr ""
-
-#: www/views/onboarding/notifications.html:9
-msgid "Continue"
-msgstr ""
-
-#: www/views/preferencesLanguage.html:26
-msgid "Contribute Translations"
-msgstr ""
-
-#: src/js/controllers/confirm.js:130
-msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-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:94
-msgid "Copayer {{$index}}"
-msgstr ""
-
-#: src/js/controllers/copayers.js:79
-#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
-#: 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/includes/logOptions.html:9
-#: www/views/tab-export-file.html:78
-msgid "Copy to clipboard"
-msgstr ""
-
-#: src/js/controllers/buyMercadoLibre.js:102
-msgid "Could not access Gift Card Service"
-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:102
-msgid "Could not access to Amazon.com"
-msgstr ""
-
-#: src/js/services/profileService.js:511
-msgid "Could not access wallet"
-msgstr ""
-
-#: src/js/controllers/confirm.js:210
-msgid "Could not add message to imported wallet without shared encrypting key"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:199
-msgid "Could not broadcast payment"
-msgstr ""
-
-#: src/js/services/bwcError.js:41
-msgid "Could not build transaction"
-msgstr ""
-
-#: src/js/services/walletService.js:854
-msgid "Could not create address"
-msgstr ""
-
-#: src/js/controllers/topup.js:92
-msgid "Could not create the invoice"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:164
-#: src/js/controllers/buyMercadoLibre.js:164
-#: src/js/controllers/topup.js:142
-msgid "Could not create transaction"
-msgstr ""
-
-#: src/js/services/profileService.js:350
-msgid "Could not create using the specified extended private key"
-msgstr ""
-
-#: src/js/services/profileService.js:362
-msgid "Could not create using the specified extended public key"
-msgstr ""
-
-#: src/js/services/profileService.js:338
-msgid "Could not create: Invalid wallet recovery phrase"
-msgstr ""
-
-#: src/js/controllers/import.js:114
-msgid "Could not decrypt file, check your password"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:181
-msgid "Could not delete payment proposal"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:117
-msgid "Could not duplicate"
-msgstr ""
-
-#: src/js/services/feeService.js:73
-msgid "Could not get dynamic fee"
-msgstr ""
-
-#: src/js/services/feeService.js:43
-msgid "Could not get dynamic fee for level: {{feeLevel}}"
-msgstr ""
-
-#: src/js/controllers/modals/feeLevels.js:112
-msgid "Could not get fee levels"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:122
-#: src/js/controllers/buyMercadoLibre.js:122
-#: src/js/controllers/topup.js:100
-msgid "Could not get the invoice"
-msgstr ""
-
-#: src/js/controllers/bitpayCard.js:66
-msgid "Could not get transactions"
-msgstr ""
-
-#: src/js/services/profileService.js:615
-#: src/js/services/profileService.js:650
-#: src/js/services/profileService.js:674
-msgid "Could not import"
-msgstr ""
-
-#: src/js/services/profileService.js:584
-msgid "Could not import. Check input file and spending password"
-msgstr ""
-
-#: src/js/services/profileService.js:457
-msgid "Could not join wallet"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:161
-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:147
-msgid "Could not send payment"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:325
-#: src/js/controllers/buyMercadoLibre.js:318
-#: src/js/controllers/topup.js:299
-msgid "Could not send transaction"
-msgstr ""
-
-#: www/views/walletDetails.html:210
-msgid "Could not update transaction history"
-msgstr ""
-
-#: src/js/controllers/addresses.js:29
-#: src/js/controllers/addresses.js:37
-#: 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:75
-#: www/views/tab-send.html:75
-msgid "Create bitcoin wallet"
-msgstr ""
-
-#: www/views/tab-create-personal.html:131
-msgid "Create new wallet"
-msgstr ""
-
-#: www/views/add.html:22
-msgid "Create shared wallet"
-msgstr ""
-
-#: www/views/tab-create-shared.html:160
-msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet"
-msgstr ""
-
-#: www/views/modals/txp-details.html:81
-#: www/views/tx-details.html:60
-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:85
-msgid "Custom Fee"
-msgstr ""
-
-#: www/views/modals/mercadolibre-card-details.html:56
-#: www/views/modals/txp-details.html:87
-#: www/views/tx-details.html:66
-msgid "Date"
-msgstr ""
-
-#: www/views/preferencesDeleteWallet.html:21
-msgid "Delete"
-msgstr ""
-
-#: www/views/modals/txp-details.html:164
-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:141
-#: www/views/tab-create-personal.html:111
-#: www/views/tab-create-shared.html:140
-#: www/views/tab-import-phrase.html:49
-msgid "Derivation Path"
-msgstr ""
-
-#: www/views/preferencesInformation.html:47
-msgid "Derivation Strategy"
-msgstr ""
-
-#: www/views/buyAmazon.html:39
-#: www/views/buyMercadoLibre.html:38
-#: www/views/modals/mercadolibre-card-details.html:6
-#: www/views/topup.html:45
-msgid "Details"
-msgstr ""
-
-#: src/js/controllers/lockSetup.js:9
-#: src/js/controllers/tab-settings.js:65
-#: www/views/tab-settings.html:50
-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/cashScan.html:37
-msgid "Duplicate for BCH"
-msgstr ""
-
-#: src/js/services/onGoingProcess.js:49
-msgid "Duplicating wallet..."
-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/preferencesCash.html:17
-msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-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/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr ""
-
-#: www/views/tab-scan.html:18
-msgid "Enable the camera to get started."
-msgstr ""
-
-#: www/views/tab-settings.html:49
-msgid "Enabled"
-msgstr ""
-
-#: src/js/services/walletService.js:1047
-#: src/js/services/walletService.js:1062
-msgid "Enter Spending Password"
-msgstr ""
-
-#: src/js/services/bitpayAccountService.js:110
-msgid "Enter Two Factor for your BitPay account"
-msgstr ""
-
-#: www/views/amount.html:4
-msgid "Enter amount"
-msgstr ""
-
-#: www/views/modals/chooseFeeLevel.html:41
-msgid "Enter custom fee"
-msgstr ""
-
-#: src/js/services/walletService.js:1029
-msgid "Enter new spending password"
-msgstr ""
-
-#: www/views/join.html:79
-#: www/views/tab-create-personal.html:51
-#: www/views/tab-create-shared.html:80
-msgid "Enter the recovery phrase (BIP39)"
-msgstr ""
-
-#: www/views/onboarding/collectEmail.html:13
-msgid "Enter your email"
-msgstr ""
-
-#: www/views/backup.html:69
-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:42
-#: src/js/controllers/addresses.js:125
-#: src/js/controllers/addresses.js:126
-#: src/js/controllers/bitpayCard.js:66
-#: src/js/controllers/bitpayCardIntro.js:40
-#: src/js/controllers/bitpayCardIntro.js:81
-#: src/js/controllers/buyAmazon.js:24
-#: src/js/controllers/buyAmazon.js:35
-#: src/js/controllers/buyMercadoLibre.js:24
-#: src/js/controllers/buyMercadoLibre.js:35
-#: src/js/controllers/confirm.js:307
-#: src/js/controllers/copayers.js:67
-#: src/js/controllers/create.js:161
-#: src/js/controllers/create.js:174
-#: src/js/controllers/create.js:180
-#: src/js/controllers/create.js:186
-#: src/js/controllers/create.js:208
-#: src/js/controllers/create.js:215
-#: src/js/controllers/create.js:233
-#: 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:119
-#: src/js/controllers/import.js:131
-#: src/js/controllers/import.js:149
-#: src/js/controllers/import.js:200
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:238
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:266
-#: src/js/controllers/import.js:278
-#: src/js/controllers/import.js:288
-#: src/js/controllers/import.js:312
-#: src/js/controllers/import.js:325
-#: src/js/controllers/import.js:335
-#: src/js/controllers/import.js:345
-#: src/js/controllers/import.js:369
-#: src/js/controllers/import.js:382
-#: src/js/controllers/import.js:85
-#: src/js/controllers/import.js:98
-#: src/js/controllers/join.js:125
-#: src/js/controllers/join.js:139
-#: src/js/controllers/join.js:145
-#: src/js/controllers/join.js:151
-#: src/js/controllers/join.js:174
-#: src/js/controllers/join.js:182
-#: src/js/controllers/join.js:200
-#: src/js/controllers/modals/feeLevels.js:9
-#: src/js/controllers/modals/txpDetails.js:140
-#: 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:36
-#: src/js/controllers/preferencesExternal.js:20
-#: src/js/controllers/tab-home.js:174
-#: src/js/controllers/tab-send.js:143
-#: src/js/controllers/tabsController.js:36
-#: src/js/controllers/tabsController.js:7
-#: src/js/controllers/topup.js:21
-#: src/js/controllers/topup.js:32
-#: src/js/controllers/tx-details.js:119
-#: src/js/services/incomingData.js:101
-#: src/js/services/incomingData.js:125
-#: src/js/services/incomingData.js:168
-#: www/views/mercadoLibreCards.html:19
-#: www/views/modals/mercadolibre-card-details.html:45
-msgid "Error"
-msgstr ""
-
-#: src/js/controllers/confirm.js:502
-msgid "Error at confirm"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:179
-msgid "Error creating gift card"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:94
-#: src/js/controllers/buyMercadoLibre.js:94
-msgid "Error creating the invoice"
-msgstr ""
-
-#: src/js/services/profileService.js:412
-msgid "Error creating wallet"
-msgstr ""
-
-#: src/js/controllers/confirm.js:296
-msgid "Error getting SendMax information"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:136
-#: src/js/controllers/buyMercadoLibre.js:136
-#: src/js/controllers/topup.js:114
-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:90
-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:461
-#: www/views/confirm.html:27
-#: www/views/mercadoLibreCards.html:25
-#: www/views/modals/mercadolibre-card-details.html:34
-#: www/views/modals/txp-details.html:119
-msgid "Expired"
-msgstr ""
-
-#: www/views/modals/paypro.html:54
-#: www/views/modals/txp-details.html:125
-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:1174
-#: www/views/tab-export-qrCode.html:9
-msgid "Exporting via QR not supported for this wallet"
-msgstr ""
-
-#: www/views/preferencesInformation.html:89
-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:79
-msgid "Fee"
-msgstr ""
-
-#: www/views/modals/chooseFeeLevel.html:75
-msgid "Fee level"
-msgstr ""
-
-#: src/js/controllers/modals/feeLevels.js:100
-msgid "Fee level is not defined"
-msgstr ""
-
-#: www/views/confirm.html:79
-#: www/views/modals/txp-details.html:99
-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 ""
-
-#: www/views/preferencesLogs.html:17
-msgid "Filter setting"
-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:123
-#: www/views/tab-create-shared.html:152
-msgid "For audit purposes"
-msgstr ""
-
-#: src/js/controllers/topup.js:308
-#: www/views/buyAmazon.html:29
-#: www/views/buyMercadoLibre.html:28
-#: www/views/confirm.html:65
-#: www/views/modals/txp-details.html:74
-#: www/views/topup.html:34
-#: www/views/tx-details.html:52
-#: www/views/review.html:22
-msgid "From"
-msgstr ""
-
-#: src/js/controllers/bitpayCardIntro.js:71
-msgid "From BitPay account"
-msgstr ""
-
-#: www/views/tab-import-phrase.html:57
-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:51
-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/onboarding/welcome.html:8
-#: www/views/bitpayCard.html:49
-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
-#: www/views/buyMercadoLibre.html:42
-msgid "Gift Card"
-msgstr ""
-
-#: www/views/modals/mercadolibre-card-details.html:30
-#: www/views/modals/mercadolibre-card-details.html:35
-msgid "Gift Card is not available to use anymore"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:204
-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/cashScan.js:20
-#: src/js/controllers/onboarding/terms.js:23
-#: src/js/controllers/preferences.js:67
-#: src/js/controllers/preferencesAbout.js:16
-#: src/js/controllers/preferencesCash.js:34
-#: src/js/controllers/preferencesLanguage.js:14
-#: src/js/controllers/tab-home.js:149
-#: src/js/controllers/tab-settings.js:53
-#: src/js/controllers/tx-details.js:193
-#: src/js/controllers/tx-details.js:56
-msgid "Go Back"
-msgstr ""
-
-#: src/js/controllers/confirm.js:131
-#: 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:53
-#: www/views/preferencesInformation.html:59
-msgid "Hardware Wallet"
-msgstr ""
-
-#: www/views/preferencesExternal.html:18
-msgid "Hardware not connected."
-msgstr ""
-
-#: www/views/import.html:20
-msgid "Hardware wallet"
-msgstr ""
-
-#: src/js/controllers/create.js:180
-#: src/js/controllers/join.js:145
-msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr ""
-
-#: www/views/tab-settings.html:20
-msgid "Help & Support"
-msgstr ""
-
-#: src/js/controllers/bitpayCard.js:112
-#: src/js/controllers/tab-settings.js:51
-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:30
-msgid "Hide Next Steps Card"
-msgstr ""
-
-#: www/views/join.html:49
-#: www/views/tab-create-personal.html:28
-#: www/views/tab-create-shared.html:57
-#: www/views/tab-export-file.html:25
-#: www/views/tab-import-file.html:30
-#: www/views/tab-import-hardware.html:31
-#: www/views/tab-import-phrase.html:36
-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:137
-#: www/views/tab-create-personal.html:107
-#: www/views/tab-create-shared.html:136
-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:36
-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:23
-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:14
-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:80
-msgid "Import"
-msgstr ""
-
-#: www/views/import.html:3
-msgid "Import Wallet"
-msgstr ""
-
-#: www/views/tab-import-file.html:41
-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:72
-msgid "In order to verify your wallet backup, please type your password."
-msgstr ""
-
-#: www/views/mercadoLibreCards.html:24
-#: www/views/modals/mercadolibre-card-details.html:29
-msgid "Inactive"
-msgstr ""
-
-#: www/views/includes/walletItem.html:9
-#: www/views/includes/walletList.html:6
-#: www/views/includes/walletListSettings.html:9
-#: www/views/includes/walletSelector.html:16
-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:85
-msgid "Incorrect code format"
-msgstr ""
-
-#: src/js/services/bwcError.js:113
-msgid "Incorrect network address"
-msgstr ""
-
-#: src/js/controllers/confirm.js:114
-#: src/js/controllers/confirm.js:306
-#: src/js/services/bwcError.js:44
-msgid "Insufficient confirmed funds"
-msgstr ""
-
-#: src/js/controllers/topup.js:165
-#: src/js/controllers/topup.js:177
-#: src/js/services/bwcError.js:71
-msgid "Insufficient funds for fee"
-msgstr ""
-
-#: www/views/tab-settings.html:123
-msgid "Integrations"
-msgstr ""
-
-#: www/views/includes/walletHistory.html:49
-msgid "Invalid"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:137
-#: src/js/controllers/buyMercadoLibre.js:137
-#: src/js/controllers/topup.js:115
-msgid "Invalid URL"
-msgstr ""
-
-#: src/js/controllers/create.js:186
-#: src/js/controllers/import.js:345
-#: src/js/controllers/join.js:151
-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:161
-#: src/js/controllers/import.js:266
-#: src/js/controllers/join.js:125
-msgid "Invalid derivation path"
-msgstr ""
-
-#: src/js/controllers/copayers.js:90
-msgid "Invitation to share a {{appName}} Wallet"
-msgstr ""
-
-#: www/views/mercadoLibreCards.html:20
-#: www/views/modals/mercadolibre-card-details.html:48
-msgid "Invoice expired"
-msgstr ""
-
-#: src/js/controllers/feedback/send.js:79
-msgid "Is there anything we could do better?"
-msgstr ""
-
-#: www/views/backup.html:54
-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:151
-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:68
-msgid "Language"
-msgstr ""
-
-#: www/views/bitpayCard.html:61
-msgid "Last Month"
-msgstr ""
-
-#: src/js/controllers/confirm.js:132
-#: www/views/preferences.html:48
-#: www/views/preferencesCash.html:18
-#: www/views/tx-details.html:94
-msgid "Learn more"
-msgstr ""
-
-#: www/views/backup.html:43
-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:100
-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/includes/logOptions.html:3
-msgid "Log options"
-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:85
-msgid "Me"
-msgstr ""
-
-#: src/js/controllers/feedback/rateCard.js:32
-msgid "Meh - it's alright"
-msgstr ""
-
-#: src/js/controllers/tx-details.js:165
-#: www/views/modals/paypro.html:48
-#: www/views/modals/txp-details.html:93
-#: www/views/tx-details.html:72
-msgid "Memo"
-msgstr ""
-
-#: www/views/mercadoLibre.html:6
-msgid "Mercado Livre Brazil Gift Cards"
-msgstr ""
-
-#: src/js/controllers/buyMercadoLibre.js:98
-msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr ""
-
-#: www/views/modals/txp-details.html:131
-msgid "Merchant Message"
-msgstr ""
-
-#: www/views/buyAmazon.html:55
-#: www/views/buyMercadoLibre.html:54
-#: www/views/topup.html:63
-msgid "Miner Fee"
-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:61
-#: 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:131
-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:49
-#: www/views/buyMercadoLibre.html:48
-#: www/views/topup.html:56
-msgid "Network Cost"
-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:126
-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:115
-#: src/js/controllers/buyMercadoLibre.js:115
-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/preferencesLogs.html:16
-msgid "No entries for this log level"
-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:44
-#: src/js/controllers/topup.js:47
-msgid "No signing proposal: No private key"
-msgstr ""
-
-#: www/views/walletDetails.html:204
-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:300
-#: src/js/controllers/buyMercadoLibre.js:292
-#: src/js/controllers/confirm.js:85
-#: src/js/controllers/topup.js:265
-msgid "No wallets available"
-msgstr ""
-
-#: www/views/paperWallet.html:45
-msgid "No wallets available to receive funds"
-msgstr ""
-
-#: www/views/cashScan.html:15
-msgid "No wallets eligible for Bitcoin Cash support"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:58
-msgid "Non BIP44 wallet"
-msgstr ""
-
-#: www/views/cashScan.html:46
-msgid "Non eligible BTC wallets"
-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:307
-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/backup.html:19
-msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-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:61
-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:312
-#: src/js/controllers/topup.js:286
-#: src/js/services/incomingData.js:153
-#: 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 ""
-
-#: src/js/controllers/buyMercadoLibre.js:306
-msgid "Ok"
-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/cashScan.js:19
-#: src/js/controllers/preferences.js:66
-#: src/js/controllers/preferencesCash.js:33
-#: src/js/controllers/tab-settings.js:52
-#: src/js/controllers/tx-details.js:55
-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:192
-msgid "Open Explorer"
-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 ""
-
-#: src/js/controllers/preferencesCash.js:32
-msgid "Open bitcoincash.org?"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:18
-msgid "Open the recovery tool."
-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:105
-#: www/views/join.html:96
-#: www/views/tab-create-personal.html:69
-#: www/views/tab-create-personal.html:77
-#: www/views/tab-create-shared.html:106
-#: www/views/tab-create-shared.html:98
-#: www/views/tab-import-file.html:18
-#: www/views/tab-import-phrase.html:41
-msgid "Password"
-msgstr ""
-
-#: src/js/controllers/import.js:98
-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:51
-#: 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:44
-#: www/views/confirm.html:124
-#: www/views/includes/walletActivity.html:11
-#: www/views/modals/txp-details.html:42
-msgid "Payment Sent"
-msgstr ""
-
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-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 ""
-
-#: src/js/services/incomingData.js:152
-msgid "Payment address was translated to new Bitcoin Cash address format:"
-msgstr ""
-
-#: www/views/modals/txp-details.html:107
-msgid "Payment details"
-msgstr ""
-
-#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr ""
-
-#: www/views/mercadoLibreCards.html:22
-#: www/views/modals/mercadolibre-card-details.html:39
-msgid "Pending"
-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:403
-msgid "Personal Wallet"
-msgstr ""
-
-#: www/views/backup.html:25
-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:278
-msgid "Please enter the recovery phrase"
-msgstr ""
-
-#: src/js/controllers/create.js:174
-#: src/js/controllers/join.js:139
-msgid "Please enter the wallet recovery phrase"
-msgstr ""
-
-#: www/views/modals/pin.html:9
-msgid "Please enter your PIN"
-msgstr ""
-
-#: www/views/backup.html:53
-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 ""
-
-#: www/views/walletDetails.html:142
-#: www/views/walletDetails.html:62
-msgid "Please wait"
-msgstr ""
-
-#: src/js/controllers/import.js:238
-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:1264
-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:136
-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:61
-#: src/js/controllers/tx-details.js:78
-#: www/views/confirm.html:125
-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:189
-msgid "Proposals"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:282
-msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
-msgstr ""
-
-#: src/js/controllers/buyMercadoLibre.js:281
-msgid "Purchase amount must be a value between 50 and 2000"
-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:84
-#: src/js/controllers/join.js:68
-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 ""
-
-#: src/js/controllers/preferences.js:65
-#: src/js/controllers/tx-details.js:54
-msgid "Read more in our Wiki"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:61
-msgid "Read only wallet"
-msgstr ""
-
-#: www/views/tab-receive.html:3
-#: www/views/tabs.html:7
-msgid "Receive"
-msgstr ""
-
-#: www/views/customAmount.html:44
-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:130
-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:21
-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 ""
-
-#: src/js/services/onGoingProcess.js:26
-msgid "Recreating Wallet..."
-msgstr ""
-
-#: www/views/modals/mercadolibre-card-details.html:22
-msgid "Redeem now"
-msgstr ""
-
-#: src/js/controllers/modals/txpDetails.js:63
-#: src/js/controllers/tx-details.js:80
-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
-#: www/views/modals/mercadolibre-card-details.html:69
-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:116
-#: www/views/join.html:124
-#: www/views/tab-create-personal.html:86
-#: www/views/tab-create-personal.html:94
-#: www/views/tab-create-shared.html:115
-#: www/views/tab-create-shared.html:123
-#: 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:56
-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:44
-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 ""
-
-#: www/views/preferencesCash.html:23
-msgid "Scan your wallets for Bitcoin Cash"
-msgstr ""
-
-#: src/js/services/onGoingProcess.js:30
-msgid "Scanning Wallet funds..."
-msgstr ""
-
-#: www/views/includes/walletList.html:11
-msgid "Scanning 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 ""
-
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr ""
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-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/modals/mercadolibre-card-details.html:64
-msgid "See invoice"
-msgstr ""
-
-#: www/views/tab-import-file.html:7
-msgid "Select a backup file"
-msgstr ""
-
-#: src/js/controllers/tab-receive.js:139
-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/includes/logOptions.html:17
-#: www/views/tab-export-file.html:82
-msgid "Send by email"
-msgstr ""
-
-#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
-msgid "Send from"
-msgstr ""
-
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr ""
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr ""
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr ""
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr ""
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr ""
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr ""
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr ""
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr ""
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr ""
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr ""
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr ""
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr ""
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr ""
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-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:545
-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:129
-msgid "Sent Funds"
-msgstr ""
-
-#: src/js/services/bwcError.js:38
-msgid "Server response could not be verified"
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:97
-#: src/js/controllers/buyMercadoLibre.js:97
-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:85
-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:48
-#: www/views/tab-create-personal.html:27
-#: www/views/tab-create-shared.html:56
-#: www/views/tab-export-file.html:24
-#: www/views/tab-import-file.html:29
-#: www/views/tab-import-hardware.html:30
-#: www/views/tab-import-phrase.html:35
-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:122
-#: www/views/tab-create-shared.html:151
-msgid "Single Address Wallet"
-msgstr ""
-
-#: www/views/onboarding/collectEmail.html:40
-#: www/views/onboarding/tour.html:11
-msgid "Skip"
-msgstr ""
-
-#: src/js/controllers/confirm.js:371
-#: src/js/controllers/modals/txpDetails.js:47
-msgid "Slide to accept"
-msgstr ""
-
-#: www/views/buyAmazon.html:96
-msgid "Slide to buy"
-msgstr ""
-
-#: src/js/controllers/confirm.js:365
-msgid "Slide to pay"
-msgstr ""
-
-#: src/js/controllers/confirm.js:377
-#: src/js/controllers/modals/txpDetails.js:40
-msgid "Slide to send"
-msgstr ""
-
-#: www/views/cashScan.html:56
-msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-msgstr ""
-
-#: src/js/controllers/create.js:88
-#: src/js/controllers/join.js:71
-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:173
-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/mercadoLibreCards.html:21
-#: www/views/modals/mercadolibre-card-details.html:42
-msgid "Still pending"
-msgstr ""
-
-#: www/views/topup.html:101
-msgid "Success"
-msgstr ""
-
-#: src/js/services/feeService.js:14
-msgid "Super Economy"
-msgstr ""
-
-#: www/views/preferencesCash.html:11
-msgid "Support Bitcoin Cash"
-msgstr ""
-
-#: www/views/paperWallet.html:7
-msgid "Sweep"
-msgstr ""
-
-#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr ""
-
-#: www/views/paperWallet.html:3
-msgctxt "Page title"
-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:132
-#: www/views/walletDetails.html:52
-msgid "Tap and hold to show"
-msgstr ""
-
-#: www/views/includes/walletInfo.html:3
-msgid "Tap to recreate"
-msgstr ""
-
-#: www/views/includes/walletInfo.html:4
-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:118
-#: www/views/tab-import-phrase.html:68
-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:1139
-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:91
-#: www/views/tab-create-personal.html:63
-#: www/views/tab-create-shared.html:92
-#: www/views/tab-import-phrase.html:43
-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:229
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:335
-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:523
-msgid "This bitcoin payment request has expired."
-msgstr ""
-
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr ""
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr ""
-
-#: www/views/join.html:133
-#: www/views/tab-create-personal.html:103
-#: www/views/tab-create-shared.html:132
-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:31
-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:91
-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:87
-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:109
-#: www/views/walletDetails.html:29
-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:136
-#: 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:109
-#: 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 ""
-
-#: 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:206
-msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-msgstr ""
-
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr ""
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr ""
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr ""
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr ""
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr ""
-
-#: www/views/buyAmazon.html:61
-#: www/views/buyMercadoLibre.html:60
-#: www/views/modals/wallet-balance.html:23
-#: www/views/topup.html:70
-msgid "Total"
-msgstr ""
-
-#: www/views/walletDetails.html:196
-msgid "Total Locked Balance"
-msgstr ""
-
-#: www/views/tab-create-shared.html:35
-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:12
-msgid "Transaction"
-msgstr ""
-
-#: www/views/confirm.html:126
-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:308
-#: src/js/controllers/buyMercadoLibre.js:301
-#: src/js/controllers/topup.js:281
-msgid "Transaction has not been created"
-msgstr ""
-
-#: www/views/topup.html:104
-msgid "Transaction initiated"
-msgstr ""
-
-#: src/js/controllers/tx-details.js:119
-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:55
-msgid "Transactions without fee are not supported."
-msgstr ""
-
-#: src/js/controllers/paperWallet.js:109
-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/walletDetails.html:190
-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:217
-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:12
-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:191
-msgid "View Transaction on Explorer.Bitcoin.com"
-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/mercadoLibre.html:26
-msgid "Visit mercadolivre.com.br →"
-msgstr ""
-
-#: www/views/walletDetails.html:182
-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:29
-msgid "Wallet Configuration (m-n)"
-msgstr ""
-
-#: www/views/onboarding/collectEmail.html:5
-msgid "Wallet Created"
-msgstr ""
-
-#: www/views/preferencesInformation.html:23
-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:60
-#: www/views/tab-create-personal.html:38
-#: www/views/tab-create-shared.html:67
-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:35
-msgid "Wallet Network"
-msgstr ""
-
-#: www/views/join.html:77
-#: www/views/tab-create-personal.html:50
-#: www/views/tab-create-shared.html:79
-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:73
-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:61
-msgid "Wallet Type"
-msgstr ""
-
-#: src/js/services/bwcError.js:59
-msgid "Wallet already exists"
-msgstr ""
-
-#: src/js/services/profileService.js:516
-msgid "Wallet already in {{appName}}"
-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:169
-msgid "Wallet not backed up"
-msgstr ""
-
-#: src/js/services/bwcError.js:68
-msgid "Wallet not found"
-msgstr ""
-
-#: src/js/controllers/cashScan.js:81
-#: src/js/controllers/tab-home.js:230
-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:12
-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 ""
-
-#: src/js/controllers/addressbookView.js:36
-#: src/js/controllers/modals/txpDetails.js:153
-#: src/js/controllers/modals/txpDetails.js:170
-#: src/js/controllers/preferencesDelete.js:24
-#: 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:35
-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:288
-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:15
-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:64
-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/mercadoLibre.html:57
-#: www/views/mercadoLibreCards.html:6
-msgid "Your Gift Cards"
-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:61
-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:1030
-msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
-msgstr ""
-
-#: www/views/includes/walletList.html:13
-#: www/views/includes/walletSelector.html:21
-#: www/views/paperWallet.html:33
-#: www/views/tab-receive.html:72
-#: www/views/walletDetails.html:131
-#: www/views/walletDetails.html:51
-msgid "[Balance Hidden]"
-msgstr ""
-
-#: www/views/walletDetails.html:141
-#: www/views/walletDetails.html:61
-msgid "[Scanning Funds]"
-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:404
-msgid "me"
-msgstr ""
-
-#: www/views/addressbook.add.html:32
-msgid "name@example.com"
-msgstr ""
-
-#: www/views/preferencesHistory.html:15
-msgid "preparing..."
-msgstr ""
-
-#: www/views/cashScan.html:57
-msgid "recovery tool."
-msgstr ""
-
-#: src/js/controllers/buyAmazon.js:239
-msgid "{{amountStr}} for Amazon.com Gift Card"
-msgstr ""
-
-#: src/js/controllers/buyMercadoLibre.js:237
-msgid "{{amountStr}} for Mercado Livre Brazil 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:408
-msgid "{{fee}} will be deducted for bitcoin networking fees."
-msgstr ""
-
-#: www/views/confirm.html:85
-msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-msgstr ""
-
-#: www/views/walletDetails.html:218
-msgid "{{updatingTxHistoryProgress}} transactions downloaded"
-msgstr ""
-
-#: www/views/cashScan.html:33
-#: www/views/copayers.html:46
-#: www/views/includes/walletInfo.html:18
-msgid "{{wallet.m}}-of-{{wallet.n}}"
-msgstr ""
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr ""
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr ""
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr ""
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr ""
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr ""
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr ""
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr ""
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr ""
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr ""
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr ""
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr ""
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr ""
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr ""
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr ""
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr ""
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr ""
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr ""
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr ""
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr ""
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr ""
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr ""
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr ""
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr ""
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr ""
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr ""
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr ""
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr ""
\ No newline at end of file
+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:159
+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:82
+msgid "- {{btx.feeRateStr}} of the transaction"
+msgstr ""
+
+#: www/views/modals/txp-details.html:102
+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 ""
+
+#: www/views/mercadoLibre.html:18
+#: www/views/mercadoLibre.html:40
+msgid "Only redeemable on Mercado Livre (Brazil)"
+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:401
+msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded."
+msgstr ""
+
+#: src/js/controllers/confirm.js:395
+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:62
+#: src/js/controllers/tx-details.js:79
+msgid "Accepted"
+msgstr ""
+
+#: www/views/preferencesInformation.html:72
+msgid "Account"
+msgstr ""
+
+#: www/views/join.html:72
+#: www/views/tab-create-personal.html:45
+#: www/views/tab-create-shared.html:74
+#: 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:94
+msgid "Add Memo"
+msgstr ""
+
+#: www/views/join.html:87
+#: www/views/tab-create-personal.html:59
+#: www/views/tab-create-shared.html:88
+msgid "Add a password"
+msgstr ""
+
+#: www/views/includes/accountSelector.html:27
+msgid "Add account"
+msgstr ""
+
+#: www/views/join.html:90
+#: www/views/tab-create-personal.html:62
+#: www/views/tab-create-shared.html:91
+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:424
+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:41
+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:79
+msgid "Alternative Currency"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:98
+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:216
+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:37
+msgid "Are you sure you want to delete this contact?"
+msgstr ""
+
+#: src/js/controllers/preferencesDelete.js:25
+msgid "Are you sure you want to delete this wallet?"
+msgstr ""
+
+#: src/js/controllers/modals/txpDetails.js:154
+msgid "Are you sure you want to reject this transaction?"
+msgstr ""
+
+#: src/js/controllers/modals/txpDetails.js:171
+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:10
+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:143
+#: www/views/tab-create-personal.html:113
+#: www/views/tab-create-shared.html:142
+#: www/views/tab-import-phrase.html:51
+msgid "BIP32 path for address derivation"
+msgstr ""
+
+#: www/views/cashScan.html:25
+msgid "BTC wallets"
+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 ""
+
+#: src/js/controllers/cashScan.js:64
+#: www/views/includes/walletListSettings.html:12
+#: www/views/preferences.html:36
+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:446
+msgid "Bad wallet invitation"
+msgstr ""
+
+#: www/views/preferencesInformation.html:102
+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/cashScan.html:4
+msgid "Bitcoin Cash (BCH) Balances"
+msgstr ""
+
+#: www/views/preferencesCash.html:3
+#: www/views/tab-settings.html:47
+msgid "Bitcoin Cash Support"
+msgstr ""
+
+#: www/views/tab-home.html:98
+#: www/views/tab-settings.html:115
+msgid "Bitcoin Cash Wallets"
+msgstr ""
+
+#: www/views/modals/chooseFeeLevel.html:4
+#: www/views/preferencesFee.html:4
+#: www/views/tab-settings.html:90
+msgid "Bitcoin Network Fee Policy"
+msgstr ""
+
+#: www/views/tab-home.html:83
+#: www/views/tab-settings.html:107
+msgid "Bitcoin Core Wallets"
+msgstr ""
+
+#: src/js/services/incomingData.js:151
+msgid "Bitcoin cash Payment"
+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:64
+#: src/js/controllers/tx-details.js:81
+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
+#: www/views/buyMercadoLibre.html:6
+msgid "Buy"
+msgstr ""
+
+#: www/views/includes/buyAndSellCard.html:3
+msgid "Buy & Sell Bitcoin"
+msgstr ""
+
+#: www/views/tab-send.html:35
+msgid "Buy Bitcoin"
+msgstr ""
+
+#: www/views/mercadoLibre.html:22
+#: www/views/mercadoLibre.html:50
+msgid "Buy a Gift Card"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:334
+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:313
+#: src/js/controllers/buyMercadoLibre.js:307
+#: src/js/controllers/confirm.js:550
+#: src/js/controllers/topup.js:287
+#: src/js/services/incomingData.js:154
+#: 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:442
+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:61
+msgid "Clear"
+msgstr ""
+
+#: www/views/preferencesHistory.html:24
+msgid "Clear cache"
+msgstr ""
+
+#: src/js/controllers/confirm.js:373
+#: src/js/controllers/modals/txpDetails.js:49
+msgid "Click to accept"
+msgstr ""
+
+#: src/js/controllers/confirm.js:367
+msgid "Click to pay"
+msgstr ""
+
+#: src/js/controllers/confirm.js:379
+#: src/js/controllers/modals/txpDetails.js:42
+msgid "Click to send"
+msgstr ""
+
+#: www/views/customAmount.html:4
+#: www/views/modals/mercadolibre-card-details.html:3
+#: 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/includes/cash.html:2
+#: www/views/preferencesInformation.html:17
+msgid "Coin"
+msgstr ""
+
+#: www/views/preferences.html:22
+msgid "Color"
+msgstr ""
+
+#: www/views/preferencesAbout.html:21
+msgid "Commit hash"
+msgstr ""
+
+#: www/views/preferences.html:49
+msgid "Complete the backup process to use this option"
+msgstr ""
+
+#: www/views/bitpayCard.html:93
+msgid "Completed"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:311
+#: src/js/controllers/buyMercadoLibre.js:305
+#: src/js/controllers/confirm.js:549
+#: src/js/controllers/copayers.js:55
+#: src/js/controllers/topup.js:285
+#: www/views/backup.html:60
+#: www/views/backup.html:79
+#: 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:1033
+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/controllers/confirm.js:130
+msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
+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:94
+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/includes/logOptions.html:9
+#: www/views/tab-export-file.html:78
+msgid "Copy to clipboard"
+msgstr ""
+
+#: src/js/controllers/buyMercadoLibre.js:102
+msgid "Could not access Gift Card Service"
+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:102
+msgid "Could not access to Amazon.com"
+msgstr ""
+
+#: src/js/services/profileService.js:511
+msgid "Could not access wallet"
+msgstr ""
+
+#: src/js/controllers/confirm.js:210
+msgid "Could not add message to imported wallet without shared encrypting key"
+msgstr ""
+
+#: src/js/controllers/modals/txpDetails.js:199
+msgid "Could not broadcast payment"
+msgstr ""
+
+#: src/js/services/bwcError.js:41
+msgid "Could not build transaction"
+msgstr ""
+
+#: src/js/services/walletService.js:854
+msgid "Could not create address"
+msgstr ""
+
+#: src/js/controllers/topup.js:92
+msgid "Could not create the invoice"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:164
+#: src/js/controllers/buyMercadoLibre.js:164
+#: src/js/controllers/topup.js:142
+msgid "Could not create transaction"
+msgstr ""
+
+#: src/js/services/profileService.js:350
+msgid "Could not create using the specified extended private key"
+msgstr ""
+
+#: src/js/services/profileService.js:362
+msgid "Could not create using the specified extended public key"
+msgstr ""
+
+#: src/js/services/profileService.js:338
+msgid "Could not create: Invalid wallet recovery phrase"
+msgstr ""
+
+#: src/js/controllers/import.js:114
+msgid "Could not decrypt file, check your password"
+msgstr ""
+
+#: src/js/controllers/modals/txpDetails.js:181
+msgid "Could not delete payment proposal"
+msgstr ""
+
+#: src/js/controllers/cashScan.js:117
+msgid "Could not duplicate"
+msgstr ""
+
+#: src/js/services/feeService.js:73
+msgid "Could not get dynamic fee"
+msgstr ""
+
+#: src/js/services/feeService.js:43
+msgid "Could not get dynamic fee for level: {{feeLevel}}"
+msgstr ""
+
+#: src/js/controllers/modals/feeLevels.js:112
+msgid "Could not get fee levels"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:122
+#: src/js/controllers/buyMercadoLibre.js:122
+#: src/js/controllers/topup.js:100
+msgid "Could not get the invoice"
+msgstr ""
+
+#: src/js/controllers/bitpayCard.js:66
+msgid "Could not get transactions"
+msgstr ""
+
+#: src/js/services/profileService.js:615
+#: src/js/services/profileService.js:650
+#: src/js/services/profileService.js:674
+msgid "Could not import"
+msgstr ""
+
+#: src/js/services/profileService.js:584
+msgid "Could not import. Check input file and spending password"
+msgstr ""
+
+#: src/js/services/profileService.js:457
+msgid "Could not join wallet"
+msgstr ""
+
+#: src/js/controllers/modals/txpDetails.js:161
+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:147
+msgid "Could not send payment"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:325
+#: src/js/controllers/buyMercadoLibre.js:318
+#: src/js/controllers/topup.js:299
+msgid "Could not send transaction"
+msgstr ""
+
+#: www/views/walletDetails.html:210
+msgid "Could not update transaction history"
+msgstr ""
+
+#: src/js/controllers/addresses.js:29
+#: src/js/controllers/addresses.js:37
+#: 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:75
+#: www/views/tab-send.html:36
+msgid "Create bitcoin wallet"
+msgstr ""
+
+#: www/views/tab-create-personal.html:131
+msgid "Create new wallet"
+msgstr ""
+
+#: www/views/add.html:22
+msgid "Create shared wallet"
+msgstr ""
+
+#: www/views/tab-create-shared.html:160
+msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet"
+msgstr ""
+
+#: www/views/modals/txp-details.html:81
+#: www/views/tx-details.html:60
+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:85
+msgid "Custom Fee"
+msgstr ""
+
+#: www/views/modals/mercadolibre-card-details.html:56
+#: www/views/modals/txp-details.html:87
+#: www/views/tx-details.html:66
+msgid "Date"
+msgstr ""
+
+#: www/views/preferencesDeleteWallet.html:21
+msgid "Delete"
+msgstr ""
+
+#: www/views/modals/txp-details.html:164
+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:141
+#: www/views/tab-create-personal.html:111
+#: www/views/tab-create-shared.html:140
+#: www/views/tab-import-phrase.html:49
+msgid "Derivation Path"
+msgstr ""
+
+#: www/views/preferencesInformation.html:47
+msgid "Derivation Strategy"
+msgstr ""
+
+#: www/views/buyAmazon.html:39
+#: www/views/buyMercadoLibre.html:38
+#: www/views/modals/mercadolibre-card-details.html:6
+#: www/views/topup.html:45
+msgid "Details"
+msgstr ""
+
+#: src/js/controllers/lockSetup.js:9
+#: src/js/controllers/tab-settings.js:65
+#: www/views/tab-settings.html:50
+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/cashScan.html:37
+msgid "Duplicate for BCH"
+msgstr ""
+
+#: src/js/services/onGoingProcess.js:49
+msgid "Duplicating wallet..."
+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/preferencesCash.html:17
+msgid "Enable Bitcoin Cash wallet creation and operation within the App."
+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/preferencesNotifications.html:33
+msgid "Enable sound"
+msgstr ""
+
+#: www/views/tab-scan.html:18
+msgid "Enable the camera to get started."
+msgstr ""
+
+#: www/views/tab-settings.html:49
+msgid "Enabled"
+msgstr ""
+
+#: src/js/services/walletService.js:1047
+#: src/js/services/walletService.js:1062
+msgid "Enter Spending Password"
+msgstr ""
+
+#: src/js/services/bitpayAccountService.js:110
+msgid "Enter Two Factor for your BitPay account"
+msgstr ""
+
+#: www/views/amount.html:4
+msgid "Enter amount"
+msgstr ""
+
+#: www/views/modals/chooseFeeLevel.html:41
+msgid "Enter custom fee"
+msgstr ""
+
+#: src/js/services/walletService.js:1029
+msgid "Enter new spending password"
+msgstr ""
+
+#: www/views/join.html:79
+#: www/views/tab-create-personal.html:51
+#: www/views/tab-create-shared.html:80
+msgid "Enter the recovery phrase (BIP39)"
+msgstr ""
+
+#: www/views/onboarding/collectEmail.html:13
+msgid "Enter your email"
+msgstr ""
+
+#: www/views/backup.html:69
+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:42
+#: src/js/controllers/addresses.js:125
+#: src/js/controllers/addresses.js:126
+#: src/js/controllers/bitpayCard.js:66
+#: src/js/controllers/bitpayCardIntro.js:40
+#: src/js/controllers/bitpayCardIntro.js:81
+#: src/js/controllers/buyAmazon.js:24
+#: src/js/controllers/buyAmazon.js:35
+#: src/js/controllers/buyMercadoLibre.js:24
+#: src/js/controllers/buyMercadoLibre.js:35
+#: src/js/controllers/confirm.js:307
+#: src/js/controllers/copayers.js:67
+#: src/js/controllers/create.js:161
+#: src/js/controllers/create.js:174
+#: src/js/controllers/create.js:180
+#: src/js/controllers/create.js:186
+#: src/js/controllers/create.js:208
+#: src/js/controllers/create.js:215
+#: src/js/controllers/create.js:233
+#: 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:119
+#: src/js/controllers/import.js:131
+#: src/js/controllers/import.js:149
+#: src/js/controllers/import.js:200
+#: src/js/controllers/import.js:229
+#: src/js/controllers/import.js:238
+#: src/js/controllers/import.js:254
+#: src/js/controllers/import.js:266
+#: src/js/controllers/import.js:278
+#: src/js/controllers/import.js:288
+#: src/js/controllers/import.js:312
+#: src/js/controllers/import.js:325
+#: src/js/controllers/import.js:335
+#: src/js/controllers/import.js:345
+#: src/js/controllers/import.js:369
+#: src/js/controllers/import.js:382
+#: src/js/controllers/import.js:85
+#: src/js/controllers/import.js:98
+#: src/js/controllers/join.js:125
+#: src/js/controllers/join.js:139
+#: src/js/controllers/join.js:145
+#: src/js/controllers/join.js:151
+#: src/js/controllers/join.js:174
+#: src/js/controllers/join.js:182
+#: src/js/controllers/join.js:200
+#: src/js/controllers/modals/feeLevels.js:9
+#: src/js/controllers/modals/txpDetails.js:140
+#: 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:36
+#: src/js/controllers/preferencesExternal.js:20
+#: src/js/controllers/tab-home.js:174
+#: src/js/controllers/tab-send.js:143
+#: src/js/controllers/tabsController.js:36
+#: src/js/controllers/tabsController.js:7
+#: src/js/controllers/topup.js:21
+#: src/js/controllers/topup.js:32
+#: src/js/controllers/tx-details.js:119
+#: src/js/services/incomingData.js:101
+#: src/js/services/incomingData.js:125
+#: src/js/services/incomingData.js:168
+#: www/views/mercadoLibreCards.html:19
+#: www/views/modals/mercadolibre-card-details.html:45
+msgid "Error"
+msgstr ""
+
+#: src/js/controllers/confirm.js:502
+msgid "Error at confirm"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:179
+msgid "Error creating gift card"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:94
+#: src/js/controllers/buyMercadoLibre.js:94
+msgid "Error creating the invoice"
+msgstr ""
+
+#: src/js/services/profileService.js:412
+msgid "Error creating wallet"
+msgstr ""
+
+#: src/js/controllers/confirm.js:296
+msgid "Error getting SendMax information"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:136
+#: src/js/controllers/buyMercadoLibre.js:136
+#: src/js/controllers/topup.js:114
+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:90
+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:461
+#: www/views/confirm.html:27
+#: www/views/mercadoLibreCards.html:25
+#: www/views/modals/mercadolibre-card-details.html:34
+#: www/views/modals/txp-details.html:119
+msgid "Expired"
+msgstr ""
+
+#: www/views/modals/paypro.html:54
+#: www/views/modals/txp-details.html:125
+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:1174
+#: www/views/tab-export-qrCode.html:9
+msgid "Exporting via QR not supported for this wallet"
+msgstr ""
+
+#: www/views/preferencesInformation.html:89
+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:79
+msgid "Fee"
+msgstr ""
+
+#: www/views/modals/chooseFeeLevel.html:75
+msgid "Fee level"
+msgstr ""
+
+#: src/js/controllers/modals/feeLevels.js:100
+msgid "Fee level is not defined"
+msgstr ""
+
+#: www/views/confirm.html:79
+#: www/views/modals/txp-details.html:99
+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 ""
+
+#: www/views/preferencesLogs.html:17
+msgid "Filter setting"
+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:123
+#: www/views/tab-create-shared.html:152
+msgid "For audit purposes"
+msgstr ""
+
+#: src/js/controllers/topup.js:308
+#: www/views/buyAmazon.html:29
+#: www/views/buyMercadoLibre.html:28
+#: 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:57
+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:51
+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/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr ""
+
+#: www/views/bitpayCard.html:49
+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
+#: www/views/buyMercadoLibre.html:42
+msgid "Gift Card"
+msgstr ""
+
+#: www/views/modals/mercadolibre-card-details.html:30
+#: www/views/modals/mercadolibre-card-details.html:35
+msgid "Gift Card is not available to use anymore"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:204
+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/cashScan.js:20
+#: src/js/controllers/onboarding/terms.js:23
+#: src/js/controllers/preferences.js:67
+#: src/js/controllers/preferencesAbout.js:16
+#: src/js/controllers/preferencesCash.js:34
+#: src/js/controllers/preferencesLanguage.js:14
+#: src/js/controllers/tab-home.js:149
+#: src/js/controllers/tab-settings.js:53
+#: src/js/controllers/tx-details.js:193
+#: src/js/controllers/tx-details.js:56
+msgid "Go Back"
+msgstr ""
+
+#: src/js/controllers/confirm.js:131
+#: 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:53
+#: www/views/preferencesInformation.html:59
+msgid "Hardware Wallet"
+msgstr ""
+
+#: www/views/preferencesExternal.html:18
+msgid "Hardware not connected."
+msgstr ""
+
+#: www/views/import.html:20
+msgid "Hardware wallet"
+msgstr ""
+
+#: src/js/controllers/create.js:180
+#: src/js/controllers/join.js:145
+msgid "Hardware wallets are not yet supported with Bitcoin Cash"
+msgstr ""
+
+#: www/views/tab-settings.html:20
+msgid "Help & Support"
+msgstr ""
+
+#: src/js/controllers/bitpayCard.js:112
+#: src/js/controllers/tab-settings.js:51
+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:30
+msgid "Hide Next Steps Card"
+msgstr ""
+
+#: www/views/join.html:49
+#: www/views/tab-create-personal.html:28
+#: www/views/tab-create-shared.html:57
+#: www/views/tab-export-file.html:25
+#: www/views/tab-import-file.html:30
+#: www/views/tab-import-hardware.html:31
+#: www/views/tab-import-phrase.html:36
+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:137
+#: www/views/tab-create-personal.html:107
+#: www/views/tab-create-shared.html:136
+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:36
+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:23
+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:14
+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:80
+msgid "Import"
+msgstr ""
+
+#: www/views/import.html:3
+msgid "Import Wallet"
+msgstr ""
+
+#: www/views/tab-import-file.html:41
+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:72
+msgid "In order to verify your wallet backup, please type your password."
+msgstr ""
+
+#: www/views/mercadoLibreCards.html:24
+#: www/views/modals/mercadolibre-card-details.html:29
+msgid "Inactive"
+msgstr ""
+
+#: www/views/includes/walletItem.html:9
+#: www/views/includes/walletList.html:6
+#: www/views/includes/walletListSettings.html:9
+#: www/views/includes/walletSelector.html:16
+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:85
+msgid "Incorrect code format"
+msgstr ""
+
+#: src/js/services/bwcError.js:113
+msgid "Incorrect network address"
+msgstr ""
+
+#: src/js/controllers/confirm.js:114
+#: src/js/controllers/confirm.js:306
+#: src/js/services/bwcError.js:44
+msgid "Insufficient confirmed funds"
+msgstr ""
+
+#: src/js/controllers/topup.js:165
+#: src/js/controllers/topup.js:177
+#: src/js/services/bwcError.js:71
+msgid "Insufficient funds for fee"
+msgstr ""
+
+#: www/views/tab-settings.html:123
+msgid "Integrations"
+msgstr ""
+
+#: www/views/includes/walletHistory.html:49
+msgid "Invalid"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:137
+#: src/js/controllers/buyMercadoLibre.js:137
+#: src/js/controllers/topup.js:115
+msgid "Invalid URL"
+msgstr ""
+
+#: src/js/controllers/create.js:186
+#: src/js/controllers/import.js:345
+#: src/js/controllers/join.js:151
+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:161
+#: src/js/controllers/import.js:266
+#: src/js/controllers/join.js:125
+msgid "Invalid derivation path"
+msgstr ""
+
+#: src/js/controllers/copayers.js:90
+msgid "Invitation to share a {{appName}} Wallet"
+msgstr ""
+
+#: www/views/mercadoLibreCards.html:20
+#: www/views/modals/mercadolibre-card-details.html:48
+msgid "Invoice expired"
+msgstr ""
+
+#: src/js/controllers/feedback/send.js:79
+msgid "Is there anything we could do better?"
+msgstr ""
+
+#: www/views/backup.html:54
+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:151
+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:68
+msgid "Language"
+msgstr ""
+
+#: www/views/bitpayCard.html:61
+msgid "Last Month"
+msgstr ""
+
+#: src/js/controllers/confirm.js:132
+#: www/views/preferences.html:48
+#: www/views/preferencesCash.html:18
+#: www/views/tx-details.html:94
+msgid "Learn more"
+msgstr ""
+
+#: www/views/backup.html:43
+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:100
+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/includes/logOptions.html:3
+msgid "Log options"
+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:85
+msgid "Me"
+msgstr ""
+
+#: src/js/controllers/feedback/rateCard.js:32
+msgid "Meh - it's alright"
+msgstr ""
+
+#: src/js/controllers/tx-details.js:165
+#: www/views/modals/paypro.html:48
+#: www/views/modals/txp-details.html:93
+#: www/views/tx-details.html:72
+msgid "Memo"
+msgstr ""
+
+#: www/views/mercadoLibre.html:6
+msgid "Mercado Livre Brazil Gift Cards"
+msgstr ""
+
+#: src/js/controllers/buyMercadoLibre.js:98
+msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
+msgstr ""
+
+#: www/views/modals/txp-details.html:131
+msgid "Merchant Message"
+msgstr ""
+
+#: www/views/buyAmazon.html:55
+#: www/views/buyMercadoLibre.html:54
+#: www/views/topup.html:63
+msgid "Miner Fee"
+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:61
+#: 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:131
+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:49
+#: www/views/buyMercadoLibre.html:48
+#: www/views/topup.html:56
+msgid "Network Cost"
+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:126
+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:115
+#: src/js/controllers/buyMercadoLibre.js:115
+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/preferencesLogs.html:16
+msgid "No entries for this log level"
+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:44
+#: src/js/controllers/topup.js:47
+msgid "No signing proposal: No private key"
+msgstr ""
+
+#: www/views/walletDetails.html:204
+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:300
+#: src/js/controllers/buyMercadoLibre.js:292
+#: src/js/controllers/confirm.js:85
+#: src/js/controllers/topup.js:265
+msgid "No wallets available"
+msgstr ""
+
+#: www/views/paperWallet.html:45
+msgid "No wallets available to receive funds"
+msgstr ""
+
+#: www/views/cashScan.html:15
+msgid "No wallets eligible for Bitcoin Cash support"
+msgstr ""
+
+#: src/js/controllers/cashScan.js:58
+msgid "Non BIP44 wallet"
+msgstr ""
+
+#: www/views/cashScan.html:46
+msgid "Non eligible BTC wallets"
+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:307
+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/backup.html:19
+msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
+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:61
+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:312
+#: src/js/controllers/topup.js:286
+#: src/js/services/incomingData.js:153
+#: 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 ""
+
+#: src/js/controllers/buyMercadoLibre.js:306
+msgid "Ok"
+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/cashScan.js:19
+#: src/js/controllers/preferences.js:66
+#: src/js/controllers/preferencesCash.js:33
+#: src/js/controllers/tab-settings.js:52
+#: src/js/controllers/tx-details.js:55
+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:192
+msgid "Open Explorer"
+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 ""
+
+#: src/js/controllers/preferencesCash.js:32
+msgid "Open bitcoincash.org?"
+msgstr ""
+
+#: src/js/controllers/cashScan.js:18
+msgid "Open the recovery tool."
+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:105
+#: www/views/join.html:96
+#: www/views/tab-create-personal.html:69
+#: www/views/tab-create-personal.html:77
+#: www/views/tab-create-shared.html:106
+#: www/views/tab-create-shared.html:98
+#: www/views/tab-import-file.html:18
+#: www/views/tab-import-phrase.html:41
+msgid "Password"
+msgstr ""
+
+#: src/js/controllers/import.js:98
+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:51
+#: 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:44
+#: www/views/confirm.html:124
+#: 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 ""
+
+#: src/js/services/incomingData.js:152
+msgid "Payment address was translated to new Bitcoin Cash address format:"
+msgstr ""
+
+#: www/views/modals/txp-details.html:107
+msgid "Payment details"
+msgstr ""
+
+#: www/views/modals/paypro.html:6
+msgid "Payment request"
+msgstr ""
+
+#: www/views/mercadoLibreCards.html:22
+#: www/views/modals/mercadolibre-card-details.html:39
+msgid "Pending"
+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:403
+msgid "Personal Wallet"
+msgstr ""
+
+#: www/views/backup.html:25
+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:278
+msgid "Please enter the recovery phrase"
+msgstr ""
+
+#: src/js/controllers/create.js:174
+#: src/js/controllers/join.js:139
+msgid "Please enter the wallet recovery phrase"
+msgstr ""
+
+#: www/views/modals/pin.html:9
+msgid "Please enter your PIN"
+msgstr ""
+
+#: www/views/backup.html:53
+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 ""
+
+#: www/views/walletDetails.html:142
+#: www/views/walletDetails.html:62
+msgid "Please wait"
+msgstr ""
+
+#: src/js/controllers/import.js:238
+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:1264
+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:136
+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:61
+#: src/js/controllers/tx-details.js:78
+#: www/views/confirm.html:125
+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:189
+msgid "Proposals"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:282
+msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
+msgstr ""
+
+#: src/js/controllers/buyMercadoLibre.js:281
+msgid "Purchase amount must be a value between 50 and 2000"
+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:84
+#: src/js/controllers/join.js:68
+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 ""
+
+#: src/js/controllers/preferences.js:65
+#: src/js/controllers/tx-details.js:54
+msgid "Read more in our Wiki"
+msgstr ""
+
+#: src/js/controllers/cashScan.js:61
+msgid "Read only wallet"
+msgstr ""
+
+#: www/views/tab-receive.html:3
+#: www/views/tabs.html:7
+msgid "Receive"
+msgstr ""
+
+#: www/views/customAmount.html:44
+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:130
+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:21
+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 ""
+
+#: src/js/services/onGoingProcess.js:26
+msgid "Recreating Wallet..."
+msgstr ""
+
+#: www/views/modals/mercadolibre-card-details.html:22
+msgid "Redeem now"
+msgstr ""
+
+#: src/js/controllers/modals/txpDetails.js:63
+#: src/js/controllers/tx-details.js:80
+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
+#: www/views/modals/mercadolibre-card-details.html:69
+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:116
+#: www/views/join.html:124
+#: www/views/tab-create-personal.html:86
+#: www/views/tab-create-personal.html:94
+#: www/views/tab-create-shared.html:115
+#: www/views/tab-create-shared.html:123
+#: 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:56
+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:44
+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 ""
+
+#: www/views/preferencesCash.html:23
+msgid "Scan your wallets for Bitcoin Cash"
+msgstr ""
+
+#: src/js/services/onGoingProcess.js:30
+msgid "Scanning Wallet funds..."
+msgstr ""
+
+#: www/views/includes/walletList.html:11
+msgid "Scanning 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/modals/mercadolibre-card-details.html:64
+msgid "See invoice"
+msgstr ""
+
+#: www/views/tab-import-file.html:7
+msgid "Select a backup file"
+msgstr ""
+
+#: src/js/controllers/tab-receive.js:139
+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/includes/logOptions.html:17
+#: www/views/tab-export-file.html:82
+msgid "Send by email"
+msgstr ""
+
+#: src/js/controllers/confirm.js:177
+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:545
+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:129
+msgid "Sent Funds"
+msgstr ""
+
+#: src/js/services/bwcError.js:38
+msgid "Server response could not be verified"
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:97
+#: src/js/controllers/buyMercadoLibre.js:97
+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:85
+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:48
+#: www/views/tab-create-personal.html:27
+#: www/views/tab-create-shared.html:56
+#: www/views/tab-export-file.html:24
+#: www/views/tab-import-file.html:29
+#: www/views/tab-import-hardware.html:30
+#: www/views/tab-import-phrase.html:35
+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:122
+#: www/views/tab-create-shared.html:151
+msgid "Single Address Wallet"
+msgstr ""
+
+#: www/views/onboarding/collectEmail.html:40
+#: www/views/onboarding/tour.html:11
+msgid "Skip"
+msgstr ""
+
+#: src/js/controllers/confirm.js:371
+#: src/js/controllers/modals/txpDetails.js:47
+msgid "Slide to accept"
+msgstr ""
+
+#: www/views/buyAmazon.html:96
+msgid "Slide to buy"
+msgstr ""
+
+#: src/js/controllers/confirm.js:365
+msgid "Slide to pay"
+msgstr ""
+
+#: src/js/controllers/confirm.js:377
+#: src/js/controllers/modals/txpDetails.js:40
+msgid "Slide to send"
+msgstr ""
+
+#: www/views/cashScan.html:56
+msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
+msgstr ""
+
+#: src/js/controllers/create.js:88
+#: src/js/controllers/join.js:71
+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:173
+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/mercadoLibreCards.html:21
+#: www/views/modals/mercadolibre-card-details.html:42
+msgid "Still pending"
+msgstr ""
+
+#: www/views/topup.html:101
+msgid "Success"
+msgstr ""
+
+#: src/js/services/feeService.js:14
+msgid "Super Economy"
+msgstr ""
+
+#: www/views/preferencesCash.html:11
+msgid "Support Bitcoin Cash"
+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:132
+#: www/views/walletDetails.html:52
+msgid "Tap and hold to show"
+msgstr ""
+
+#: www/views/includes/walletInfo.html:3
+msgid "Tap to recreate"
+msgstr ""
+
+#: www/views/includes/walletInfo.html:4
+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:118
+#: www/views/tab-import-phrase.html:68
+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:1139
+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:91
+#: www/views/tab-create-personal.html:63
+#: www/views/tab-create-shared.html:92
+#: www/views/tab-import-phrase.html:43
+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:229
+#: src/js/controllers/import.js:254
+#: src/js/controllers/import.js:335
+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:523
+msgid "This bitcoin payment request has expired."
+msgstr ""
+
+#: www/views/join.html:133
+#: www/views/tab-create-personal.html:103
+#: www/views/tab-create-shared.html:132
+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:31
+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:91
+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:87
+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:109
+#: www/views/walletDetails.html:29
+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:136
+#: 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:109
+#: 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:206
+msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
+msgstr ""
+
+#: www/views/buyAmazon.html:61
+#: www/views/buyMercadoLibre.html:60
+#: www/views/modals/wallet-balance.html:23
+#: www/views/topup.html:70
+msgid "Total"
+msgstr ""
+
+#: www/views/walletDetails.html:196
+msgid "Total Locked Balance"
+msgstr ""
+
+#: www/views/tab-create-shared.html:35
+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:12
+msgid "Transaction"
+msgstr ""
+
+#: www/views/confirm.html:126
+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:308
+#: src/js/controllers/buyMercadoLibre.js:301
+#: src/js/controllers/topup.js:281
+msgid "Transaction has not been created"
+msgstr ""
+
+#: www/views/topup.html:104
+msgid "Transaction initiated"
+msgstr ""
+
+#: src/js/controllers/tx-details.js:119
+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:55
+msgid "Transactions without fee are not supported."
+msgstr ""
+
+#: src/js/controllers/paperWallet.js:109
+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/walletDetails.html:190
+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:217
+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:12
+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:191
+msgid "View Transaction on Explorer.Bitcoin.com"
+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/mercadoLibre.html:26
+msgid "Visit mercadolivre.com.br →"
+msgstr ""
+
+#: www/views/walletDetails.html:182
+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:29
+msgid "Wallet Configuration (m-n)"
+msgstr ""
+
+#: www/views/onboarding/collectEmail.html:5
+msgid "Wallet Created"
+msgstr ""
+
+#: www/views/preferencesInformation.html:23
+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:60
+#: www/views/tab-create-personal.html:38
+#: www/views/tab-create-shared.html:67
+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:35
+msgid "Wallet Network"
+msgstr ""
+
+#: www/views/join.html:77
+#: www/views/tab-create-personal.html:50
+#: www/views/tab-create-shared.html:79
+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:73
+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:61
+msgid "Wallet Type"
+msgstr ""
+
+#: src/js/services/bwcError.js:59
+msgid "Wallet already exists"
+msgstr ""
+
+#: src/js/services/profileService.js:516
+msgid "Wallet already in {{appName}}"
+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:169
+msgid "Wallet not backed up"
+msgstr ""
+
+#: src/js/services/bwcError.js:68
+msgid "Wallet not found"
+msgstr ""
+
+#: src/js/controllers/cashScan.js:81
+#: src/js/controllers/tab-home.js:230
+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:12
+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 ""
+
+#: src/js/controllers/addressbookView.js:36
+#: src/js/controllers/modals/txpDetails.js:153
+#: src/js/controllers/modals/txpDetails.js:170
+#: src/js/controllers/preferencesDelete.js:24
+#: 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:35
+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:288
+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:15
+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:64
+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/mercadoLibre.html:57
+#: www/views/mercadoLibreCards.html:6
+msgid "Your Gift Cards"
+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:61
+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:1030
+msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
+msgstr ""
+
+#: www/views/includes/walletList.html:13
+#: www/views/includes/walletSelector.html:21
+#: www/views/paperWallet.html:33
+#: www/views/tab-receive.html:72
+#: www/views/walletDetails.html:131
+#: www/views/walletDetails.html:51
+msgid "[Balance Hidden]"
+msgstr ""
+
+#: www/views/walletDetails.html:141
+#: www/views/walletDetails.html:61
+msgid "[Scanning Funds]"
+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:404
+msgid "me"
+msgstr ""
+
+#: www/views/addressbook.add.html:32
+msgid "name@example.com"
+msgstr ""
+
+#: www/views/preferencesHistory.html:15
+msgid "preparing..."
+msgstr ""
+
+#: www/views/cashScan.html:57
+msgid "recovery tool."
+msgstr ""
+
+#: src/js/controllers/buyAmazon.js:239
+msgid "{{amountStr}} for Amazon.com Gift Card"
+msgstr ""
+
+#: src/js/controllers/buyMercadoLibre.js:237
+msgid "{{amountStr}} for Mercado Livre Brazil 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:408
+msgid "{{fee}} will be deducted for bitcoin networking fees."
+msgstr ""
+
+#: www/views/confirm.html:85
+msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
+msgstr ""
+
+#: www/views/walletDetails.html:218
+msgid "{{updatingTxHistoryProgress}} transactions downloaded"
+msgstr ""
+
+#: www/views/cashScan.html:33
+#: www/views/copayers.html:46
+#: www/views/includes/walletInfo.html:18
+msgid "{{wallet.m}}-of-{{wallet.n}}"
+msgstr ""
diff --git a/i18n/po/vi/template-vi.po b/i18n/po/vi/template-vi.po
deleted file mode 100644
index 29e62e498..000000000
--- a/i18n/po/vi/template-vi.po
+++ /dev/null
@@ -1,3946 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
-"X-Crowdin-Language: vi\n"
-"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
-"Language-Team: Vietnamese\n"
-"Language: vi\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
-
-#: www/views/modals/paypro.html:34
-msgid "(Trusted)"
-msgstr "(Đáng tin cậy)"
-
-#: www/views/includes/txp.html:23
-#: www/views/includes/walletHistory.html:64
-msgid "(possible double spend)"
-msgstr "(có thể chi tiêu gấp đôi)"
-
-#: www/views/modals/txp-details.html:159
-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 "* 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."
-
-#: www/views/tx-details.html:82
-msgid "- {{btx.feeRateStr}} of the transaction"
-msgstr "- {{btx.feeRateStr}} of the transaction"
-
-#: www/views/modals/txp-details.html:102
-msgid "- {{tx.feeRateStr}} of the transaction"
-msgstr "{{tx.feeRateStr}} của giao dịch"
-
-#: 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 "{{appName}} 5-star ratings help us get {{appName}} into more hands, and more users means more resources can be committed to the app!"
-
-#: www/views/mercadoLibre.html:18
-#: www/views/mercadoLibre.html:40
-msgid "Only redeemable on Mercado Livre (Brazil)"
-msgstr "Only redeemable on \n"
-"Mercado Livre (Brazil) #\n\n"
-"2"
-
-#: 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 "A member of the team will review your feedback as soon as possible."
-
-#: src/js/controllers/confirm.js:401
-msgid "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded."
-msgstr "A total of {{amountAboveMaxSizeStr}} were excluded. The maximum size allowed for a transaction was exceeded."
-
-#: src/js/controllers/confirm.js:395
-msgid "A total of {{amountBelowFeeStr}} were excluded. These funds come from UTXOs smaller than the network fee provided."
-msgstr "{{amountBelowFeeStr}} Tổng cộng {{amountBelowFeeStr}} đã bị loại trừ. Số tiền này đến từ UTXOs nhỏ hơn chi phí mạng cung cấp.#\n"
-"1."
-
-#: src/js/controllers/preferencesAbout.js:6
-#: www/views/tab-settings.html:156
-msgid "About"
-msgstr "About"
-
-#: src/js/controllers/modals/txpDetails.js:62
-#: src/js/controllers/tx-details.js:79
-msgid "Accepted"
-msgstr "Chấp nhận"
-
-#: www/views/preferencesInformation.html:72
-msgid "Account"
-msgstr "Account"
-
-#: www/views/join.html:72
-#: www/views/tab-create-personal.html:45
-#: www/views/tab-create-shared.html:74
-#: www/views/tab-import-hardware.html:19
-msgid "Account Number"
-msgstr "Account Number0941162662"
-
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "Instant transactions with low fees"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "Not enough money"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "Change Currency"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "Available Fund"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "Use All Available Funds"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "Tiếp theo"
-
-#: www/views/preferencesBitpayServices.html:23
-msgid "Accounts"
-msgstr "Accounts"
-
-#: www/views/bitpayCard.html:56
-msgid "Activity"
-msgstr "Activity"
-
-#: src/js/services/bitpayAccountService.js:83
-msgid "Add Account"
-msgstr "Add Account"
-
-#: src/js/services/bitpayAccountService.js:69
-msgid "Add BitPay Account?"
-msgstr "Add BitPay Account?"
-
-#: www/views/addressbook.add.html:4
-#: www/views/addressbook.html:22
-msgid "Add Contact"
-msgstr "Add Contact"
-
-#: www/views/bitpayCard.html:28
-msgid "Add Funds"
-msgstr "Add Funds"
-
-#: www/views/confirm.html:94
-msgid "Add Memo"
-msgstr "Add Memo"
-
-#: www/views/join.html:87
-#: www/views/tab-create-personal.html:59
-#: www/views/tab-create-shared.html:88
-msgid "Add a password"
-msgstr "Add a password"
-
-#: www/views/includes/accountSelector.html:27
-msgid "Add account"
-msgstr "Add account"
-
-#: www/views/join.html:90
-#: www/views/tab-create-personal.html:62
-#: www/views/tab-create-shared.html:91
-msgid "Add an optional password to secure the recovery phrase"
-msgstr "Add an optional password to secure the recovery phrase"
-
-#: www/views/includes/incomingDataMenu.html:41
-msgid "Add as a contact"
-msgstr "Thêm như một liên hệ"
-
-#: src/js/controllers/confirm.js:424
-msgid "Add description"
-msgstr "Add description"
-
-#: www/views/topup.html:6
-msgid "Add funds"
-msgstr "Nạp tiền"
-
-#: src/js/services/bitpayAccountService.js:78
-msgid "Add this BitPay account ({{email}})?"
-msgstr "Add this BitPay account ({{email}})?"
-
-#: www/views/add.html:3
-msgid "Add wallet"
-msgstr "Thêm ví"
-
-#: www/views/addressbook.view.html:26
-#: www/views/customAmount.html:28
-#: www/views/modals/paypro.html:24
-msgid "Address"
-msgstr "Address"
-
-#: www/views/addressbook.html:6
-#: www/views/tab-settings.html:13
-msgid "Address Book"
-msgstr "Sổ địa chỉ"
-
-#: www/views/preferencesInformation.html:41
-msgid "Address Type"
-msgstr "Address Type"
-
-#: www/views/addresses.html:64
-msgid "Addresses With Balance"
-msgstr "Addresses With Balance"
-
-#: www/views/tab-settings.html:149
-msgid "Advanced"
-msgstr "Nâng cao"
-
-#: www/views/advancedSettings.html:3
-msgid "Advanced Settings"
-msgstr "Advanced Settings"
-
-#: www/views/bitpayCard.html:62
-msgid "All"
-msgstr "Tất cả"
-
-#: www/views/allAddresses.html:3
-msgid "All Addresses"
-msgstr "All Addresses"
-
-#: www/views/modals/wallet-balance.html:18
-msgid "All of your bitcoin wallet balance may not be available for immediate spending."
-msgstr "Tất cả số dư ví bitcoin của bạn có thể không có sẵn cho chi tiêu ngay lập tức."
-
-#: www/views/tab-receive.html:25
-msgid "All signing devices must be added to this multisig wallet before bitcoin addresses can be created."
-msgstr "All signing devices must be added to this multisig wallet before bitcoin addresses can be created."
-
-#: www/views/tab-scan.html:21
-msgid "Allow Camera Access"
-msgstr "Allow Camera Access"
-
-#: www/views/onboarding/notifications.html:7
-msgid "Allow notifications"
-msgstr "Allow notification"
-
-#: www/views/onboarding/disclaimer.html:14
-msgid "Almost done! Let's review."
-msgstr "Almost done! Let's review."
-
-#: www/views/preferencesAltCurrency.html:4
-#: www/views/tab-settings.html:79
-msgid "Alternative Currency"
-msgstr "Alternative Currency"
-
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "Price Display"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "Fiat"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "Cryptocurrencyg"
-
-#: src/js/controllers/buyAmazon.js:98
-msgid "Amazon.com is not available at this moment. Please try back later."
-msgstr "Amazon.com is not available at this moment. Please try back later."
-
-#: www/views/amount.html:44
-#: www/views/customAmount.html:34
-#: www/views/includes/output.html:7
-msgid "Amount"
-msgstr "Amount"
-
-#: src/js/services/bwcError.js:110
-msgid "Amount below minimum allowed"
-msgstr "Amount below minimum allowed"
-
-#: src/js/controllers/confirm.js:216
-msgid "Amount too big"
-msgstr "Amount too big"
-
-#: www/views/includes/walletHistory.html:31
-msgid "Amount too low to spend"
-msgstr "Amount too low to spend"
-
-#: 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 "An update to this app is available. For your security, please update to the latest version."
-
-#: www/views/backupWarning.html:14
-msgid "Anyone with your backup phrase can access or spend your bitcoin."
-msgstr "Anyone with your backup phrase can access or spend your bitcoin."
-
-#: www/views/addresses.html:94
-msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-msgstr "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-
-#: www/views/backupWarning.html:10
-msgid "Are you being watched?"
-msgstr "Are you being watched?"
-
-#: src/js/controllers/preferencesExternal.js:15
-msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin."
-msgstr "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin."
-
-#: src/js/controllers/copayers.js:56
-msgid "Are you sure you want to cancel and delete this wallet?"
-msgstr "Are you sure you want to cancel and delete this wallet?"
-
-#: src/js/controllers/addressbookView.js:37
-msgid "Are you sure you want to delete this contact?"
-msgstr "Are you sure you want to delete this contact?"
-
-#: src/js/controllers/preferencesDelete.js:25
-msgid "Are you sure you want to delete this wallet?"
-msgstr "Are you sure you want to delete this wallet?"
-
-#: src/js/controllers/modals/txpDetails.js:154
-msgid "Are you sure you want to reject this transaction?"
-msgstr "Are you sure you want to reject this transaction?"
-
-#: src/js/controllers/modals/txpDetails.js:171
-msgid "Are you sure you want to remove this transaction?"
-msgstr "Are you sure you want to remove this transaction?"
-
-#: src/js/controllers/onboarding/backupRequest.js:23
-msgid "Are you sure you want to skip it?"
-msgstr "Are you sure you want to skip it?"
-
-#: www/views/modals/bitpay-card-confirmation.html:4
-msgid "Are you sure you would like to log out of your BitPay Card account?"
-msgstr "Are you sure you would like to log out of your BitPay Card account?"
-
-#: 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 "Are you sure you would like to remove your BitPay Card ({{lastFourDigits}}) from this device?"
-
-#: www/views/includes/walletInfo.html:10
-msgid "Auditable"
-msgstr "Auditable"
-
-#: www/views/modals/wallet-balance.html:42
-msgid "Available"
-msgstr "Available"
-
-#: www/views/includes/available-balance.html:3
-msgid "Available Balance"
-msgstr "Available Balance"
-
-#: www/views/modals/chooseFeeLevel.html:24
-#: www/views/preferencesFee.html:15
-msgid "Average confirmation time"
-msgstr "Average confirmation time"
-
-#: www/views/join.html:143
-#: www/views/tab-create-personal.html:113
-#: www/views/tab-create-shared.html:142
-#: www/views/tab-import-phrase.html:51
-msgid "BIP32 path for address derivation"
-msgstr "BIP32 path for address derivation"
-
-#: www/views/cashScan.html:25
-msgid "BTC wallets"
-msgstr "BTC wallets"
-
-#: www/views/preferences.html:34
-msgid "Backup"
-msgstr "Backup"
-
-#: www/views/includes/backupNeededPopup.html:7
-msgid "Backup Needed"
-msgstr "Backup Needed"
-
-#: src/js/controllers/lockSetup.js:87
-msgid "Backup all livenet wallets before using this function"
-msgstr "Backup all livenet wallets before using this function"
-
-#: src/js/controllers/cashScan.js:64
-#: www/views/includes/walletListSettings.html:12
-#: www/views/preferences.html:36
-msgid "Backup needed"
-msgstr "Backup needed"
-
-#: www/views/includes/backupNeededPopup.html:9
-msgid "Backup now"
-msgstr "Backup now"
-
-#: www/views/onboarding/backupRequest.html:11
-#: www/views/tab-export-file.html:89
-msgid "Backup wallet"
-msgstr "Backup wallet"
-
-#: src/js/controllers/lockSetup.js:84
-msgid "Backup your wallet before using this function"
-msgstr "Backup your wallet before using this function"
-
-#: src/js/services/profileService.js:446
-msgid "Bad wallet invitation"
-msgstr "Bad wallet invitation"
-
-#: www/views/preferencesInformation.html:102
-msgid "Balance By Address"
-msgstr "Balance By Address"
-
-#: 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 "Be sure to store your recovery phrase in a secure place. If this app is deleted, your money cannot be recovered without it."
-
-#: www/views/preferencesBitpayServices.html:9
-msgid "BitPay Visa® Cards"
-msgstr "BitPay Visa & reg; thẻ"
-
-#: www/views/addressbook.add.html:38
-#: www/views/includes/incomingDataMenu.html:29
-msgid "Bitcoin Address"
-msgstr "Bitcoin Address"
-
-#: www/views/cashScan.html:4
-msgid "Bitcoin Cash (BCH) Balances"
-msgstr "Bitcoin Cash (BCH) Balances"
-
-#: www/views/preferencesCash.html:3
-#: www/views/tab-settings.html:47
-msgid "Bitcoin Cash Support"
-msgstr "Bitcoin Cash Support"
-
-#: www/views/tab-home.html:98
-#: www/views/tab-settings.html:115
-msgid "Bitcoin Cash Wallets"
-msgstr "Bitcoin Cash Wallets"
-
-#: www/views/modals/chooseFeeLevel.html:4
-#: www/views/preferencesFee.html:4
-#: www/views/tab-settings.html:90
-msgid "Bitcoin Network Fee Policy"
-msgstr "Bitcoin Network Fee Policy"
-
-#: www/views/tab-home.html:83
-#: www/views/tab-settings.html:107
-msgid "Bitcoin Core Wallets"
-msgstr "Bitcoin Core Wallets"
-
-#: src/js/services/incomingData.js:151
-msgid "Bitcoin cash Payment"
-msgstr "Bitcoin cash Payment"
-
-#: www/views/onboarding/tour.html:31
-msgid "Bitcoin is a currency."
-msgstr "Bitcoin is a currency."
-
-#: 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 "Bitcoin is secure, digital money."
-
-#: 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 "Bought {{amountUnitStr}}"
-
-#: www/views/modals/txp-details.html:36
-msgid "Broadcast Payment"
-msgstr "Broadcast Payment"
-
-#: src/js/controllers/modals/txpDetails.js:64
-#: src/js/controllers/tx-details.js:81
-msgid "Broadcasted"
-msgstr "Broadcasted"
-
-#: src/js/services/onGoingProcess.js:11
-msgid "Broadcasting transaction"
-msgstr "Broadcasting transaction"
-
-#: www/views/unsupported.html:6
-msgid "Browser unsupported"
-msgstr "Browser unsupported"
-
-#: www/views/buyAmazon.html:5
-#: www/views/buyMercadoLibre.html:6
-msgid "Buy"
-msgstr "Browser unsupported"
-
-#: www/views/includes/buyAndSellCard.html:3
-msgid "Buy & Sell Bitcoin"
-msgstr "Buy & Sell Bitcoin"
-
-#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
-msgid "Buy Bitcoin"
-msgstr "Buy Bitcoin"
-
-#: www/views/mercadoLibre.html:22
-#: www/views/mercadoLibre.html:50
-msgid "Buy a Gift Card"
-msgstr "Buy a Gift Card"
-
-#: src/js/controllers/buyAmazon.js:334
-msgid "Buy from"
-msgstr "Buy from"
-
-#: src/js/services/onGoingProcess.js:40
-msgid "Buying Bitcoin..."
-msgstr "Buying Bitcoin..."
-
-#: src/js/services/onGoingProcess.js:12
-msgid "Calculating fee"
-msgstr "Calculating fee"
-
-#: src/js/controllers/buyAmazon.js:313
-#: src/js/controllers/buyMercadoLibre.js:307
-#: src/js/controllers/confirm.js:550
-#: src/js/controllers/topup.js:287
-#: src/js/services/incomingData.js:154
-#: 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 "Cancel"
-
-#: www/views/copayers.html:36
-msgid "Cancel invitation"
-msgstr "Cancel invitation"
-
-#: src/js/controllers/onboarding/tour.js:52
-msgid "Cannot Create Wallet"
-msgstr "Cannot Create Wallet"
-
-#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
-msgstr ""
-
-#: www/views/includes/bitpayCardsCard.html:2
-msgid "Cards"
-msgstr "Cards"
-
-#: www/views/modals/paypro.html:30
-msgid "Certified by"
-msgstr "Certified by"
-
-#: www/views/preferencesExternal.html:19
-msgid "Check installation and retry."
-msgstr "Check installation and retry."
-
-#: www/views/tab-import-file.html:4
-msgid "Choose a backup file from your computer"
-msgstr "Choose a backup file from your computer"
-
-#: www/views/modals/wallets.html:9
-msgid "Choose your destination wallet"
-msgstr "Choose your destination wallet"
-
-#: www/views/modals/wallets.html:10
-msgid "Choose your source wallet"
-msgstr "Choose your source wallet"
-
-#: www/views/backup.html:61
-msgid "Clear"
-msgstr "Clear"
-
-#: www/views/preferencesHistory.html:24
-msgid "Clear cache"
-msgstr "Clear cache"
-
-#: src/js/controllers/confirm.js:373
-#: src/js/controllers/modals/txpDetails.js:49
-msgid "Click to accept"
-msgstr "Click to accept"
-
-#: src/js/controllers/confirm.js:367
-msgid "Click to pay"
-msgstr "Click to pay"
-
-#: src/js/controllers/confirm.js:379
-#: src/js/controllers/modals/txpDetails.js:42
-msgid "Click to send"
-msgstr "Click to send"
-
-#: www/views/customAmount.html:4
-#: www/views/modals/mercadolibre-card-details.html:3
-#: 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 "Close"
-
-#: www/views/includes/cash.html:2
-#: www/views/preferencesInformation.html:17
-msgid "Coin"
-msgstr "Coin"
-
-#: www/views/preferences.html:22
-msgid "Color"
-msgstr "Color"
-
-#: www/views/preferencesAbout.html:21
-msgid "Commit hash"
-msgstr "Commit hash"
-
-#: www/views/preferences.html:49
-msgid "Complete the backup process to use this option"
-msgstr "Complete the backup process to use this option"
-
-#: www/views/bitpayCard.html:93
-msgid "Completed"
-msgstr "Completed"
-
-#: src/js/controllers/buyAmazon.js:311
-#: src/js/controllers/buyMercadoLibre.js:305
-#: src/js/controllers/confirm.js:549
-#: src/js/controllers/copayers.js:55
-#: src/js/controllers/topup.js:285
-#: www/views/backup.html:60
-#: www/views/backup.html:79
-#: www/views/confirm.html:4
-#: www/views/onboarding/collectEmail.html:32
-msgid "Confirm"
-msgstr "Confirm"
-
-#: www/views/modals/terms.html:26
-#: www/views/onboarding/disclaimer.html:44
-msgid "Confirm & Finish"
-msgstr "Confirm & Finish"
-
-#: www/views/buyAmazon.html:90
-msgid "Confirm purchase"
-msgstr "Confirm purchase"
-
-#: www/views/modals/pin.html:10
-msgid "Confirm your PIN"
-msgstr "Confirm your PIN"
-
-#: src/js/services/walletService.js:1033
-msgid "Confirm your new spending password"
-msgstr "Confirm your new spending password"
-
-#: 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 "Confirming"
-
-#: www/views/bitpayCardIntro.html:37
-msgid "Connect my BitPay Card"
-msgstr "Connect my BitPay Card"
-
-#: src/js/services/onGoingProcess.js:13
-msgid "Connecting to Coinbase..."
-msgstr "Connecting to Coinbase..."
-
-#: src/js/services/onGoingProcess.js:14
-msgid "Connecting to Glidera..."
-msgstr "Connecting to Glidera..."
-
-#: src/js/services/bwcError.js:53
-msgid "Connection reset by peer"
-msgstr "Connection reset by peer"
-
-#: www/views/tab-send.html:85
-msgid "Contacts"
-msgstr "Contacts"
-
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "Saved frequently used addresses"
-
-#: www/views/onboarding/notifications.html:9
-msgid "Continue"
-msgstr "Continue"
-
-#: www/views/preferencesLanguage.html:26
-msgid "Contribute Translations"
-msgstr "Contribute Translations"
-
-#: src/js/controllers/confirm.js:130
-msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-msgstr "Copay only supports Bitcoin Cash using new version numbers addresses"
-
-#: src/js/services/bwcError.js:62
-msgid "Copayer already in this wallet"
-msgstr "Copayer already in this wallet"
-
-#: src/js/services/bwcError.js:77
-msgid "Copayer already voted on this spend proposal"
-msgstr "Copayer already voted on this spend proposal"
-
-#: src/js/services/bwcError.js:107
-msgid "Copayer data mismatch"
-msgstr "Copayer data mismatch"
-
-#: www/views/includes/walletActivity.html:2
-msgid "Copayer joined"
-msgstr "Copayer joined"
-
-#: www/views/preferencesInformation.html:94
-msgid "Copayer {{$index}}"
-msgstr "Copayer {{$index}}"
-
-#: src/js/controllers/copayers.js:79
-#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
-#: www/views/includes/copyToClipboard.html:4
-msgid "Copied to clipboard"
-msgstr "Copied to clipboard"
-
-#: www/views/tab-export-file.html:94
-msgid "Copy this text as it is to a safe place (notepad or email)"
-msgstr "Copy this text as it is to a safe place (notepad or email)"
-
-#: www/views/includes/incomingDataMenu.html:51
-#: www/views/includes/incomingDataMenu.html:70
-#: www/views/includes/incomingDataMenu.html:94
-#: www/views/includes/logOptions.html:9
-#: www/views/tab-export-file.html:78
-msgid "Copy to clipboard"
-msgstr "Copy to clipboard"
-
-#: src/js/controllers/buyMercadoLibre.js:102
-msgid "Could not access Gift Card Service"
-msgstr "Could not access Gift Card Service"
-
-#: www/views/tab-import-phrase.html:2
-msgid "Could not access the wallet at the server. Please check:"
-msgstr "Could not access the wallet at the server. Please check:"
-
-#: src/js/controllers/buyAmazon.js:102
-msgid "Could not access to Amazon.com"
-msgstr "Could not access to Amazon.com"
-
-#: src/js/services/profileService.js:511
-msgid "Could not access wallet"
-msgstr "Could not access wallet"
-
-#: src/js/controllers/confirm.js:210
-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:199
-msgid "Could not broadcast payment"
-msgstr "Could not broadcast payment"
-
-#: src/js/services/bwcError.js:41
-msgid "Could not build transaction"
-msgstr "Could not build transaction"
-
-#: src/js/services/walletService.js:854
-msgid "Could not create address"
-msgstr "Could not create address"
-
-#: src/js/controllers/topup.js:92
-msgid "Could not create the invoice"
-msgstr "Could not create the invoice"
-
-#: src/js/controllers/buyAmazon.js:164
-#: src/js/controllers/buyMercadoLibre.js:164
-#: src/js/controllers/topup.js:142
-msgid "Could not create transaction"
-msgstr "Could not create transaction"
-
-#: src/js/services/profileService.js:350
-msgid "Could not create using the specified extended private key"
-msgstr "Could not create using the specified extended private key"
-
-#: src/js/services/profileService.js:362
-msgid "Could not create using the specified extended public key"
-msgstr "Could not create using the specified extended public key"
-
-#: src/js/services/profileService.js:338
-msgid "Could not create: Invalid wallet recovery phrase"
-msgstr "Could not create: Invalid wallet recovery phrase"
-
-#: src/js/controllers/import.js:114
-msgid "Could not decrypt file, check your password"
-msgstr "Could not decrypt file, check your password"
-
-#: src/js/controllers/modals/txpDetails.js:181
-msgid "Could not delete payment proposal"
-msgstr "Could not delete payment proposal"
-
-#: src/js/controllers/cashScan.js:117
-msgid "Could not duplicate"
-msgstr "Could not duplicate"
-
-#: src/js/services/feeService.js:73
-msgid "Could not get dynamic fee"
-msgstr "Could not get dynamic fee"
-
-#: src/js/services/feeService.js:43
-msgid "Could not get dynamic fee for level: {{feeLevel}}"
-msgstr "Could not get dynamic fee for level: {{feeLevel}}"
-
-#: src/js/controllers/modals/feeLevels.js:112
-msgid "Could not get fee levels"
-msgstr "Could not get fee levels"
-
-#: src/js/controllers/buyAmazon.js:122
-#: src/js/controllers/buyMercadoLibre.js:122
-#: src/js/controllers/topup.js:100
-msgid "Could not get the invoice"
-msgstr "Could not get invoice"
-
-#: src/js/controllers/bitpayCard.js:66
-msgid "Could not get transactions"
-msgstr "Could not get transactions"
-
-#: src/js/services/profileService.js:615
-#: src/js/services/profileService.js:650
-#: src/js/services/profileService.js:674
-msgid "Could not import"
-msgstr "Could not import"
-
-#: src/js/services/profileService.js:584
-msgid "Could not import. Check input file and spending password"
-msgstr "Could not import. Check input file and spending password"
-
-#: src/js/services/profileService.js:457
-msgid "Could not join wallet"
-msgstr "Could not join wallet"
-
-#: src/js/controllers/modals/txpDetails.js:161
-msgid "Could not reject payment"
-msgstr "Could not reject payment"
-
-#: src/js/controllers/preferencesBitpayServices.js:33
-msgid "Could not remove account"
-msgstr "Could not remove account"
-
-#: src/js/controllers/preferencesBitpayCard.js:20
-#: src/js/controllers/preferencesBitpayServices.js:50
-msgid "Could not remove card"
-msgstr "Could not remove card"
-
-#: src/js/services/walletService.js:776
-msgid "Could not save preferences on the server"
-msgstr "Could not save preferences on the server"
-
-#: src/js/controllers/modals/txpDetails.js:147
-msgid "Could not send payment"
-msgstr "Could not send payment"
-
-#: src/js/controllers/buyAmazon.js:325
-#: src/js/controllers/buyMercadoLibre.js:318
-#: src/js/controllers/topup.js:299
-msgid "Could not send transaction"
-msgstr "Could not send transaction"
-
-#: www/views/walletDetails.html:210
-msgid "Could not update transaction history"
-msgstr "Could not update transaction history"
-
-#: src/js/controllers/addresses.js:29
-#: src/js/controllers/addresses.js:37
-#: src/js/controllers/copayers.js:30
-#: src/js/controllers/walletDetails.js:78
-msgid "Could not update wallet"
-msgstr "Could not update wallet"
-
-#: www/views/tab-create-personal.html:3
-msgid "Create Personal Wallet"
-msgstr "Create Personal Wallet"
-
-#: www/views/tab-create-shared.html:3
-msgid "Create Shared Wallet"
-msgstr "Generate Wallet"
-
-#: www/views/onboarding/tour.html:51
-#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
-msgid "Create bitcoin wallet"
-msgstr "Create bitcoin wallet"
-
-#: www/views/tab-create-personal.html:131
-msgid "Create new wallet"
-msgstr "Create new wallet"
-
-#: www/views/add.html:22
-msgid "Create shared wallet"
-msgstr "Create shared wallet"
-
-#: www/views/tab-create-shared.html:160
-msgid "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet"
-msgstr "Create {{formData.requiredCopayers}}-of-{{formData.totalCopayers}} wallet"
-
-#: www/views/modals/txp-details.html:81
-#: www/views/tx-details.html:60
-msgid "Created by"
-msgstr "Created by"
-
-#: src/js/services/onGoingProcess.js:18
-msgid "Creating Wallet..."
-msgstr "Creating Wallet..."
-
-#: src/js/services/onGoingProcess.js:17
-msgid "Creating transaction"
-msgstr "Creating transaction"
-
-#: www/views/modals/chooseFeeLevel.html:34
-#: www/views/preferencesFee.html:20
-msgid "Current fee rate for this policy"
-msgstr "Current fee rate for this policy"
-
-#: src/js/services/feeService.js:15
-msgid "Custom"
-msgstr "Custom"
-
-#: www/views/customAmount.html:9
-msgid "Custom Amount"
-msgstr "Custom"
-
-#: src/js/controllers/preferencesFee.js:85
-msgid "Custom Fee"
-msgstr "Custom Fee"
-
-#: www/views/modals/mercadolibre-card-details.html:56
-#: www/views/modals/txp-details.html:87
-#: www/views/tx-details.html:66
-msgid "Date"
-msgstr "Date"
-
-#: www/views/preferencesDeleteWallet.html:21
-msgid "Delete"
-msgstr "Delete"
-
-#: www/views/modals/txp-details.html:164
-msgid "Delete Payment Proposal"
-msgstr "Delete Payment Proposal"
-
-#: www/views/preferencesAdvanced.html:33
-#: www/views/preferencesDeleteWallet.html:3
-msgid "Delete Wallet"
-msgstr "Delete Wallet"
-
-#: www/views/copayers.html:59
-msgid "Delete it and create a new one"
-msgstr "Delete it and create a new one"
-
-#: src/js/services/onGoingProcess.js:19
-msgid "Deleting Wallet..."
-msgstr "Deleting Wallet..."
-
-#: src/js/services/onGoingProcess.js:28
-msgid "Deleting payment proposal"
-msgstr "Deleting payment proposal"
-
-#: www/views/join.html:141
-#: www/views/tab-create-personal.html:111
-#: www/views/tab-create-shared.html:140
-#: www/views/tab-import-phrase.html:49
-msgid "Derivation Path"
-msgstr "Derivation Path"
-
-#: www/views/preferencesInformation.html:47
-msgid "Derivation Strategy"
-msgstr "Derivation Strategy"
-
-#: www/views/buyAmazon.html:39
-#: www/views/buyMercadoLibre.html:38
-#: www/views/modals/mercadolibre-card-details.html:6
-#: www/views/topup.html:45
-msgid "Details"
-msgstr "Details"
-
-#: src/js/controllers/lockSetup.js:9
-#: src/js/controllers/tab-settings.js:65
-#: www/views/tab-settings.html:50
-msgid "Disabled"
-msgstr "Disabled"
-
-#: www/views/includes/backupNeededPopup.html:10
-#: www/views/onboarding/backupRequest.html:12
-msgid "Do it later"
-msgstr "Do it later"
-
-#: www/views/tab-export-file.html:29
-msgid "Do not include private key"
-msgstr "Do not include private key"
-
-#: 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 "Don't see your language on Crowdin? Contact the Owner on Crowdin! We'd love to support your language."
-
-#: www/views/tab-export-file.html:59
-#: www/views/tab-home.html:22
-msgid "Download"
-msgstr "Download"
-
-#: www/views/cashScan.html:37
-msgid "Duplicate for BCH"
-msgstr "Duplicate for BCH"
-
-#: src/js/services/onGoingProcess.js:49
-msgid "Duplicating wallet..."
-msgstr "Duplicating wallet..."
-
-#: 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 "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."
-
-#: src/js/services/feeService.js:13
-msgid "Economy"
-msgstr "Economy"
-
-#: www/views/onboarding/collectEmail.html:27
-msgid "Edit"
-msgstr "Edit"
-
-#: 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 Address"
-
-#: src/js/services/bwcError.js:122
-msgid "Empty addresses limit reached. New addresses cannot be generated."
-msgstr "Empty addresses limit reached. New addresses cannot be generated."
-
-#: www/views/preferencesCash.html:17
-msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-msgstr "Enable Bitcoin Cash wallet creation and operation within the App."
-
-#: www/views/tab-scan.html:19
-msgid "Enable camera access in your device settings to get started."
-msgstr "Enable camera access in your device settings to get started."
-
-#: www/views/preferencesNotifications.html:29
-msgid "Enable email notifications"
-msgstr "Enable email notifications"
-
-#: www/views/preferencesNotifications.html:12
-msgid "Enable push notifications"
-msgstr "Enable push notifications"
-
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "Enable sound"
-
-#: www/views/tab-scan.html:18
-msgid "Enable the camera to get started."
-msgstr "Enable the camera to get started."
-
-#: www/views/tab-settings.html:49
-msgid "Enabled"
-msgstr "Enabled"
-
-#: src/js/services/walletService.js:1047
-#: src/js/services/walletService.js:1062
-msgid "Enter Spending Password"
-msgstr "Enter Spending Password"
-
-#: src/js/services/bitpayAccountService.js:110
-msgid "Enter Two Factor for your BitPay account"
-msgstr "Enter Two Factor for your BitPay account"
-
-#: www/views/amount.html:4
-msgid "Enter amount"
-msgstr "Enter amount"
-
-#: www/views/modals/chooseFeeLevel.html:41
-msgid "Enter custom fee"
-msgstr "Enter custom fee"
-
-#: src/js/services/walletService.js:1029
-msgid "Enter new spending password"
-msgstr "Enter new spending password"
-
-#: www/views/join.html:79
-#: www/views/tab-create-personal.html:51
-#: www/views/tab-create-shared.html:80
-msgid "Enter the recovery phrase (BIP39)"
-msgstr "Enter the recovery phrase (BIP39)"
-
-#: www/views/onboarding/collectEmail.html:13
-msgid "Enter your email"
-msgstr "Enter your email"
-
-#: www/views/backup.html:69
-msgid "Enter your password"
-msgstr "Enter your 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:42
-#: src/js/controllers/addresses.js:125
-#: src/js/controllers/addresses.js:126
-#: src/js/controllers/bitpayCard.js:66
-#: src/js/controllers/bitpayCardIntro.js:40
-#: src/js/controllers/bitpayCardIntro.js:81
-#: src/js/controllers/buyAmazon.js:24
-#: src/js/controllers/buyAmazon.js:35
-#: src/js/controllers/buyMercadoLibre.js:24
-#: src/js/controllers/buyMercadoLibre.js:35
-#: src/js/controllers/confirm.js:307
-#: src/js/controllers/copayers.js:67
-#: src/js/controllers/create.js:161
-#: src/js/controllers/create.js:174
-#: src/js/controllers/create.js:180
-#: src/js/controllers/create.js:186
-#: src/js/controllers/create.js:208
-#: src/js/controllers/create.js:215
-#: src/js/controllers/create.js:233
-#: 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:119
-#: src/js/controllers/import.js:131
-#: src/js/controllers/import.js:149
-#: src/js/controllers/import.js:200
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:238
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:266
-#: src/js/controllers/import.js:278
-#: src/js/controllers/import.js:288
-#: src/js/controllers/import.js:312
-#: src/js/controllers/import.js:325
-#: src/js/controllers/import.js:335
-#: src/js/controllers/import.js:345
-#: src/js/controllers/import.js:369
-#: src/js/controllers/import.js:382
-#: src/js/controllers/import.js:85
-#: src/js/controllers/import.js:98
-#: src/js/controllers/join.js:125
-#: src/js/controllers/join.js:139
-#: src/js/controllers/join.js:145
-#: src/js/controllers/join.js:151
-#: src/js/controllers/join.js:174
-#: src/js/controllers/join.js:182
-#: src/js/controllers/join.js:200
-#: src/js/controllers/modals/feeLevels.js:9
-#: src/js/controllers/modals/txpDetails.js:140
-#: 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:36
-#: src/js/controllers/preferencesExternal.js:20
-#: src/js/controllers/tab-home.js:174
-#: src/js/controllers/tab-send.js:143
-#: src/js/controllers/tabsController.js:36
-#: src/js/controllers/tabsController.js:7
-#: src/js/controllers/topup.js:21
-#: src/js/controllers/topup.js:32
-#: src/js/controllers/tx-details.js:119
-#: src/js/services/incomingData.js:101
-#: src/js/services/incomingData.js:125
-#: src/js/services/incomingData.js:168
-#: www/views/mercadoLibreCards.html:19
-#: www/views/modals/mercadolibre-card-details.html:45
-msgid "Error"
-msgstr "Error"
-
-#: src/js/controllers/confirm.js:502
-msgid "Error at confirm"
-msgstr "Error at confirm"
-
-#: src/js/controllers/buyAmazon.js:179
-msgid "Error creating gift card"
-msgstr "Error creating gift card"
-
-#: src/js/controllers/buyAmazon.js:94
-#: src/js/controllers/buyMercadoLibre.js:94
-msgid "Error creating the invoice"
-msgstr "Error creating the invoice"
-
-#: src/js/services/profileService.js:412
-msgid "Error creating wallet"
-msgstr "Error creating wallet"
-
-#: src/js/controllers/confirm.js:296
-msgid "Error getting SendMax information"
-msgstr "Error getting SendMax information"
-
-#: src/js/controllers/buyAmazon.js:136
-#: src/js/controllers/buyMercadoLibre.js:136
-#: src/js/controllers/topup.js:114
-msgid "Error in Payment Protocol"
-msgstr "Error in Payment Protocol"
-
-#: src/js/controllers/bitpayCardIntro.js:14
-msgid "Error pairing BitPay Account"
-msgstr "Error pairing BitPay Account"
-
-#: src/js/controllers/paperWallet.js:41
-msgid "Error scanning funds:"
-msgstr "Error scanning funds:"
-
-#: src/js/controllers/paperWallet.js:90
-msgid "Error sweeping wallet:"
-msgstr "Error sweeping wallet:"
-
-#: src/js/controllers/bitpayCardIntro.js:20
-msgid "Error updating Debit Cards"
-msgstr "Error updating Debit Cards"
-
-#: src/js/services/bwcError.js:143
-msgid "Exceeded daily limit of $500 per user"
-msgstr "Exceeded daily limit of $500 per user"
-
-#: src/js/controllers/confirm.js:461
-#: www/views/confirm.html:27
-#: www/views/mercadoLibreCards.html:25
-#: www/views/modals/mercadolibre-card-details.html:34
-#: www/views/modals/txp-details.html:119
-msgid "Expired"
-msgstr "Expired"
-
-#: www/views/modals/paypro.html:54
-#: www/views/modals/txp-details.html:125
-msgid "Expires"
-msgstr "Expires"
-
-#: www/views/preferencesAdvanced.html:21
-msgid "Export Wallet"
-msgstr "Export Wallet"
-
-#: www/views/preferencesHistory.html:11
-#: www/views/preferencesHistory.html:14
-msgid "Export to file"
-msgstr "Export Wallet"
-
-#: www/views/export.html:3
-msgid "Export wallet"
-msgstr "Export wallet"
-
-#: src/js/services/walletService.js:1174
-#: www/views/tab-export-qrCode.html:9
-msgid "Exporting via QR not supported for this wallet"
-msgstr "Exporting via QR not supported for this wallet"
-
-#: www/views/preferencesInformation.html:89
-msgid "Extended Public Keys"
-msgstr "Extended Public Keys"
-
-#: src/js/services/onGoingProcess.js:20
-msgid "Extracting Wallet information..."
-msgstr "Extracting Wallet information..."
-
-#: 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 "Failed to export"
-
-#: www/views/tab-create-personal.html:14
-#: www/views/tab-create-shared.html:14
-msgid "Family vacation funds"
-msgstr "Family vacation funds"
-
-#: www/views/tx-details.html:79
-msgid "Fee"
-msgstr "Fee"
-
-#: www/views/modals/chooseFeeLevel.html:75
-msgid "Fee level"
-msgstr "Fee level"
-
-#: src/js/controllers/modals/feeLevels.js:100
-msgid "Fee level is not defined"
-msgstr "Fee level is not defined"
-
-#: www/views/confirm.html:79
-#: www/views/modals/txp-details.html:99
-msgid "Fee:"
-msgstr "Fee:"
-
-#: src/js/controllers/feedback/send.js:23
-msgid "Feedback could not be submitted. Please try again later."
-msgstr "Feedback could not be submitted. Please try again later."
-
-#: src/js/services/onGoingProcess.js:42
-msgid "Fetching BitPay Account..."
-msgstr "Fetching BitPay Account..."
-
-#: src/js/services/onGoingProcess.js:21
-msgid "Fetching payment information"
-msgstr "Fetching payment information"
-
-#: www/views/export.html:14
-#: www/views/import.html:16
-msgid "File/Text"
-msgstr "File/Text"
-
-#: www/views/preferencesLogs.html:17
-msgid "Filter setting"
-msgstr "Filter setting"
-
-#: src/js/services/fingerprintService.js:43
-#: src/js/services/fingerprintService.js:48
-msgid "Finger Scan Failed"
-msgstr "Finger Scan Failed"
-
-#: src/js/controllers/feedback/send.js:34
-#: www/views/feedback/complete.html:7
-msgid "Finish"
-msgstr "Finish"
-
-#: www/views/tab-create-personal.html:123
-#: www/views/tab-create-shared.html:152
-msgid "For audit purposes"
-msgstr "For audit purposes"
-
-#: src/js/controllers/topup.js:308
-#: www/views/buyAmazon.html:29
-#: www/views/buyMercadoLibre.html:28
-#: www/views/confirm.html:65
-#: www/views/modals/txp-details.html:74
-#: www/views/topup.html:34
-#: www/views/tx-details.html:52
-#: www/views/review.html:22
-msgid "From"
-msgstr "From"
-
-#: src/js/controllers/bitpayCardIntro.js:71
-msgid "From BitPay account"
-msgstr "From BitPay account"
-
-#: www/views/tab-import-phrase.html:57
-msgid "From Hardware Wallet"
-msgstr "From Hardware Wallet"
-
-#: www/views/tab-export-qrCode.html:5
-msgid "From the destination device, go to Add wallet > Import wallet and scan this QR code"
-msgstr "From the destination device, go to Add wallet > Import wallet and scan this QR code"
-
-#: src/js/services/bwcError.js:74
-msgid "Funds are locked by pending spend proposals"
-msgstr "Funds are locked by pending spend proposals"
-
-#: www/views/paperWallet.html:16
-msgid "Funds found:"
-msgstr "Funds found:"
-
-#: www/views/topup.html:49
-msgid "Funds to be added"
-msgstr "Funds to be added"
-
-#: www/views/paperWallet.html:51
-msgid "Funds transferred"
-msgstr "Funds transferred"
-
-#: www/views/topup.html:103
-msgid "Funds were added to debit card"
-msgstr "Funds were added to debit card"
-
-#: www/views/paperWallet.html:22
-msgid "Funds will be transferred to"
-msgstr "Funds will be transferred to"
-
-#: www/views/tab-receive.html:51
-msgid "Generate new address"
-msgstr "Generate new address"
-
-#: src/js/services/onGoingProcess.js:22
-msgid "Generating .csv file..."
-msgstr "Generating .csv file..."
-
-#: src/js/services/onGoingProcess.js:37
-msgid "Generating new address..."
-msgstr "Generating new address..."
-
-#: www/views/bitpayCardIntro.html:23
-msgid "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply."
-msgstr "Get local cash anywhere you go, from any Visa® compatible ATM. ATM bank fees may apply."
-
-#: www/views/onboarding/collectEmail.html:15
-msgid "Get news and updates from BitPay"
-msgstr "Get news and updates from BitPay"
-
-#: www/views/onboarding/welcome.html:8
-#: www/views/bitpayCard.html:49
-msgid "Get started"
-msgstr "Get started"
-
-#: www/views/addressbook.html:20
-msgid "Get started by adding your first one."
-msgstr "Get started by adding your first one."
-
-#: src/js/services/onGoingProcess.js:23
-msgid "Getting fee levels..."
-msgstr "Getting fee levels..."
-
-#: www/views/buyAmazon.html:43
-#: www/views/buyMercadoLibre.html:42
-msgid "Gift Card"
-msgstr "Gift Card"
-
-#: www/views/modals/mercadolibre-card-details.html:30
-#: www/views/modals/mercadolibre-card-details.html:35
-msgid "Gift Card is not available to use anymore"
-msgstr "Gift Card is not available to use anymore"
-
-#: src/js/controllers/buyAmazon.js:204
-msgid "Gift card expired"
-msgstr "Gift card expired"
-
-#: www/views/buyAmazon.html:111
-msgid "Gift card generated and ready to use."
-msgstr "Gift card generated and ready to use."
-
-#: src/js/controllers/bitpayCard.js:114
-#: src/js/controllers/bitpayCard.js:124
-#: src/js/controllers/cashScan.js:20
-#: src/js/controllers/onboarding/terms.js:23
-#: src/js/controllers/preferences.js:67
-#: src/js/controllers/preferencesAbout.js:16
-#: src/js/controllers/preferencesCash.js:34
-#: src/js/controllers/preferencesLanguage.js:14
-#: src/js/controllers/tab-home.js:149
-#: src/js/controllers/tab-settings.js:53
-#: src/js/controllers/tx-details.js:193
-#: src/js/controllers/tx-details.js:56
-msgid "Go Back"
-msgstr "Go Back"
-
-#: src/js/controllers/confirm.js:131
-#: src/js/controllers/onboarding/backupRequest.js:20
-#: src/js/controllers/onboarding/backupRequest.js:26
-#: src/js/services/bitpayAccountService.js:84
-msgid "Go back"
-msgstr "Go back"
-
-#: www/views/backupWarning.html:15
-#: www/views/includes/confirmBackupPopup.html:8
-#: www/views/onboarding/tour.html:23
-msgid "Got it"
-msgstr "Got it"
-
-#: www/views/preferencesInformation.html:53
-#: www/views/preferencesInformation.html:59
-msgid "Hardware Wallet"
-msgstr "Hardware Wallet"
-
-#: www/views/preferencesExternal.html:18
-msgid "Hardware not connected."
-msgstr "Hardware not connected."
-
-#: www/views/import.html:20
-msgid "Hardware wallet"
-msgstr "Hardware wallet"
-
-#: src/js/controllers/create.js:180
-#: src/js/controllers/join.js:145
-msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr "Hardware wallets are not yet supported with Bitcoin Cash"
-
-#: www/views/tab-settings.html:20
-msgid "Help & Support"
-msgstr "Help & Support"
-
-#: src/js/controllers/bitpayCard.js:112
-#: src/js/controllers/tab-settings.js:51
-msgid "Help and support information is available at the website."
-msgstr "Help and support information is available at the website."
-
-#: www/views/addresses.html:25
-msgid "Hide"
-msgstr "Hide"
-
-#: www/views/preferences.html:27
-msgid "Hide Balance"
-msgstr "Hide Balance"
-
-#: www/views/advancedSettings.html:30
-msgid "Hide Next Steps Card"
-msgstr "Hide Next Steps Card"
-
-#: www/views/join.html:49
-#: www/views/tab-create-personal.html:28
-#: www/views/tab-create-shared.html:57
-#: www/views/tab-export-file.html:25
-#: www/views/tab-import-file.html:30
-#: www/views/tab-import-hardware.html:31
-#: www/views/tab-import-phrase.html:36
-msgid "Hide advanced options"
-msgstr "Hide advanced options"
-
-#: 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 "How could we improve your experience?"
-
-#: www/views/feedback/rateCard.html:3
-msgid "How do you like {{appName}}?"
-msgstr "How do you like {{appName}}?"
-
-#: src/js/controllers/feedback/rateCard.js:29
-msgid "I don't like it"
-msgstr "I don't like it"
-
-#: www/views/onboarding/disclaimer.html:43
-msgid "I have read, understood, and agree to the Terms of Use ."
-msgstr "I have read, understood, and agree to the Terms of Use ."
-
-#: www/views/modals/terms.html:22
-msgid "I have read, understood, and agree with the Terms of use."
-msgstr "I have read, understood, and agree with the Terms of use."
-
-#: www/views/join.html:137
-#: www/views/tab-create-personal.html:107
-#: www/views/tab-create-shared.html:136
-msgid "I have written it down"
-msgstr "I have written it down"
-
-#: src/js/controllers/feedback/rateCard.js:35
-msgid "I like the app"
-msgstr "I like the app"
-
-#: src/js/controllers/feedback/rateCard.js:26
-msgid "I think this app is terrible."
-msgstr "I think this app is terrible."
-
-#: src/js/controllers/onboarding/backupRequest.js:19
-#: www/views/includes/screenshotWarningModal.html:9
-msgid "I understand"
-msgstr "I understand"
-
-#: 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 "I understand that if this app is moved to another device or deleted, my bitcoin can only be recovered with the 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 "I understand that my funds are held securely on this device, not by a company."
-
-#: www/views/backup.html:36
-msgid "I've written it down"
-msgstr "I've written it down"
-
-#: 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 "If enabled, all sensitive information (private key and recovery phrase) and actions (spending and exporting) associated with this wallet will be protected."
-
-#: www/views/advancedSettings.html:23
-msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab."
-msgstr "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab."
-
-#: www/views/advancedSettings.html:14
-msgid "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays."
-msgstr "If enabled, wallets will also try to spend unconfirmed funds. This option may cause transaction delays."
-
-#: 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 "If this device is replaced or this app is deleted, neither you nor BitPay can recover your funds without a 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 "If you have additional feedback, please let us know by tapping the \"Send feedback\" option in the Settings tab."
-
-#: 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 "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."
-
-#: www/views/tab-import-hardware.html:42
-#: www/views/tab-import-phrase.html:80
-msgid "Import"
-msgstr "Import"
-
-#: www/views/import.html:3
-msgid "Import Wallet"
-msgstr "Import Wallet"
-
-#: www/views/tab-import-file.html:41
-msgid "Import backup"
-msgstr "Import backup"
-
-#: www/views/add.html:38
-msgid "Import wallet"
-msgstr "Import wallet"
-
-#: src/js/services/onGoingProcess.js:24
-msgid "Importing Wallet..."
-msgstr "Importing Wallet..."
-
-#: www/views/backup.html:72
-msgid "In order to verify your wallet backup, please type your password."
-msgstr "In order to verify your wallet backup, please type your password."
-
-#: www/views/mercadoLibreCards.html:24
-#: www/views/modals/mercadolibre-card-details.html:29
-msgid "Inactive"
-msgstr "Inactive"
-
-#: www/views/includes/walletItem.html:9
-#: www/views/includes/walletList.html:6
-#: www/views/includes/walletListSettings.html:9
-#: www/views/includes/walletSelector.html:16
-msgid "Incomplete"
-msgstr "Incomplete"
-
-#: www/views/tab-receive.html:22
-msgid "Incomplete wallet"
-msgstr "Incomplete wallet"
-
-#: www/views/modals/pin.html:12
-msgid "Incorrect PIN, try again."
-msgstr "Incorrect PIN, try again."
-
-#. Trying to import a malformed wallet export QR code
-#: src/js/controllers/import.js:85
-msgid "Incorrect code format"
-msgstr "Incorrect code format"
-
-#: src/js/services/bwcError.js:113
-msgid "Incorrect network address"
-msgstr "Incorrect network address"
-
-#: src/js/controllers/confirm.js:114
-#: src/js/controllers/confirm.js:306
-#: src/js/services/bwcError.js:44
-msgid "Insufficient confirmed funds"
-msgstr "Insufficient confirmed funds"
-
-#: src/js/controllers/topup.js:165
-#: src/js/controllers/topup.js:177
-#: src/js/services/bwcError.js:71
-msgid "Insufficient funds for fee"
-msgstr "Insufficient funds for fee"
-
-#: www/views/tab-settings.html:123
-msgid "Integrations"
-msgstr "Integrations"
-
-#: www/views/includes/walletHistory.html:49
-msgid "Invalid"
-msgstr "Invalid"
-
-#: src/js/controllers/buyAmazon.js:137
-#: src/js/controllers/buyMercadoLibre.js:137
-#: src/js/controllers/topup.js:115
-msgid "Invalid URL"
-msgstr "Invalid URL"
-
-#: src/js/controllers/create.js:186
-#: src/js/controllers/import.js:345
-#: src/js/controllers/join.js:151
-msgid "Invalid account number"
-msgstr "Invalid account number"
-
-#: src/js/services/bwcError.js:119
-msgid "Invalid address"
-msgstr "Invalid address"
-
-#: src/js/controllers/tabsController.js:7
-msgid "Invalid data"
-msgstr "Invalid data"
-
-#: src/js/controllers/create.js:161
-#: src/js/controllers/import.js:266
-#: src/js/controllers/join.js:125
-msgid "Invalid derivation path"
-msgstr "Invalid derivation path"
-
-#: src/js/controllers/copayers.js:90
-msgid "Invitation to share a {{appName}} Wallet"
-msgstr "Invitation to share a {{appName}} Wallet"
-
-#: www/views/mercadoLibreCards.html:20
-#: www/views/modals/mercadolibre-card-details.html:48
-msgid "Invoice expired"
-msgstr "Invoice expired"
-
-#: src/js/controllers/feedback/send.js:79
-msgid "Is there anything we could do better?"
-msgstr "Is there anything we could do better?"
-
-#: www/views/backup.html:54
-msgid "Is this correct?"
-msgstr "Is this correct?"
-
-#: www/views/onboarding/collectEmail.html:22
-msgid "Is this email address correct?"
-msgstr "Is this email address correct?"
-
-#: 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 "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."
-
-#: 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 "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."
-
-#: www/views/join.html:151
-msgid "Join"
-msgstr "Join"
-
-#: 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 "Join my {{appName}} Wallet. Here is the invitation code: {{secret}} You can download {{appName}} for your phone or desktop at {{appUrl}}"
-
-#: www/views/add.html:30
-#: www/views/join.html:5
-msgid "Join shared wallet"
-msgstr "Join shared wallet"
-
-#: src/js/services/onGoingProcess.js:25
-msgid "Joining Wallet..."
-msgstr "Joining Wallet..."
-
-#: www/views/onboarding/tour.html:22
-msgid "Just scan the code to pay."
-msgstr "Just scan the code to pay."
-
-#: src/js/services/bwcError.js:116
-msgid "Key already associated with an existing wallet"
-msgstr "Key already associated with an existing wallet"
-
-#: www/views/preferencesLanguage.html:4
-#: www/views/tab-settings.html:68
-msgid "Language"
-msgstr "Language"
-
-#: www/views/bitpayCard.html:61
-msgid "Last Month"
-msgstr "Last Month"
-
-#: src/js/controllers/confirm.js:132
-#: www/views/preferences.html:48
-#: www/views/preferencesCash.html:18
-#: www/views/tx-details.html:94
-msgid "Learn more"
-msgstr "Learn more"
-
-#: www/views/backup.html:43
-msgid "Let's verify your backup phrase."
-msgstr "Let's verify your backup phrase."
-
-#: www/views/addresses.html:45
-#: www/views/allAddresses.html:14
-msgid "Loading addresses..."
-msgstr "Loading addresses..."
-
-#: src/js/services/onGoingProcess.js:35
-msgid "Loading transaction info..."
-msgstr "Loading transaction info..."
-
-#: www/views/tab-settings.html:100
-msgid "Lock App"
-msgstr "Lock App"
-
-#: src/js/controllers/lockSetup.js:23
-msgid "Lock by Fingerprint"
-msgstr "Lock by Fingerprint"
-
-#: src/js/controllers/lockSetup.js:14
-msgid "Lock by PIN"
-msgstr "Lock by PIN"
-
-#: www/views/modals/wallet-balance.html:80
-msgid "Locked"
-msgstr "Locked"
-
-#: src/js/services/bwcError.js:86
-msgid "Locktime in effect. Please wait to create a new spend proposal"
-msgstr "Locktime in effect. Please wait to create a new spend proposal"
-
-#: src/js/services/bwcError.js:89
-msgid "Locktime in effect. Please wait to remove this spend proposal"
-msgstr "Locktime in effect. Please wait to remove this spend proposal"
-
-#: www/views/includes/logOptions.html:3
-msgid "Log options"
-msgstr "Log options"
-
-#: www/views/modals/bitpay-card-confirmation.html:14
-msgid "Log out"
-msgstr "Log out"
-
-#: www/views/addresses.html:87
-msgid "Low amount inputs"
-msgstr "Low amount inputs"
-
-#: www/views/includes/walletHistory.html:27
-msgid "Low fees"
-msgstr "Low fees"
-
-#: www/views/onboarding/tour.html:38
-msgid "Makes sense"
-msgstr "Makes sense"
-
-#: src/js/controllers/modals/search.js:61
-msgid "Matches:"
-msgstr "Matches:"
-
-#: www/views/includes/copayers.html:4
-#: www/views/preferencesInformation.html:85
-msgid "Me"
-msgstr "Me"
-
-#: src/js/controllers/feedback/rateCard.js:32
-msgid "Meh - it's alright"
-msgstr "Meh - it's alright"
-
-#: src/js/controllers/tx-details.js:165
-#: www/views/modals/paypro.html:48
-#: www/views/modals/txp-details.html:93
-#: www/views/tx-details.html:72
-msgid "Memo"
-msgstr "Memo"
-
-#: www/views/mercadoLibre.html:6
-msgid "Mercado Livre Brazil Gift Cards"
-msgstr "Mercado Livre Brazil Gift Cards"
-
-#: src/js/controllers/buyMercadoLibre.js:98
-msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-
-#: www/views/modals/txp-details.html:131
-msgid "Merchant Message"
-msgstr "Merchant Message"
-
-#: www/views/buyAmazon.html:55
-#: www/views/buyMercadoLibre.html:54
-#: www/views/topup.html:63
-msgid "Miner Fee"
-msgstr "Miner Fee"
-
-#: src/js/services/bwcError.js:134
-msgid "Missing parameter"
-msgstr "Missing parameter"
-
-#: src/js/services/bwcError.js:32
-msgid "Missing private keys to sign"
-msgstr "Missing private keys to sign"
-
-#: www/views/preferences.html:61
-#: www/views/preferencesAdvanced.html:3
-msgid "More Options"
-msgstr "More Options"
-
-#: www/views/includes/walletHistory.html:47
-#: www/views/tx-details.html:19
-msgid "Moved"
-msgstr "Moved"
-
-#: src/js/controllers/tx-details.js:131
-msgid "Moved Funds"
-msgstr "Moved Funds"
-
-#: www/views/modals/txp-details.html:57
-msgid "Multiple recipients"
-msgstr "Multiple recipients"
-
-#: 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 "NOTE: To import a wallet from a 3rd party software, please go to Add Wallet > Create Wallet, and specify the Recovery Phrase there."
-
-#: 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:49
-#: www/views/buyMercadoLibre.html:48
-#: www/views/topup.html:56
-msgid "Network Cost"
-msgstr "Network Cost"
-
-#: src/js/services/bwcError.js:47
-msgid "Network error"
-msgstr "Network error"
-
-#: www/views/includes/walletActivity.html:43
-msgid "New Proposal"
-msgstr "New Proposal"
-
-#: src/js/controllers/addresses.js:126
-msgid "New address could not be generated. Please try again."
-msgstr "New address could not be generated. Please try again."
-
-#: www/views/add.html:14
-msgid "New personal wallet"
-msgstr "New personal wallet"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Next steps"
-msgstr "Next steps"
-
-#: www/views/tab-receive.html:16
-msgid "No Wallet"
-msgstr "No Wallet"
-
-#: src/js/controllers/buyAmazon.js:115
-#: src/js/controllers/buyMercadoLibre.js:115
-msgid "No access key defined"
-msgstr "No access key defined"
-
-#: www/views/onboarding/backupRequest.html:5
-msgid "No backup, no bitcoin."
-msgstr "No backup, no bitcoin."
-
-#: www/views/addressbook.html:19
-msgid "No contacts yet"
-msgstr "No contacts yet"
-
-#: www/views/preferencesLogs.html:16
-msgid "No entries for this log level"
-msgstr "No entries for this log level"
-
-#: www/views/preferencesExternal.html:12
-msgid "No hardware information available."
-msgstr "No hardware information available."
-
-#: www/views/tab-import-hardware.html:3
-msgid "No hardware wallets supported on this device"
-msgstr "No hardware wallets supported on this device"
-
-#: www/views/proposals.html:24
-msgid "No pending proposals"
-msgstr "No pending proposals"
-
-#: www/views/activity.html:25
-msgid "No recent transactions"
-msgstr "No recent transactions"
-
-#: src/js/controllers/buyAmazon.js:44
-#: src/js/controllers/topup.js:47
-msgid "No signing proposal: No private key"
-msgstr "No signing proposal: No private key"
-
-#: www/views/walletDetails.html:204
-msgid "No transactions yet"
-msgstr "No transactions yet"
-
-#: src/js/controllers/preferencesDelete.js:15
-msgid "No wallet found"
-msgstr "No wallet found"
-
-#: src/js/controllers/preferencesDelete.js:8
-msgid "No wallet selected"
-msgstr "No wallet selected"
-
-#: src/js/controllers/buyAmazon.js:300
-#: src/js/controllers/buyMercadoLibre.js:292
-#: src/js/controllers/confirm.js:85
-#: src/js/controllers/topup.js:265
-msgid "No wallets available"
-msgstr "No wallets available"
-
-#: www/views/paperWallet.html:45
-msgid "No wallets available to receive funds"
-msgstr "No wallets available to receive funds"
-
-#: www/views/cashScan.html:15
-msgid "No wallets eligible for Bitcoin Cash support"
-msgstr "No wallets eligible for Bitcoin Cash support"
-
-#: src/js/controllers/cashScan.js:58
-msgid "Non BIP44 wallet"
-msgstr "Non BIP44 wallet"
-
-#: www/views/cashScan.html:46
-msgid "Non eligible BTC wallets"
-msgstr "Non eligible BTC wallets"
-
-#: src/js/services/feeService.js:12
-msgid "Normal"
-msgstr "Normal"
-
-#: src/js/services/bwcError.js:80
-msgid "Not authorized"
-msgstr "Not authorized"
-
-#: src/js/controllers/confirm.js:307
-msgid "Not enough funds for fee"
-msgstr "Not enough funds for fee"
-
-#: www/views/onboarding/tour.html:50
-msgid "Not even BitPay can access it."
-msgstr "Not even BitPay can access it."
-
-#: src/js/controllers/paperWallet.js:47
-msgid "Not funds found"
-msgstr "Not funds found"
-
-#: www/views/feedback/rateApp.html:3
-#: www/views/onboarding/notifications.html:8
-msgid "Not now"
-msgstr "Not now"
-
-#: www/views/includes/output.html:15
-msgid "Note"
-msgstr "Note"
-
-#: www/views/backup.html:19
-msgid "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-msgstr "Note: if this BCH wallet was duplicated from a BTC wallet, they share the same recovery phrase."
-
-#: www/views/modals/wallets.html:25
-msgid "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin"
-msgstr "Notice: only 1-1 (single signature) wallets can be used for sell bitcoin"
-
-#: www/views/preferencesNotifications.html:3
-#: www/views/tab-settings.html:61
-msgid "Notifications"
-msgstr "Notifications"
-
-#: www/views/onboarding/collectEmail.html:9
-msgid "Notifications by email"
-msgstr "Notifications by email"
-
-#: www/views/tx-details.html:117
-msgid "Notify me if confirmed"
-msgstr "Notify me if confirmed"
-
-#: www/views/preferencesNotifications.html:24
-msgid "Notify me when transactions are confirmed"
-msgstr "Notify me when transactions are confirmed"
-
-#: 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 "Now is a good time to backup your wallet. If this device is lost, it is impossible to access your funds without a backup."
-
-#: www/views/backupWarning.html:11
-msgid "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?"
-msgstr "Now is a perfect time to assess your surroundings. Nearby windows? Hidden cameras? Shoulder-spies?"
-
-#: src/js/controllers/buyAmazon.js:312
-#: src/js/controllers/topup.js:286
-#: src/js/services/incomingData.js:153
-#: 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 "Official English Disclaimer"
-
-#: src/js/controllers/feedback/send.js:64
-msgid "Oh no!"
-msgstr "Oh no!"
-
-#: src/js/controllers/buyMercadoLibre.js:306
-msgid "Ok"
-msgstr "Ok"
-
-#: www/views/tab-home.html:39
-msgid "On this screen you can see all your wallets, accounts, and assets."
-msgstr "On this screen you can see all your wallets, accounts, and assets."
-
-#: src/js/controllers/bitpayCard.js:113
-#: src/js/controllers/cashScan.js:19
-#: src/js/controllers/preferences.js:66
-#: src/js/controllers/preferencesCash.js:33
-#: src/js/controllers/tab-settings.js:52
-#: src/js/controllers/tx-details.js:55
-msgid "Open"
-msgstr "Open"
-
-#: src/js/controllers/preferencesLanguage.js:13
-msgid "Open Crowdin"
-msgstr "Open Crowdin"
-
-#: src/js/controllers/preferencesAbout.js:15
-msgid "Open GitHub"
-msgstr "Open GitHub"
-
-#: src/js/controllers/preferencesAbout.js:13
-msgid "Open GitHub Project"
-msgstr "Open GitHub Project"
-
-#: src/js/controllers/bitpayCard.js:123
-#: src/js/controllers/tx-details.js:192
-msgid "Open Explorer"
-msgstr "Open Explorer"
-
-#: www/views/tab-scan.html:22
-msgid "Open Settings"
-msgstr "Open Settings"
-
-#: src/js/controllers/preferencesLanguage.js:11
-msgid "Open Translation Community"
-msgstr "Open Translation Community"
-
-#: src/js/controllers/onboarding/terms.js:22
-msgid "Open Website"
-msgstr "Open Website"
-
-#: src/js/controllers/preferencesCash.js:32
-msgid "Open bitcoincash.org?"
-msgstr "Open bitcoincash.org?"
-
-#: src/js/controllers/cashScan.js:18
-msgid "Open the recovery tool."
-msgstr "Open the recovery tool."
-
-#: www/views/tab-receive.html:27
-msgid "Open wallet"
-msgstr "Hardware Wallet"
-
-#: www/views/includes/incomingDataMenu.html:19
-msgid "Open website"
-msgstr "Open website"
-
-#: www/views/bitpayCardIntro.html:34
-msgid "Order the BitPay Card"
-msgstr "Order the BitPay Card"
-
-#: www/views/join.html:105
-#: www/views/join.html:96
-#: www/views/tab-create-personal.html:69
-#: www/views/tab-create-personal.html:77
-#: www/views/tab-create-shared.html:106
-#: www/views/tab-create-shared.html:98
-#: www/views/tab-import-file.html:18
-#: www/views/tab-import-phrase.html:41
-msgid "Password"
-msgstr "Password"
-
-#: src/js/controllers/import.js:98
-msgid "Password required. Make sure to enter your password in advanced options"
-msgstr "Password required. Make sure to enter your password in advanced options"
-
-#: www/views/join.html:33
-msgid "Paste invitation here"
-msgstr "Paste invitation here"
-
-#: www/views/tab-import-file.html:13
-msgid "Paste the backup plain text code"
-msgstr "Paste the backup plain text code"
-
-#: www/views/bitpayCardIntro.html:28
-msgid "Pay 0% fees to turn bitcoin into dollars."
-msgstr "Pay 0% fees to turn bitcoin into dollars."
-
-#: www/views/modals/paypro.html:18
-msgid "Pay To"
-msgstr "Pay To"
-
-#: src/js/controllers/modals/txpDetails.js:51
-#: www/views/modals/tx-status.html:33
-msgid "Payment Accepted"
-msgstr "Payment Accepted"
-
-#: www/views/confirm.html:25
-msgid "Payment Expires:"
-msgstr "Payment Expires:"
-
-#: www/views/modals/txp-details.html:6
-msgid "Payment Proposal"
-msgstr "Payment Proposal"
-
-#: www/views/modals/tx-status.html:21
-msgid "Payment Proposal Created"
-msgstr "Payment Proposal Created"
-
-#: www/views/tab-home.html:46
-msgid "Payment Proposals"
-msgstr "Payment Proposals"
-
-#: src/js/services/payproService.js:32
-msgid "Payment Protocol Invalid"
-msgstr "Payment Protocol Invalid"
-
-#: src/js/services/payproService.js:18
-msgid "Payment Protocol not supported on Chrome App"
-msgstr "Payment Protocol not supported on Chrome App"
-
-#: www/views/includes/walletActivity.html:20
-msgid "Payment Received"
-msgstr "Payment Received"
-
-#: www/views/modals/tx-status.html:43
-#: www/views/modals/txp-details.html:43
-msgid "Payment Rejected"
-msgstr "Payment Rejected"
-
-#: src/js/controllers/modals/txpDetails.js:44
-#: www/views/confirm.html:124
-#: www/views/includes/walletActivity.html:11
-#: www/views/modals/txp-details.html:42
-msgid "Payment Sent"
-msgstr "Payment Sent"
-
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "Share this transaction"
-
-#: www/views/modals/txp-details.html:32
-msgid "Payment accepted, but not yet broadcasted"
-msgstr "Payment accepted, but not yet broadcasted"
-
-#: 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 "Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created."
-
-#: src/js/services/incomingData.js:152
-msgid "Payment address was translated to new Bitcoin Cash address format:"
-msgstr "Payment address was translated to new Bitcoin Cash address format:"
-
-#: www/views/modals/txp-details.html:107
-msgid "Payment details"
-msgstr "Payment details"
-
-#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr "Payment Request"
-
-#: www/views/mercadoLibreCards.html:22
-#: www/views/modals/mercadolibre-card-details.html:39
-msgid "Pending"
-msgstr "Pending"
-
-#: www/views/proposals.html:4
-msgid "Pending Proposals"
-msgstr "Pending Proposals"
-
-#: www/views/preferencesDeleteWallet.html:13
-msgid "Permanently delete this wallet."
-msgstr "Permanently delete this wallet."
-
-#: src/js/services/profileService.js:403
-msgid "Personal Wallet"
-msgstr "Personal Wallet"
-
-#: www/views/backup.html:25
-msgid "Please carefully write down this phrase."
-msgstr "Please carefully write down this phrase."
-
-#: www/views/tab-scan.html:20
-msgid "Please connect a camera to get started."
-msgstr "Please connect a camera to get started."
-
-#: src/js/controllers/import.js:278
-msgid "Please enter the recovery phrase"
-msgstr "Please enter the recovery phrase"
-
-#: src/js/controllers/create.js:174
-#: src/js/controllers/join.js:139
-msgid "Please enter the wallet recovery phrase"
-msgstr "Please enter the wallet recovery phrase"
-
-#: www/views/modals/pin.html:9
-msgid "Please enter your PIN"
-msgstr "Please enter your PIN"
-
-#: www/views/backup.html:53
-msgid "Please tap each word in the correct order."
-msgstr "Please tap each word in the correct order."
-
-#: src/js/services/bwcError.js:101
-msgid "Please upgrade Copay to perform this action"
-msgstr "Please upgrade Copay to perform this action"
-
-#: www/views/walletDetails.html:142
-#: www/views/walletDetails.html:62
-msgid "Please wait"
-msgstr "Please wait"
-
-#: src/js/controllers/import.js:238
-msgid "Please, select your backup file"
-msgstr "Please, select your backup file"
-
-#: www/views/bitpayCard.html:81
-msgid "Pre-Auth Holds"
-msgstr "Pre-Auth Holds"
-
-#: www/views/tab-settings.html:40
-msgid "Preferences"
-msgstr "Preferences"
-
-#: src/js/services/onGoingProcess.js:38
-msgid "Preparing addresses..."
-msgstr "Preparing addresses..."
-
-#: src/js/controllers/export.js:198
-msgid "Preparing backup..."
-msgstr "Preparing backup..."
-
-#: src/js/routes.js:1264
-msgid "Press again to exit"
-msgstr "Press again to exit"
-
-#: src/js/services/feeService.js:11
-msgid "Priority"
-msgstr "Priority"
-
-#: www/views/includes/incomingDataMenu.html:80
-msgid "Private Key"
-msgstr "Private Key"
-
-#: src/js/controllers/paperWallet.js:136
-msgid "Private key encrypted. Enter password"
-msgstr "Private key encrypted. Enter password"
-
-#: src/js/services/bwcError.js:35
-msgid "Private key is encrypted, cannot sign"
-msgstr "Private key is encrypted, cannot sign"
-
-#: www/views/includes/walletActivity.html:51
-msgid "Proposal Accepted"
-msgstr "Proposal Accepted"
-
-#: src/js/controllers/modals/txpDetails.js:61
-#: src/js/controllers/tx-details.js:78
-#: www/views/confirm.html:125
-msgid "Proposal Created"
-msgstr "Proposal Created"
-
-#: www/views/includes/walletActivity.html:27
-msgid "Proposal Deleted"
-msgstr "Proposal Deleted"
-
-#: www/views/includes/walletActivity.html:35
-msgid "Proposal Rejected"
-msgstr "Proposal Rejected"
-
-#: www/views/walletDetails.html:189
-msgid "Proposals"
-msgstr "Proposals"
-
-#: src/js/controllers/buyAmazon.js:282
-msgid "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
-msgstr "Purchase Amount is limited to {{limitPerDay}} {{currency}} per day"
-
-#: src/js/controllers/buyMercadoLibre.js:281
-msgid "Purchase amount must be a value between 50 and 2000"
-msgstr "Purchase amount must be a value between 50 and 2000"
-
-#: www/views/onboarding/notifications.html:3
-msgid "Push Notifications"
-msgstr "Push Notifications"
-
-#: www/views/preferencesNotifications.html:17
-msgid "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app."
-msgstr "Push notifications for {{appName}} are currently disabled. Enable them in the Settings app."
-
-#: www/views/export.html:17
-msgid "QR Code"
-msgstr "QR Code"
-
-#: www/views/onboarding/disclaimer.html:13
-msgid "Quick review!"
-msgstr "Quick review!"
-
-#: src/js/controllers/create.js:84
-#: src/js/controllers/join.js:68
-msgid "Random"
-msgstr "Random"
-
-#: www/views/feedback/rateApp.html:14
-msgid "Rate on the app store"
-msgstr "Rate on the app store"
-
-#: www/views/addresses.html:52
-msgid "Read less"
-msgstr "Read less"
-
-#: www/views/addresses.html:51
-msgid "Read more"
-msgstr "Read more"
-
-#: src/js/controllers/preferences.js:65
-#: src/js/controllers/tx-details.js:54
-msgid "Read more in our Wiki"
-msgstr "Read more in our Wiki"
-
-#: src/js/controllers/cashScan.js:61
-msgid "Read only wallet"
-msgstr "Read only wallet"
-
-#: www/views/tab-receive.html:3
-#: www/views/tabs.html:7
-msgid "Receive"
-msgstr "Receive"
-
-#: www/views/customAmount.html:44
-msgid "Receive in"
-msgstr "Receive in"
-
-#: www/views/includes/walletHistory.html:24
-#: www/views/tx-details.html:18
-msgid "Received"
-msgstr "Received"
-
-#: src/js/controllers/tx-details.js:130
-msgid "Received Funds"
-msgstr "Received Funds"
-
-#: www/views/includes/walletHistory.html:57
-#: www/views/tx-details.html:24
-msgid "Receiving"
-msgstr "Receiving"
-
-#: www/views/bitpayCard.html:60
-#: www/views/includes/walletHistory.html:3
-msgid "Recent"
-msgstr "Recent"
-
-#: www/views/advancedSettings.html:21
-msgid "Recent Transaction Card"
-msgstr "Recent Transaction Card"
-
-#: www/views/activity.html:4
-#: www/views/tab-home.html:58
-msgid "Recent Transactions"
-msgstr "Recent Transactions"
-
-#: www/views/amount.html:18
-#: www/views/tab-send.html:9
-msgid "Recipient"
-msgstr "Recipient"
-
-#: www/views/modals/txp-details.html:62
-msgid "Recipients"
-msgstr "Recipients"
-
-#: www/views/import.html:12
-msgid "Recovery phrase"
-msgstr "Recovery phrase"
-
-#: src/js/services/onGoingProcess.js:26
-msgid "Recreating Wallet..."
-msgstr "Recreating Wallet..."
-
-#: www/views/modals/mercadolibre-card-details.html:22
-msgid "Redeem now"
-msgstr "Redeem now"
-
-#: src/js/controllers/modals/txpDetails.js:63
-#: src/js/controllers/tx-details.js:80
-msgid "Rejected"
-msgstr "Rejected"
-
-#: src/js/services/onGoingProcess.js:27
-msgid "Rejecting payment proposal"
-msgstr "Rejecting payment proposal"
-
-#: www/views/preferencesAbout.html:9
-msgid "Release information"
-msgstr "Release information"
-
-#: www/views/addressbook.view.html:36
-#: www/views/modals/mercadolibre-card-details.html:69
-msgid "Remove"
-msgstr "Remove"
-
-#: src/js/controllers/preferencesBitpayServices.js:7
-msgid "Remove BitPay Account?"
-msgstr "Remove BitPay Account?"
-
-#: src/js/controllers/preferencesBitpayServices.js:19
-msgid "Remove BitPay Card?"
-msgstr "Remove 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 "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?"
-
-#: www/views/join.html:116
-#: www/views/join.html:124
-#: www/views/tab-create-personal.html:86
-#: www/views/tab-create-personal.html:94
-#: www/views/tab-create-shared.html:115
-#: www/views/tab-create-shared.html:123
-#: www/views/tab-export-file.html:17
-msgid "Repeat password"
-msgstr "Repeat password"
-
-#: www/views/tab-export-file.html:16
-msgid "Repeat the password"
-msgstr "Repeat the password"
-
-#: www/views/preferences.html:56
-msgid "Request Fingerprint"
-msgstr "Request Fingerprint"
-
-#: www/views/tab-receive.html:45
-msgid "Request Specific amount"
-msgstr "Request Specific amount"
-
-#: www/views/preferences.html:42
-msgid "Request Spending Password"
-msgstr "Request Spending Password"
-
-#: www/views/tab-create-shared.html:44
-msgid "Required number of signatures"
-msgstr "Required number of signatures"
-
-#: www/views/onboarding/welcome.html:9
-msgid "Restore from backup"
-msgstr "Restore from backup"
-
-#: src/js/services/onGoingProcess.js:29
-msgid "Retrieving inputs information"
-msgstr "Retrieving inputs information"
-
-#: src/js/controllers/onboarding/tour.js:56
-msgid "Retry"
-msgstr "Retry"
-
-#: www/views/tab-scan.html:23
-msgid "Retry Camera"
-msgstr "Retry Camera"
-
-#: 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 "Save"
-
-#: www/views/tab-scan.html:3
-#: www/views/tabs.html:11
-msgid "Scan"
-msgstr "Scan"
-
-#: www/views/tab-scan.html:15
-msgid "Scan QR Codes"
-msgstr "Scan QR Codes"
-
-#: www/views/addresses.html:31
-msgid "Scan addresses for funds"
-msgstr "Scan addresses for funds"
-
-#: www/views/modals/fingerprintCheck.html:11
-msgid "Scan again"
-msgstr "Scan again"
-
-#: src/js/services/fingerprintService.js:56
-msgid "Scan your fingerprint please"
-msgstr "Scan your fingerprint please"
-
-#: www/views/preferencesCash.html:23
-msgid "Scan your wallets for Bitcoin Cash"
-msgstr "Scan your wallets for Bitcoin Cash"
-
-#: src/js/services/onGoingProcess.js:30
-msgid "Scanning Wallet funds..."
-msgstr "Scanning Wallet funds..."
-
-#: www/views/includes/walletList.html:11
-msgid "Scanning funds..."
-msgstr "Scanning funds..."
-
-#: www/views/includes/screenshotWarningModal.html:7
-msgid "Screenshots are not secure"
-msgstr "Screenshots are not secure"
-
-#: www/views/modals/search.html:6
-msgid "Search Transactions"
-msgstr "Search Transactions"
-
-#: www/views/tab-send.html:13
-msgid "Search or enter bitcoin address"
-msgstr "Search or enter bitcoin address"
-
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "Clipboard"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "Your Clipboard is empty"
-
-#: www/views/modals/search.html:16
-msgid "Search transactions"
-msgstr "Search transactions"
-
-#: www/views/preferencesAltCurrency.html:14
-msgid "Search your currency"
-msgstr "Search your currency"
-
-#: www/views/preferences.html:30
-msgid "Security"
-msgstr "Security"
-
-#: www/views/modals/mercadolibre-card-details.html:64
-msgid "See invoice"
-msgstr "See invoice"
-
-#: www/views/tab-import-file.html:7
-msgid "Select a backup file"
-msgstr "Select a backup file"
-
-#: src/js/controllers/tab-receive.js:139
-msgid "Select a wallet"
-msgstr "Select a wallet"
-
-#: www/views/modals/paypro.html:38
-msgid "Self-signed Certificate"
-msgstr "Self-signed Certificate"
-
-#: src/js/services/onGoingProcess.js:41
-msgid "Selling Bitcoin..."
-msgstr "Selling 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 "Send"
-
-#: www/views/feedback/send.html:3
-#: www/views/tab-settings.html:29
-msgid "Send Feedback"
-msgstr "Send Feedback"
-
-#: www/views/addressbook.view.html:31
-msgid "Send Money"
-msgstr "Send Money"
-
-#: www/views/allAddresses.html:19
-msgid "Send addresses by email"
-msgstr "Send addresses by email"
-
-#: www/views/includes/logOptions.html:17
-#: www/views/tab-export-file.html:82
-msgid "Send by email"
-msgstr "Send by email"
-
-#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
-msgid "Send from"
-msgstr "Send from"
-
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "Send to"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "Paste Clipboard"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "Paste Address"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "Transfer between wallets"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "Scan QR Code"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "Send Bitcoin faster!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "Save frequently used addresses and send them Bitcoin in just one tap"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "Add your first contact"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "Your Bitcoin wallet is empty"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "You can receive bitcoin from any wallet or service."
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "Buy Bitcoin now"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "Show my address"
-
-#: www/views/includes/itemSelector.html:8
-msgid "Send max amount"
-msgstr "Send max amount"
-
-#: www/views/includes/incomingDataMenu.html:46
-msgid "Send payment to this address"
-msgstr "Send payment to this address"
-
-#: www/views/feedback/rateApp.html:17
-msgid "Send us feedback instead"
-msgstr "Send us feedback instead"
-
-#: 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 "Sending"
-
-#: src/js/services/onGoingProcess.js:39
-msgid "Sending 2FA code..."
-msgstr "Sending 2FA code..."
-
-#: src/js/services/onGoingProcess.js:36
-msgid "Sending feedback..."
-msgstr "Sending feedback..."
-
-#: www/views/confirm.html:16
-msgid "Sending maximum amount"
-msgstr "Sending maximum amount"
-
-#: src/js/services/onGoingProcess.js:31
-msgid "Sending transaction"
-msgstr "Sending transaction"
-
-#: src/js/controllers/confirm.js:545
-msgid "Sending {{amountStr}} from your {{name}} wallet"
-msgstr "Sending {{amountStr}} from your {{name}} wallet"
-
-#: 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 "Sent"
-
-#: src/js/controllers/tx-details.js:129
-msgid "Sent Funds"
-msgstr "Sent Funds"
-
-#: src/js/services/bwcError.js:38
-msgid "Server response could not be verified"
-msgstr "Server response could not be verified"
-
-#: src/js/controllers/buyAmazon.js:97
-#: src/js/controllers/buyMercadoLibre.js:97
-msgid "Service not available"
-msgstr "Service not available"
-
-#: www/views/includes/homeIntegrations.html:3
-msgid "Services"
-msgstr "Services"
-
-#: www/views/preferencesLogs.html:3
-msgid "Session Log"
-msgstr "Scan your fingerprint please"
-
-#: www/views/preferencesAbout.html:35
-msgid "Session log"
-msgstr "Session log"
-
-#: www/views/tab-export-file.html:10
-msgid "Set up a password"
-msgstr "Set up a password"
-
-#: src/js/controllers/preferencesFee.js:85
-msgid "Set your own fee in satoshis/byte"
-msgstr "Set your own fee in satoshis/byte"
-
-#: www/views/tab-settings.html:3
-#: www/views/tabs.html:19
-msgid "Settings"
-msgstr "Settings"
-
-#: www/views/feedback/complete.html:17
-#: www/views/feedback/complete.html:26
-msgid "Share the love by inviting your friends."
-msgstr "Share the love by inviting your friends."
-
-#: www/views/copayers.html:20
-msgid "Share this invitation with your copayers"
-msgstr "Share this invitation with your copayers"
-
-#: src/js/controllers/feedback/complete.js:5
-#: www/views/tab-settings.html:36
-msgid "Share {{appName}}"
-msgstr "Share {{appName}}"
-
-#: www/views/tab-import-hardware.html:24
-msgid "Shared Wallet"
-msgstr "Shared Wallet"
-
-#: www/views/preferencesExternal.html:34
-msgid "Show Recovery Phrase"
-msgstr "Show Recovery Phrase"
-
-#: www/views/tab-receive.html:34
-msgid "Show address"
-msgstr "Show address"
-
-#: www/views/join.html:48
-#: www/views/tab-create-personal.html:27
-#: www/views/tab-create-shared.html:56
-#: www/views/tab-export-file.html:24
-#: www/views/tab-import-file.html:29
-#: www/views/tab-import-hardware.html:30
-#: www/views/tab-import-phrase.html:35
-msgid "Show advanced options"
-msgstr "Show advanced options"
-
-#: www/views/tab-send.html:37
-msgid "Show bitcoin address"
-msgstr "Show bitcoin address"
-
-#: www/views/tab-send.html:59
-msgid "Show more"
-msgstr "Show more"
-
-#: src/js/services/bwcError.js:104
-msgid "Signatures rejected by server"
-msgstr "Signatures rejected by server"
-
-#: src/js/services/onGoingProcess.js:32
-msgid "Signing transaction"
-msgstr "Signing 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 "Since only you control your money, you’ll need to save your backup phrase in case this app is deleted."
-
-#: www/views/tab-create-personal.html:122
-#: www/views/tab-create-shared.html:151
-msgid "Single Address Wallet"
-msgstr "Single Address Wallet"
-
-#: www/views/onboarding/collectEmail.html:40
-#: www/views/onboarding/tour.html:11
-msgid "Skip"
-msgstr "Skip"
-
-#: src/js/controllers/confirm.js:371
-#: src/js/controllers/modals/txpDetails.js:47
-msgid "Slide to accept"
-msgstr "Slide to accept"
-
-#: www/views/buyAmazon.html:96
-msgid "Slide to buy"
-msgstr "Slide to buy"
-
-#: src/js/controllers/confirm.js:365
-msgid "Slide to pay"
-msgstr "Slide to pay"
-
-#: src/js/controllers/confirm.js:377
-#: src/js/controllers/modals/txpDetails.js:40
-msgid "Slide to send"
-msgstr "Slide to send"
-
-#: www/views/cashScan.html:56
-msgid "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-msgstr "Some of your wallets are not eligible for Bitcoin Cash support. You can try to access BCH funds from these wallets using the"
-
-#: src/js/controllers/create.js:88
-#: src/js/controllers/join.js:71
-msgid "Specify Recovery Phrase..."
-msgstr "Specify Recovery Phrase..."
-
-#: src/js/services/bwcError.js:92
-msgid "Spend proposal is not accepted"
-msgstr "Spend proposal is not accepted"
-
-#: src/js/services/bwcError.js:95
-msgid "Spend proposal not found"
-msgstr "Spend proposal not found"
-
-#: src/js/services/bwcError.js:137
-msgid "Spending Password needed"
-msgstr "Spending Password needed"
-
-#: www/views/walletDetails.html:173
-msgid "Spending this balance will need significant Bitcoin network fees"
-msgstr "Spending this balance will need significant Bitcoin network fees"
-
-#: www/views/tab-send.html:28
-msgid "Start sending bitcoin"
-msgstr "Start sending bitcoin"
-
-#: www/views/lockSetup.html:3
-msgid "Startup Lock"
-msgstr "Startup Lock"
-
-#: www/views/mercadoLibreCards.html:21
-#: www/views/modals/mercadolibre-card-details.html:42
-msgid "Still pending"
-msgstr "Still pending"
-
-#: www/views/topup.html:101
-msgid "Success"
-msgstr "Success"
-
-#: src/js/services/feeService.js:14
-msgid "Super Economy"
-msgstr "Super Economy"
-
-#: www/views/preferencesCash.html:11
-msgid "Support Bitcoin Cash"
-msgstr "Support Bitcoin Cash"
-
-#: www/views/paperWallet.html:7
-msgid "Sweep"
-msgstr "Sweep"
-
-#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr ""
-
-#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
-msgstr "Sweep Paper Wallet"
-
-#: src/js/services/onGoingProcess.js:33
-msgid "Sweeping Wallet..."
-msgstr "Sweeping Wallet..."
-
-#: www/views/preferencesDeleteWallet.html:16
-msgid "THIS ACTION CANNOT BE REVERSED"
-msgstr "THIS ACTION CANNOT BE REVERSED"
-
-#: www/views/onboarding/welcome.html:5
-msgid "Take control of your money, get started with bitcoin."
-msgstr "Take control of your money, get started with bitcoin."
-
-#: www/views/walletDetails.html:132
-#: www/views/walletDetails.html:52
-msgid "Tap and hold to show"
-msgstr "Tap and hold to show"
-
-#: www/views/includes/walletInfo.html:3
-msgid "Tap to recreate"
-msgstr "Tap to recreate"
-
-#: www/views/includes/walletInfo.html:4
-msgid "Tap to retry"
-msgstr "Tap to retry"
-
-#: www/views/termsOfUse.html:3
-msgid "Terms Of Use"
-msgstr "Terms Of Use"
-
-#: 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 "Terms of Use"
-
-#: www/views/tab-create-personal.html:118
-#: www/views/tab-import-phrase.html:68
-msgid "Testnet"
-msgstr "Testnet"
-
-#: www/views/includes/incomingDataMenu.html:61
-msgid "Text"
-msgstr "Text"
-
-#: 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 "Thank you!"
-
-#: src/js/controllers/feedback/send.js:72
-msgid "Thanks!"
-msgstr "Thanks!"
-
-#: 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 "That's exciting to hear. We'd love to earn that fifth star from you – how could we improve your experience?"
-
-#: src/js/services/ledger.js:152
-msgid "The Ledger Chrome application is not installed"
-msgstr "The Ledger Chrome application is not installed"
-
-#: www/views/modals/wallet-balance.html:55
-msgid "The amount of bitcoin immediately spendable from this wallet."
-msgstr "The amount of bitcoin immediately spendable from this wallet."
-
-#: 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 "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."
-
-#: www/views/modals/wallet-balance.html:74
-msgid "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation."
-msgstr "The amount of bitcoin stored in this wallet with less than 1 blockchain confirmation."
-
-#: www/views/tab-import-phrase.html:5
-msgid "The derivation path"
-msgstr "The derivation path"
-
-#: www/views/onboarding/tour.html:37
-msgid "The exchange rate changes with the market."
-msgstr "The exchange rate changes with the market."
-
-#: 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 "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."
-
-#: 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 "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."
-
-#: src/js/controllers/onboarding/terms.js:21
-msgid "The official English Terms of Service are available on the BitPay website."
-msgstr "The official English Terms of Service are available on the BitPay website."
-
-#: www/views/tab-import-phrase.html:4
-msgid "The password of the recovery phrase (if set)"
-msgstr "The password of the recovery phrase (if set)"
-
-#: src/js/services/walletService.js:1139
-msgid "The payment was created but could not be completed. Please try again from home screen"
-msgstr "The payment was created but could not be completed. Please try again from home screen"
-
-#: www/views/modals/txp-details.html:26
-msgid "The payment was removed by creator"
-msgstr "The payment was removed by creator"
-
-#: www/views/join.html:91
-#: www/views/tab-create-personal.html:63
-#: www/views/tab-create-shared.html:92
-#: www/views/tab-import-phrase.html:43
-msgid "The recovery phrase could require a password to be imported"
-msgstr "The recovery phrase could require a password to be imported"
-
-#: src/js/services/bwcError.js:56
-msgid "The request could not be understood by the server"
-msgstr "The request could not be understood by the 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 "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."
-
-#: src/js/services/bwcError.js:98
-msgid "The spend proposal is not pending"
-msgstr "The spend proposal is not pending"
-
-#: www/views/modals/wallet-balance.html:36
-msgid "The total amount of bitcoin stored in this wallet."
-msgstr "The total amount of bitcoin stored in this 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 "The transaction history and every new incoming transaction are cached in the app. This feature clean this up and synchronizes again from the server"
-
-#: www/views/tab-import-phrase.html:6
-msgid "The wallet service URL"
-msgstr "The wallet service URL"
-
-#: src/js/controllers/tab-home.js:38
-msgid "There is a new version of {{appName}} available"
-msgstr "There is a new version of {{appName}} available"
-
-#: src/js/controllers/import.js:229
-#: src/js/controllers/import.js:254
-#: src/js/controllers/import.js:335
-msgid "There is an error in the form"
-msgstr "There is an error in the 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 "There's obviously something we're doing wrong."
-
-#: src/js/controllers/feedback/rateCard.js:38
-msgid "This app is fantastic!"
-msgstr "This app is fantastic!"
-
-#: www/views/onboarding/tour.html:47
-msgid "This app stores your bitcoin with cutting-edge security."
-msgstr "This app stores your bitcoin with cutting-edge security."
-
-#: src/js/controllers/confirm.js:523
-msgid "This bitcoin payment request has expired."
-msgstr "This bitcoin payment request has expired."
-
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "Payment expires:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "Payment request has expired"
-
-#: www/views/join.html:133
-#: www/views/tab-create-personal.html:103
-#: www/views/tab-create-shared.html:132
-msgid "This password cannot be recovered. If the password is lost, there is no way you could recover your funds."
-msgstr "This password cannot be recovered. If the password is lost, there is no way you could recover your funds."
-
-#: www/views/backup.html:31
-msgid "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed."
-msgstr "This recovery phrase was created with a password. To recover this wallet both the recovery phrase and password are needed."
-
-#: www/views/tx-details.html:91
-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 "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."
-
-#: www/views/tx-details.html:87
-msgid "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender"
-msgstr "This transaction could take a long time to confirm or could be dropped due to the low fees set by the sender"
-
-#: www/views/walletDetails.html:109
-#: www/views/walletDetails.html:29
-msgid "This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information."
-msgstr "This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information."
-
-#: www/views/modals/txp-details.html:136
-#: www/views/tx-details.html:121
-msgid "Timeline"
-msgstr "Timeline"
-
-#: www/views/confirm.html:31
-#: www/views/includes/output.html:2
-#: www/views/modals/txp-details.html:109
-#: www/views/modals/txp-details.html:53
-#: www/views/tx-details.html:41
-#: www/views/tx-details.html:53
-msgid "To"
-msgstr "To"
-
-#: 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 "To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service."
-
-#: src/js/services/bitpayAccountService.js:73
-msgid "To {{reason}} you must first add your BitPay account - {{email}}"
-msgstr "To {{reason}} you must first add your BitPay account - {{email}}"
-
-#: src/js/services/onGoingProcess.js:48
-msgid "Top up in progress..."
-msgstr "Top up in progress..."
-
-#: src/js/controllers/topup.js:206
-msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-msgstr "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
-
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "Start ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "Exchange your BTC to BCH in minutes."
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "To start the process you need to add funds to your wallet."
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "The process is fast and you will receive the exchanged amount in your wallet."
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-
-#: www/views/buyAmazon.html:61
-#: www/views/buyMercadoLibre.html:60
-#: www/views/modals/wallet-balance.html:23
-#: www/views/topup.html:70
-msgid "Total"
-msgstr "Total"
-
-#: www/views/walletDetails.html:196
-msgid "Total Locked Balance"
-msgstr "Total Locked Balance"
-
-#: www/views/tab-create-shared.html:35
-msgid "Total number of copayers"
-msgstr "Total number of copayers"
-
-#: www/views/addresses.html:81
-msgid "Total wallet inputs"
-msgstr "Total wallet inputs"
-
-#: src/js/services/fingerprintService.js:63
-#: src/js/services/fingerprintService.js:68
-msgid "Touch ID Failed"
-msgstr "Touch ID Failed"
-
-#: src/js/controllers/tx-details.js:12
-msgid "Transaction"
-msgstr "Transaction"
-
-#: www/views/confirm.html:126
-msgid "Transaction Created"
-msgstr "Transaction Created"
-
-#: www/views/preferencesAdvanced.html:29
-#: www/views/preferencesHistory.html:3
-msgid "Transaction History"
-msgstr "Transaction History"
-
-#: src/js/services/bwcError.js:83
-msgid "Transaction already broadcasted"
-msgstr "Transaction already broadcasted"
-
-#: src/js/controllers/buyAmazon.js:308
-#: src/js/controllers/buyMercadoLibre.js:301
-#: src/js/controllers/topup.js:281
-msgid "Transaction has not been created"
-msgstr "Transaction has not been created"
-
-#: www/views/topup.html:104
-msgid "Transaction initiated"
-msgstr "Transaction initiated"
-
-#: src/js/controllers/tx-details.js:119
-msgid "Transaction not available at this time"
-msgstr "Transaction not available at this time"
-
-#: src/js/controllers/activity.js:45
-#: src/js/controllers/tab-home.js:174
-msgid "Transaction not found"
-msgstr "Transaction not found"
-
-#: www/views/modals/chooseFeeLevel.html:55
-msgid "Transactions without fee are not supported."
-msgstr "Transactions without fee are not supported."
-
-#: src/js/controllers/paperWallet.js:109
-msgid "Transfer to"
-msgstr "Transfer to"
-
-#: www/views/tab-send.html:67
-msgid "Transfer to Wallet"
-msgstr "Transfer to Wallet"
-
-#: www/views/modals/pin.html:13
-msgid "Try again in {{expires}}"
-msgstr "Try again in {{expires}}"
-
-#: www/views/bitpayCardIntro.html:18
-msgid "Turn bitcoin into dollars, swipe anywhere Visa® is accepted."
-msgstr "Turn bitcoin into dollars, swipe anywhere Visa® is accepted."
-
-#: www/views/tab-import-phrase.html:17
-msgid "Type the Recovery Phrase (usually 12 words)"
-msgstr "Type the Recovery Phrase (usually 12 words)"
-
-#: src/js/controllers/backup.js:75
-msgid "Uh oh..."
-msgstr "Uh oh..."
-
-#: www/views/tx-details.html:100
-msgid "Unconfirmed"
-msgstr "Unconfirmed"
-
-#: www/views/walletDetails.html:190
-msgid "Unsent transactions"
-msgstr "Unsent transactions"
-
-#: www/views/addresses.html:39
-msgid "Unused Addresses"
-msgstr "Unused Addresses"
-
-#: www/views/addresses.html:50
-msgid "Unused Addresses Limit"
-msgstr "Unused Addresses Limit"
-
-#: src/js/controllers/tab-home.js:146
-msgid "Update Available"
-msgstr "Update Available"
-
-#: www/views/proposals.html:14
-msgid "Updating pending proposals. Please stand by"
-msgstr "Updating pending proposals. Please stand by"
-
-#: www/views/walletDetails.html:217
-msgid "Updating transaction history. Please stand by."
-msgstr "Updating transaction history. Please stand by."
-
-#: www/views/activity.html:14
-msgid "Updating... Please stand by"
-msgstr "Updating... Please stand by"
-
-#: src/js/services/feeService.js:10
-msgid "Urgent"
-msgstr "Urgent"
-
-#: www/views/advancedSettings.html:12
-msgid "Use Unconfirmed Funds"
-msgstr "Use Unconfirmed Funds"
-
-#: src/js/services/onGoingProcess.js:34
-msgid "Validating recovery phrase..."
-msgstr "Validating recovery phrase..."
-
-#: www/views/modals/fingerprintCheck.html:4
-msgid "Verify your identity"
-msgstr "Verify your identity"
-
-#: www/views/preferencesAbout.html:14
-#: www/views/preferencesExternal.html:25
-msgid "Version"
-msgstr "Version"
-
-#: www/views/tab-export-file.html:69
-msgid "View"
-msgstr "View"
-
-#: www/views/addresses.html:34
-msgid "View All Addresses"
-msgstr "View All Addresses"
-
-#: src/js/controllers/onboarding/terms.js:20
-msgid "View Terms of Service"
-msgstr "View Terms of Service"
-
-#: src/js/controllers/bitpayCard.js:122
-#: src/js/controllers/tx-details.js:191
-msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "View Transaction on Explorer.Bitcoin.com"
-
-#: src/js/controllers/tab-home.js:148
-msgid "View Update"
-msgstr "View Update"
-
-#: www/views/tx-details.html:147
-msgid "View on blockchain"
-msgstr "View on blockchain"
-
-#: www/views/mercadoLibre.html:26
-msgid "Visit mercadolivre.com.br →"
-msgstr "Visit mercadolivre.com.br →"
-
-#: www/views/walletDetails.html:182
-msgid "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet."
-msgstr "WARNING: Key derivation is not working on this device/wallet. Actions cannot be performed on this wallet."
-
-#: 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 "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 ."
-
-#: 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 "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 ."
-
-#: www/views/modals/paypro.html:42
-msgid "WARNING: UNTRUSTED CERTIFICATE"
-msgstr "WARNING: UNTRUSTED CERTIFICATE"
-
-#: src/js/services/onGoingProcess.js:15
-msgid "Waiting for Ledger..."
-msgstr "Waiting for Ledger..."
-
-#: src/js/services/onGoingProcess.js:16
-msgid "Waiting for Trezor..."
-msgstr "Waiting for Trezor..."
-
-#: www/views/copayers.html:48
-msgid "Waiting for copayers"
-msgstr "Waiting for copayers"
-
-#: www/views/copayers.html:53
-msgid "Waiting..."
-msgstr "Waiting..."
-
-#: www/views/addresses.html:3
-#: www/views/preferencesAdvanced.html:17
-msgid "Wallet Addresses"
-msgstr "Wallet Addresses"
-
-#: www/views/preferencesColor.html:4
-msgid "Wallet Color"
-msgstr "Wallet Color"
-
-#: www/views/preferencesInformation.html:29
-msgid "Wallet Configuration (m-n)"
-msgstr "Wallet Configuration (m-n)"
-
-#: www/views/onboarding/collectEmail.html:5
-msgid "Wallet Created"
-msgstr "Wallet Created"
-
-#: www/views/preferencesInformation.html:23
-msgid "Wallet Id"
-msgstr "Wallet Id"
-
-#: www/views/preferencesAdvanced.html:13
-#: www/views/preferencesInformation.html:3
-msgid "Wallet Information"
-msgstr "Wallet Information"
-
-#: www/views/addresses.html:76
-msgid "Wallet Inputs"
-msgstr "Wallet Inputs"
-
-#: www/views/join.html:26
-msgid "Wallet Invitation"
-msgstr "Wallet Invitation"
-
-#: www/views/join.html:60
-#: www/views/tab-create-personal.html:38
-#: www/views/tab-create-shared.html:67
-msgid "Wallet Key"
-msgstr "Wallet Key"
-
-#: www/views/preferencesAlias.html:4
-msgid "Wallet Name"
-msgstr "New personal wallet"
-
-#: www/views/preferencesInformation.html:11
-msgid "Wallet Name (at creation)"
-msgstr "Wallet Name (at creation)"
-
-#: www/views/preferencesInformation.html:35
-msgid "Wallet Network"
-msgstr "Wallet Network"
-
-#: www/views/join.html:77
-#: www/views/tab-create-personal.html:50
-#: www/views/tab-create-shared.html:79
-msgid "Wallet Recovery Phrase"
-msgstr "Wallet Recovery Phrase"
-
-#: src/js/services/bwcError.js:26
-msgid "Wallet Recovery Phrase is invalid"
-msgstr "Wallet Recovery Phrase is invalid"
-
-#: www/views/preferencesAdvanced.html:25
-#: www/views/tab-import-phrase.html:73
-msgid "Wallet Service URL"
-msgstr "Wallet Service URL"
-
-#: www/views/preferences.html:4
-msgid "Wallet Settings"
-msgstr "Wallet Settings"
-
-#: www/views/tab-import-hardware.html:11
-#: www/views/tab-import-phrase.html:61
-msgid "Wallet Type"
-msgstr "Wallet Type"
-
-#: src/js/services/bwcError.js:59
-msgid "Wallet already exists"
-msgstr "Wallet already exists"
-
-#: src/js/services/profileService.js:516
-msgid "Wallet already in {{appName}}"
-msgstr "Wallet already in {{appName}}"
-
-#: www/views/includes/walletActivity.html:6
-msgid "Wallet created"
-msgstr "Wallet created"
-
-#: www/views/copayers.html:58
-msgid "Wallet incomplete and broken"
-msgstr "Wallet incomplete and broken"
-
-#: src/js/services/bwcError.js:65
-msgid "Wallet is full"
-msgstr "Wallet is full"
-
-#: src/js/services/bwcError.js:125
-msgid "Wallet is locked"
-msgstr "Wallet is locked"
-
-#: src/js/services/bwcError.js:128
-msgid "Wallet is not complete"
-msgstr "Wallet is not complete"
-
-#: www/views/tab-create-personal.html:12
-#: www/views/tab-create-shared.html:12
-msgid "Wallet name"
-msgstr "Wallet name"
-
-#: src/js/services/bwcError.js:131
-msgid "Wallet needs backup"
-msgstr "Wallet needs backup"
-
-#: www/views/tab-receive.html:59
-#: www/views/walletDetails.html:169
-msgid "Wallet not backed up"
-msgstr "Wallet not backed up"
-
-#: src/js/services/bwcError.js:68
-msgid "Wallet not found"
-msgstr "Wallet not found"
-
-#: src/js/controllers/cashScan.js:81
-#: src/js/controllers/tab-home.js:230
-msgid "Wallet not registered"
-msgstr "Wallet not registered"
-
-#: 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 not registered at the wallet service. Recreate it from \"Create Wallet\" using \"Advanced Options\" to set your recovery phrase"
-
-#: www/views/backup.html:12
-msgid "Wallet recovery phrase not available"
-msgstr "Wallet recovery phrase not available"
-
-#: src/js/services/bwcError.js:50
-msgid "Wallet service not found"
-msgstr "Wallet service not found"
-
-#: www/views/tab-home.html:69
-msgid "Wallets"
-msgstr "Wallets"
-
-#: src/js/controllers/addressbookView.js:36
-#: src/js/controllers/modals/txpDetails.js:153
-#: src/js/controllers/modals/txpDetails.js:170
-#: src/js/controllers/preferencesDelete.js:24
-#: src/js/controllers/preferencesExternal.js:14
-#: www/views/preferencesDeleteWallet.html:11
-msgid "Warning!"
-msgstr "Warning!"
-
-#: www/views/modals/txp-details.html:47
-msgid "Warning: this transaction has unconfirmed inputs"
-msgstr "Warning: this transaction has unconfirmed inputs"
-
-#: src/js/controllers/onboarding/backupRequest.js:17
-msgid "Watch out!"
-msgstr "Watch out!"
-
-#: src/js/controllers/feedback/send.js:69
-msgid "We'd love to do better."
-msgstr "We'd love to do better."
-
-#: www/views/backup.html:35
-msgid "We'll confirm on the next screen."
-msgstr "We'll confirm on the next screen."
-
-#: src/js/controllers/feedback/send.js:77
-msgid "We're always looking for ways to improve {{appName}}."
-msgstr "We're always looking for ways to improve {{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 "We're always looking for ways to improve {{appName}}. How could we improve your experience?"
-
-#: www/views/includes/incomingDataMenu.html:6
-msgid "Website"
-msgstr "Website"
-
-#: 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 "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."
-
-#: www/views/preferencesAlias.html:11
-msgid "What do you call this wallet?"
-msgstr "What do you call this wallet?"
-
-#: 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 "When this wallet was created, it was called “{{walletName}}”. You can change the name displayed on this device below."
-
-#: www/views/onboarding/collectEmail.html:10
-msgid "Where would you like to receive email notifications about payments?"
-msgstr "Where would you like to receive email notifications about payments?"
-
-#: www/views/addresses.html:19
-msgid "Why?"
-msgstr "Why?"
-
-#: www/views/feedback/rateApp.html:10
-msgid "Would you be willing to rate {{appName}} in the app store?"
-msgstr "Would you be willing to rate {{appName}} in the app store?"
-
-#: www/views/onboarding/notifications.html:4
-msgid "Would you like to receive push notifications about payments?"
-msgstr "Would you like to receive push notifications about payments?"
-
-#: src/js/controllers/import.js:288
-msgid "Wrong number of recovery words:"
-msgstr "Wrong number of recovery words:"
-
-#: src/js/services/bwcError.js:140
-msgid "Wrong spending password"
-msgstr "Wrong spending password"
-
-#: www/views/modals/confirmation.html:7
-msgid "Yes"
-msgstr "Yes"
-
-#: src/js/controllers/onboarding/backupRequest.js:25
-msgid "Yes, skip"
-msgstr "Yes, skip"
-
-#: src/js/controllers/onboarding/backupRequest.js:24
-msgid "You can create a backup later from your wallet settings."
-msgstr "You can create a backup later from your wallet settings."
-
-#: 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 "You can make contributions by signing up on our Crowdin community translation website. We’re looking forward to hearing from you!"
-
-#: www/views/tab-scan.html:16
-msgid "You can scan bitcoin addresses, payment requests, paper wallets, and more."
-msgstr "You can scan bitcoin addresses, payment requests, paper wallets, and more."
-
-#: 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 "You can see the latest developments and contribute to this open source app by visiting our project on GitHub."
-
-#: www/views/onboarding/tour.html:19
-msgid "You can spend bitcoin at millions of websites and stores worldwide."
-msgstr "You can spend bitcoin at millions of websites and stores worldwide."
-
-#: www/views/backup.html:15
-msgid "You can still export it from Advanced > Export."
-msgstr "You can still export it from Advanced > Export."
-
-#: www/views/onboarding/tour.html:32
-msgid "You can trade it for other currencies like US Dollars, Euros, or Pounds."
-msgstr "You can trade it for other currencies like US Dollars, Euros, or Pounds."
-
-#: www/views/onboarding/tour.html:46
-msgid "You control your bitcoin."
-msgstr "You control your bitcoin."
-
-#: www/views/modals/chooseFeeLevel.html:64
-msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte."
-msgstr "You should not set a fee higher than {{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 "You will need to log back for fill in your BitPay Card."
-
-#: www/views/preferencesNotifications.html:34
-msgid "You'll receive email notifications about payments sent and received from your wallets."
-msgstr "You'll receive email notifications about payments sent and received from your 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 "Your BitPay Card is ready. Add funds to your card to start using it at stores and ATMs worldwide."
-
-#: www/views/mercadoLibre.html:57
-#: www/views/mercadoLibreCards.html:6
-msgid "Your Gift Cards"
-msgstr "Your Gift Cards"
-
-#: www/views/includes/confirmBackupPopup.html:6
-msgid "Your bitcoin wallet is backed up!"
-msgstr "Your bitcoin wallet is backed up!"
-
-#: www/views/tab-home.html:36
-msgid "Your bitcoin wallet is ready!"
-msgstr "Your bitcoin wallet is ready!"
-
-#: www/views/modals/chooseFeeLevel.html:61
-msgid "Your fee is lower than recommended."
-msgstr "Your fee is lower than recommended."
-
-#: www/views/feedback/send.html:42
-msgid "Your ideas, feedback, or comments"
-msgstr "Your ideas, feedback, or comments"
-
-#: www/views/tab-create-shared.html:22
-msgid "Your name"
-msgstr "Your name"
-
-#: www/views/join.html:16
-msgid "Your nickname"
-msgstr "Your nickname"
-
-#: www/views/tab-export-file.html:11
-#: www/views/tab-import-file.html:20
-msgid "Your password"
-msgstr "Your password"
-
-#: www/views/buyAmazon.html:102
-msgid "Your purchase could not be completed"
-msgstr "Your purchase could not be completed"
-
-#: www/views/buyAmazon.html:105
-msgid "Your purchase was added to the list of pending"
-msgstr "Your purchase was added to the list of pending"
-
-#: www/views/onboarding/backupRequest.html:10
-msgid "Your wallet is never saved to cloud storage or standard device backups."
-msgstr "Your wallet is never saved to cloud storage or standard device backups."
-
-#: src/js/services/walletService.js:1030
-msgid "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
-msgstr "Your wallet key will be encrypted. The Spending Password cannot be recovered. Be sure to write it down."
-
-#: www/views/includes/walletList.html:13
-#: www/views/includes/walletSelector.html:21
-#: www/views/paperWallet.html:33
-#: www/views/tab-receive.html:72
-#: www/views/walletDetails.html:131
-#: www/views/walletDetails.html:51
-msgid "[Balance Hidden]"
-msgstr "[Balance Hidden]"
-
-#: www/views/walletDetails.html:141
-#: www/views/walletDetails.html:61
-msgid "[Scanning Funds]"
-msgstr "[Scanning Funds]"
-
-#: src/js/controllers/bitpayCardIntro.js:11
-msgid "add your BitPay Visa card(s)"
-msgstr "add your BitPay Visa card(s)"
-
-#: www/views/includes/available-balance.html:8
-msgid "locked by pending payments"
-msgstr "locked by pending payments"
-
-#: src/js/services/profileService.js:404
-msgid "me"
-msgstr "me"
-
-#: www/views/addressbook.add.html:32
-msgid "name@example.com"
-msgstr "name@example.com"
-
-#: www/views/preferencesHistory.html:15
-msgid "preparing..."
-msgstr "preparing..."
-
-#: www/views/cashScan.html:57
-msgid "recovery tool."
-msgstr "recovery tool."
-
-#: src/js/controllers/buyAmazon.js:239
-msgid "{{amountStr}} for Amazon.com Gift Card"
-msgstr "{{amountStr}} for Amazon.com Gift Card"
-
-#: src/js/controllers/buyMercadoLibre.js:237
-msgid "{{amountStr}} for Mercado Livre Brazil Gift Card"
-msgstr "{{amountStr}} for Mercado Livre Brazil Gift Card"
-
-#: 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}} 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)."
-
-#: src/js/controllers/confirm.js:408
-msgid "{{fee}} will be deducted for bitcoin networking fees."
-msgstr "{{fee}} will be deducted for bitcoin networking fees."
-
-#: www/views/confirm.html:85
-msgid "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-msgstr "{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount"
-
-#: www/views/walletDetails.html:218
-msgid "{{updatingTxHistoryProgress}} transactions downloaded"
-msgstr "{{updatingTxHistoryProgress}} transactions downloaded"
-
-#: www/views/cashScan.html:33
-#: www/views/copayers.html:46
-#: www/views/includes/walletInfo.html:18
-msgid "{{wallet.m}}-of-{{wallet.n}}"
-msgstr "{{wallet.m}}-of-{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "Community"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Bitcoin.com Twitter"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "Explore Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Bitcoin Cash Games"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr ""
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "News"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "Mining Pool"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "Tools"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "Bitcoin Price Charts"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "Free Bitcoin Cash"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "Your Bitcoin Wallets are ready!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "Address does not contain currency information, please make sure you are sending the correct currency."
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "Review Transaction"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "You are sending"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "You are shifting"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "To:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "Add personal note"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "Suggested by merchant:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "Enter text here"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "Personal note:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "Less than 1 cent"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "This invoice is no longer accepting payments"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr ""
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr ""
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr ""
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr ""
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr ""
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr ""
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr ""
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr ""
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr ""
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr ""
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr ""
-
diff --git a/i18n/po/zh-CN/template-zh-CN.po b/i18n/po/zh.po
similarity index 90%
rename from i18n/po/zh-CN/template-zh-CN.po
rename to i18n/po/zh.po
index f648a8cd6..4fa2760b6 100644
--- a/i18n/po/zh-CN/template-zh-CN.po
+++ b/i18n/po/zh.po
@@ -2,16 +2,16 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Project-Id-Version: bitcoincom-wallet\n"
+"Project-Id-Version: copay\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: crowdin.com\n"
-"X-Crowdin-Project: bitcoincom-wallet\n"
+"X-Crowdin-Project: copay\n"
"X-Crowdin-Language: zh-CN\n"
"X-Crowdin-File: template.pot\n"
-"Last-Translator: emilold\n"
+"Last-Translator: cmgustavo83\n"
"Language-Team: Chinese Simplified\n"
"Language: zh\n"
-"PO-Revision-Date: 2018-09-15 05:56\n"
+"PO-Revision-Date: 2017-10-09 10:33-0400\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@@ -41,7 +41,7 @@ msgstr "5 星评级帮助我们进入更多的人手, {{appName}} 和更多的
#: www/views/mercadoLibre.html:18
#: www/views/mercadoLibre.html:40
msgid "Only redeemable on Mercado Livre (Brazil)"
-msgstr "只 可以在 Mercado Livre(巴西)兑换"
+msgstr "Only 可在悔尔卡多里弗(巴西) 兌換"
#: src/js/controllers/feedback/send.js:27
#: www/views/feedback/complete.html:21
@@ -77,30 +77,6 @@ msgstr "帐户"
msgid "Account Number"
msgstr "帐号"
-#: www/views/tab-home.html:61
-msgid "Instant transactions with low fees"
-msgstr "以较低费用进行即时交易"
-
-#: www/views/walletSelector.html:49
-msgid "Insufficient funds"
-msgstr "资金不足"
-
-#: www/views/amount.html:42
-msgid "Change Currency"
-msgstr "更改货币"
-
-#: www/views/amount.html:49
-msgid "Available Funds"
-msgstr "可用资金"
-
-#: www/views/amount.html:59
-msgid "Use All Available Funds"
-msgstr "使用所有可用资金"
-
-#: www/views/amount.html:99
-msgid "Next"
-msgstr "下一步"
-
#: www/views/preferencesBitpayServices.html:23
msgid "Accounts"
msgstr "帐户"
@@ -226,20 +202,6 @@ msgstr "差不多完成了 !让我们回顾一下。"
msgid "Alternative Currency"
msgstr "替代货币"
-#: www/views/tab-settings.html:75
-msgid "Price Display"
-msgstr "价格显示"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:12
-msgid "Fiat"
-msgstr "法币"
-
-#: src/js/controllers/tab-settings.js:19
-#: www/views/preferencesPriceDisplay.html:15
-msgid "Cryptocurrency"
-msgstr "加密货币"
-
#: src/js/controllers/buyAmazon.js:98
msgid "Amazon.com is not available at this moment. Please try back later."
msgstr "亚马逊服务器暂时无法访问,请稍候再试。"
@@ -260,7 +222,7 @@ msgstr "量太大"
#: www/views/includes/walletHistory.html:31
msgid "Amount too low to spend"
-msgstr "数量太少,无法支付"
+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."
@@ -272,7 +234,7 @@ msgstr "任何人只要持有你的备份短语,就可以访问或者花掉你
#: www/views/addresses.html:94
msgid "Approximate Bitcoin network fee to transfer wallet's balance (with normal priority)"
-msgstr "转移钱包余额大约需要的比特币网络费用(正常优先级)"
+msgstr "近似的比特币网络费用将钱包的余额转移 (与正常优先级)"
#: www/views/backupWarning.html:10
msgid "Are you being watched?"
@@ -280,7 +242,7 @@ msgstr "你正在被监视吗?"
#: src/js/controllers/preferencesExternal.js:15
msgid "Are you being watched? Anyone with your recovery phrase can access or spend your bitcoin."
-msgstr "请确认目前没有人在监视你的屏幕!因为只要有人知道了你的恢复短语,他就拥有你的比特币完全访问权限,甚至可以直接用于消费!"
+msgstr "有旁观者么?只要有人知道了你的恢复短语,他就能访问你的比特币,或者花费它。"
#: src/js/controllers/copayers.js:56
msgid "Are you sure you want to cancel and delete this wallet?"
@@ -341,7 +303,7 @@ msgstr "BIP32 路径的地址衍生"
#: www/views/cashScan.html:25
msgid "BTC wallets"
-msgstr "比特币钱包"
+msgstr "比特幣錢包"
#: www/views/preferences.html:34
msgid "Backup"
@@ -353,7 +315,7 @@ msgstr "需要备份"
#: src/js/controllers/lockSetup.js:87
msgid "Backup all livenet wallets before using this function"
-msgstr "请在使用此功能之前备份你所有的 livenet 钱包"
+msgstr "请在使用此功能之前备份你的钱包。"
#: src/js/controllers/cashScan.js:64
#: www/views/includes/walletListSettings.html:12
@@ -397,17 +359,17 @@ msgstr "比特币地址"
#: www/views/cashScan.html:4
msgid "Bitcoin Cash (BCH) Balances"
-msgstr "Bitcoin Cash (BCH) 余额"
+msgstr "小比特幣(BCH) 結餘"
#: www/views/preferencesCash.html:3
#: www/views/tab-settings.html:47
msgid "Bitcoin Cash Support"
-msgstr "Bitcoin Cash 支持"
+msgstr "小比特幣支援"
#: www/views/tab-home.html:98
#: www/views/tab-settings.html:115
msgid "Bitcoin Cash Wallets"
-msgstr "比特币现金钱包"
+msgstr ""
#: www/views/modals/chooseFeeLevel.html:4
#: www/views/preferencesFee.html:4
@@ -418,11 +380,11 @@ msgstr "比特币网络手续费策略"
#: www/views/tab-home.html:83
#: www/views/tab-settings.html:107
msgid "Bitcoin Core Wallets"
-msgstr "Bitcoin Core 钱包"
+msgstr ""
#: src/js/services/incomingData.js:151
msgid "Bitcoin cash Payment"
-msgstr "比特币现金支付"
+msgstr "小比特幣支付"
#: www/views/onboarding/tour.html:31
msgid "Bitcoin is a currency."
@@ -471,7 +433,6 @@ msgid "Buy & Sell Bitcoin"
msgstr "购买或出售比特币"
#: www/views/tab-send.html:35
-#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr "购买比特币"
@@ -520,7 +481,7 @@ msgid "Cannot Create Wallet"
msgstr "不能创建钱包"
#: src/js/services/profileService.js:442
-msgid "Cannot join the same wallet more than once"
+msgid "Cannot join the same wallet more that once"
msgstr "无法重复加入同一个钱包"
#: www/views/includes/bitpayCardsCard.html:2
@@ -558,16 +519,16 @@ msgstr "清空缓存"
#: src/js/controllers/confirm.js:373
#: src/js/controllers/modals/txpDetails.js:49
msgid "Click to accept"
-msgstr "点击这里接受"
+msgstr "在此點擊以接受"
#: src/js/controllers/confirm.js:367
msgid "Click to pay"
-msgstr "点击这里支付"
+msgstr "在此點擊以支付"
#: src/js/controllers/confirm.js:379
#: src/js/controllers/modals/txpDetails.js:42
msgid "Click to send"
-msgstr "点击这里发送"
+msgstr "點擊以寄出"
#: www/views/customAmount.html:4
#: www/views/modals/mercadolibre-card-details.html:3
@@ -582,7 +543,7 @@ msgstr "关闭"
#: www/views/includes/cash.html:2
#: www/views/preferencesInformation.html:17
msgid "Coin"
-msgstr "币种"
+msgstr "電子幣种"
#: www/views/preferences.html:22
msgid "Color"
@@ -654,14 +615,10 @@ msgstr "正在连接 Glidera..."
msgid "Connection reset by peer"
msgstr "连接被对方重置"
-#: www/views/tab-send.html:85
+#: www/views/tab-send.html:45
msgid "Contacts"
msgstr "联系人"
-#: www/views/tab-send.html:86
-msgid "Saved frequently used addresses"
-msgstr "保存的常用地址"
-
#: www/views/onboarding/notifications.html:9
msgid "Continue"
msgstr "继续"
@@ -672,7 +629,7 @@ msgstr "参与翻译"
#: src/js/controllers/confirm.js:130
msgid "Copay only supports Bitcoin Cash using new version numbers addresses"
-msgstr "Copay只支持新版本的比特币现金地址"
+msgstr "本公司Copay只支持用新版本數字地址的小比特幣"
#: src/js/services/bwcError.js:62
msgid "Copayer already in this wallet"
@@ -696,7 +653,6 @@ msgstr "Copayer {{$index}}"
#: src/js/controllers/copayers.js:79
#: src/js/controllers/export.js:193
-#: src/js/controllers/confirm.js:41
#: www/views/includes/copyToClipboard.html:4
msgid "Copied to clipboard"
msgstr "已复制到剪贴板"
@@ -753,7 +709,7 @@ msgstr "不能创建发票"
#: src/js/controllers/buyMercadoLibre.js:164
#: src/js/controllers/topup.js:142
msgid "Could not create transaction"
-msgstr "无法创建交易"
+msgstr "无法创建交易记录"
#: src/js/services/profileService.js:350
msgid "Could not create using the specified extended private key"
@@ -777,7 +733,7 @@ msgstr "无法删除支付提议"
#: src/js/controllers/cashScan.js:117
msgid "Could not duplicate"
-msgstr "无法复制"
+msgstr "無法复制"
#: src/js/services/feeService.js:73
msgid "Could not get dynamic fee"
@@ -863,7 +819,7 @@ msgstr "创建自己的免费钱包"
#: www/views/onboarding/tour.html:51
#: www/views/tab-home.html:75
-#: www/views/tab-send.html:75
+#: www/views/tab-send.html:36
msgid "Create bitcoin wallet"
msgstr "创建比特币的钱包"
@@ -962,7 +918,7 @@ msgstr "详情"
#: src/js/controllers/tab-settings.js:65
#: www/views/tab-settings.html:50
msgid "Disabled"
-msgstr "禁用"
+msgstr "已经禁用"
#: www/views/includes/backupNeededPopup.html:10
#: www/views/onboarding/backupRequest.html:12
@@ -984,11 +940,11 @@ msgstr "下载"
#: www/views/cashScan.html:37
msgid "Duplicate for BCH"
-msgstr "复制 BCH"
+msgstr "為小比特幣复制"
#: src/js/services/onGoingProcess.js:49
msgid "Duplicating wallet..."
-msgstr "正在复制钱包……"
+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."
@@ -1017,7 +973,7 @@ msgstr "已达到空地址限制。无法生成新的地址。"
#: www/views/preferencesCash.html:17
msgid "Enable Bitcoin Cash wallet creation and operation within the App."
-msgstr "在应用内启用 Bitcoin Cash 创建和操作。"
+msgstr "能在本應用程序中創建和啟用小比特幣錢包"
#: www/views/tab-scan.html:19
msgid "Enable camera access in your device settings to get started."
@@ -1031,17 +987,13 @@ msgstr "启用电子邮件通知"
msgid "Enable push notifications"
msgstr "启用推式通知"
-#: www/views/preferencesNotifications.html:33
-msgid "Enable sound"
-msgstr "启用声音"
-
#: www/views/tab-scan.html:18
msgid "Enable the camera to get started."
msgstr "使该摄像机开始。"
#: www/views/tab-settings.html:49
msgid "Enabled"
-msgstr "已启用"
+msgstr "巳啟用"
#: src/js/services/walletService.js:1047
#: src/js/services/walletService.js:1062
@@ -1316,7 +1268,6 @@ msgstr "供审计目的"
#: www/views/modals/txp-details.html:74
#: www/views/topup.html:34
#: www/views/tx-details.html:52
-#: www/views/review.html:22
msgid "From"
msgstr "来自"
@@ -1342,7 +1293,7 @@ msgstr "找到资金"
#: www/views/topup.html:49
msgid "Funds to be added"
-msgstr "充值金额"
+msgstr "要添加的资金"
#: www/views/paperWallet.html:51
msgid "Funds transferred"
@@ -1350,7 +1301,7 @@ msgstr "资金转移"
#: www/views/topup.html:103
msgid "Funds were added to debit card"
-msgstr "提现到借记卡成功"
+msgstr "資金已添加到借寄卡"
#: www/views/paperWallet.html:22
msgid "Funds will be transferred to"
@@ -1377,6 +1328,10 @@ msgid "Get news and updates from BitPay"
msgstr "从 BitPay 获取新闻和更新"
#: www/views/onboarding/welcome.html:8
+msgctxt "button"
+msgid "Get started"
+msgstr "入门"
+
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "马上体验"
@@ -1392,7 +1347,7 @@ msgstr "正在获取收费水平..."
#: www/views/buyAmazon.html:43
#: www/views/buyMercadoLibre.html:42
msgid "Gift Card"
-msgstr "礼品卡"
+msgstr ""
#: www/views/modals/mercadolibre-card-details.html:30
#: www/views/modals/mercadolibre-card-details.html:35
@@ -1405,7 +1360,7 @@ msgstr "礼品卡过期"
#: www/views/buyAmazon.html:111
msgid "Gift card generated and ready to use."
-msgstr "礼品卡已生成,可以使用了。"
+msgstr "礼品卡生成并准备使用。"
#: src/js/controllers/bitpayCard.js:114
#: src/js/controllers/bitpayCard.js:124
@@ -1420,7 +1375,7 @@ msgstr "礼品卡已生成,可以使用了。"
#: src/js/controllers/tx-details.js:193
#: src/js/controllers/tx-details.js:56
msgid "Go Back"
-msgstr "返回\t#"
+msgstr "返回 #"
#: src/js/controllers/confirm.js:131
#: src/js/controllers/onboarding/backupRequest.js:20
@@ -1451,7 +1406,7 @@ msgstr "硬件钱包"
#: src/js/controllers/create.js:180
#: src/js/controllers/join.js:145
msgid "Hardware wallets are not yet supported with Bitcoin Cash"
-msgstr "比特币现金钱包暂时不支持硬件钱包"
+msgstr "硬體錢包不支持小比特幣"
#: www/views/tab-settings.html:20
msgid "Help & Support"
@@ -1460,7 +1415,7 @@ msgstr "帮助与支持"
#: src/js/controllers/bitpayCard.js:112
#: src/js/controllers/tab-settings.js:51
msgid "Help and support information is available at the website."
-msgstr "已在网站上提供帮助和支持"
+msgstr "此網站提供幫助及支援資訊"
#: www/views/addresses.html:25
msgid "Hide"
@@ -1543,7 +1498,7 @@ 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 "如果启用,与此钱包相关的所有敏感信息(私钥、回复短语)和操作(消费、导出)都将受到保护。"
+msgstr "如果启用,将保护所有的敏感信息(私人密钥和恢复短语) 和与这个钱包关联的操作 (支出和出口)."
#: www/views/advancedSettings.html:23
msgid "If enabled, the Recent Transactions card - a list of transactions occuring across all wallets - will appear in the Home tab."
@@ -1563,7 +1518,7 @@ 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 "如果您截一张屏幕截图,您的备份可能会被其他应用程序浏览。您可以用实体纸和笔来安全地备份。"
+msgstr "如果你拿一张截图,您的备份可能会被其他应用程序。您可以安全备份与物理纸和一支钢笔。"
#: www/views/tab-import-hardware.html:42
#: www/views/tab-import-phrase.html:80
@@ -1593,7 +1548,7 @@ msgstr "为了验证您的钱包的备份,请键入您的密码。"
#: www/views/mercadoLibreCards.html:24
#: www/views/modals/mercadolibre-card-details.html:29
msgid "Inactive"
-msgstr "禁用"
+msgstr "处于非活动状态"
#: www/views/includes/walletItem.html:9
#: www/views/includes/walletList.html:6
@@ -1623,7 +1578,7 @@ msgstr "网络地址不正确"
#: src/js/controllers/confirm.js:306
#: src/js/services/bwcError.js:44
msgid "Insufficient confirmed funds"
-msgstr "确认的资金不足"
+msgstr "资金不足"
#: src/js/controllers/topup.js:165
#: src/js/controllers/topup.js:177
@@ -1633,7 +1588,7 @@ msgstr "费用的资金不足"
#: www/views/tab-settings.html:123
msgid "Integrations"
-msgstr "积分"
+msgstr ""
#: www/views/includes/walletHistory.html:49
msgid "Invalid"
@@ -1733,7 +1688,7 @@ msgstr "上个月"
#: www/views/preferencesCash.html:18
#: www/views/tx-details.html:94
msgid "Learn more"
-msgstr "了解更多"
+msgstr "更多資訊"
#: www/views/backup.html:43
msgid "Let's verify your backup phrase."
@@ -1754,7 +1709,7 @@ msgstr "锁定应用"
#: src/js/controllers/lockSetup.js:23
msgid "Lock by Fingerprint"
-msgstr "通过指纹锁定"
+msgstr "通过指纹挂起应用。"
#: src/js/controllers/lockSetup.js:14
msgid "Lock by PIN"
@@ -1818,7 +1773,7 @@ msgstr "梅尔卡多里弗巴西礼品卡"
#: src/js/controllers/buyMercadoLibre.js:98
msgid "Mercadolibre Gift Card Service is not available at this moment. Please try back later."
-msgstr "Mercadolibre 礼品卡服务暂时不可用,请稍后再试。"
+msgstr "馬卡杜勒比禮品卡服務現時未能使用,請稍後再試"
#: www/views/modals/txp-details.html:131
msgid "Merchant Message"
@@ -1828,7 +1783,7 @@ msgstr "商人的消息"
#: www/views/buyMercadoLibre.html:54
#: www/views/topup.html:63
msgid "Miner Fee"
-msgstr "矿工费用"
+msgstr "礦工費用"
#: src/js/services/bwcError.js:134
msgid "Missing parameter"
@@ -1871,7 +1826,7 @@ msgstr "名称"
#: www/views/buyMercadoLibre.html:48
#: www/views/topup.html:56
msgid "Network Cost"
-msgstr "网络手续费"
+msgstr "網路支援成本"
#: src/js/services/bwcError.js:47
msgid "Network error"
@@ -1900,7 +1855,7 @@ msgstr "没钱包"
#: src/js/controllers/buyAmazon.js:115
#: src/js/controllers/buyMercadoLibre.js:115
msgid "No access key defined"
-msgstr "授权密钥未定义"
+msgstr "没有定义的访问键"
#: www/views/onboarding/backupRequest.html:5
msgid "No backup, no bitcoin."
@@ -2048,7 +2003,7 @@ msgstr "好的"
#: www/views/modals/tx-status.html:36
#: www/views/modals/tx-status.html:46
msgid "OKAY"
-msgstr "确定"
+msgstr "OKAY"
#: www/views/modals/terms.html:15
msgid "Official English Disclaimer"
@@ -2090,7 +2045,7 @@ msgstr "打开 GitHub 项目"
#: src/js/controllers/bitpayCard.js:123
#: src/js/controllers/tx-details.js:192
msgid "Open Explorer"
-msgstr "打开浏览器"
+msgstr "开放的洞察力"
#: www/views/tab-scan.html:22
msgid "Open Settings"
@@ -2106,7 +2061,7 @@ msgstr "打开网站"
#: src/js/controllers/preferencesCash.js:32
msgid "Open bitcoincash.org?"
-msgstr "打开 bitcoincash.org?"
+msgstr "打開小比特幣網址bitcoincash.org?"
#: src/js/controllers/cashScan.js:18
msgid "Open the recovery tool."
@@ -2200,10 +2155,6 @@ msgstr "支付被拒绝"
msgid "Payment Sent"
msgstr "支付已发送"
-#: www/views/includes/slideToAcceptSuccess.html:12
-msgid "Share this transaction"
-msgstr "分享此交易"
-
#: www/views/modals/txp-details.html:32
msgid "Payment accepted, but not yet broadcasted"
msgstr "支付已被接受,但尚未广播"
@@ -2221,8 +2172,8 @@ msgid "Payment details"
msgstr "支付明细"
#: www/views/modals/paypro.html:6
-msgid "Payment Request"
-msgstr "付款请求"
+msgid "Payment request"
+msgstr "支付请求"
#: www/views/mercadoLibreCards.html:22
#: www/views/modals/mercadolibre-card-details.html:39
@@ -2552,7 +2503,7 @@ msgstr "请扫描你的指纹"
#: www/views/preferencesCash.html:23
msgid "Scan your wallets for Bitcoin Cash"
-msgstr "扫描您的 Bitcoin Cash 钱包"
+msgstr "掃描你的錢包以存取小比特幣"
#: src/js/services/onGoingProcess.js:30
msgid "Scanning Wallet funds..."
@@ -2574,14 +2525,6 @@ msgstr "搜索交易"
msgid "Search or enter bitcoin address"
msgstr "搜索或输入比特币地址"
-#: src/js/controllers/tab-send.js:28
-msgid "Clipboard"
-msgstr "剪贴板"
-
-#: src/js/controllers/tab-send.js:29
-msgid "Your Clipboard is empty"
-msgstr "您的剪贴板为空"
-
#: www/views/modals/search.html:16
msgid "Search transactions"
msgstr "搜索交易"
@@ -2640,68 +2583,9 @@ msgid "Send by email"
msgstr "通过电邮发送"
#: src/js/controllers/confirm.js:177
-#: src/js/controllers/tab-send.js:94
msgid "Send from"
msgstr "从发送"
-#: src/js/controllers/tab-send.js:77
-msgid "Send to"
-msgstr "发送到"
-
-#: www/views/tab-send.html:20
-msgid "Paste Clipboard"
-msgstr "粘贴剪贴板"
-
-#: www/views/tab-send.html:21
-msgid "Paste Address"
-msgstr "粘贴地址"
-
-#: www/views/tab-send.html:27
-msgid "Transfer between wallets"
-msgstr "在钱包之间转账"
-
-#: www/views/tab-send.html:35
-msgid "Scan QR Code"
-msgstr "扫描二维码"
-
-#: www/views/tab-send.html:46
-msgid "Send Bitcoin faster!"
-msgstr "更快地发送比特币!"
-
-#: www/views/tab-send.html:50
-msgid "Save frequently used addresses and send them Bitcoin in just one tap"
-msgstr "保存常用地址,只需点击一下即可将比特币发送到这些地址"
-
-#: www/views/tab-send.html:55
-msgid "Add your first contact"
-msgstr "添加您的第一个联系人"
-
-#: www/views/tab-send.html:65
-msgid "Your Bitcoin wallet is empty"
-msgstr "您的比特币钱包为空"
-
-#: www/views/tab-send.html:69
-msgid "To get started, buy Bitcoin Cash (BCH) or Bitcoin Core (BTC), or share your address."
-msgstr "首先,购买 Bitcoin Cash (BCH) 或 Bitcoin Core (BTC),或者共享您的地址。"
-
-#: www/views/tab-send.html:70
-msgid "You can receive bitcoin from any wallet or service."
-msgstr "您可以从任何钱包或服务接收比特币。"
-
-#: www/views/tab-send.html:72
-#: www/views/shapeshift.html:23
-#: www/views/tab-send.html:33
-msgid "To get started, you'll need to create a bitcoin wallet and get some bitcoin."
-msgstr "若要开始,您将需要创建一个比特币的钱包,并获得一些比特币。"
-
-#: www/views/tab-send.html:74
-msgid "Buy Bitcoin now"
-msgstr "立即购买比特币"
-
-#: www/views/tab-send.html:76
-msgid "Show my address"
-msgstr "显示我的地址"
-
#: www/views/includes/itemSelector.html:8
msgid "Send max amount"
msgstr "发送最大数量"
@@ -2918,21 +2802,16 @@ msgstr "超级经济"
#: www/views/preferencesCash.html:11
msgid "Support Bitcoin Cash"
-msgstr "支持 Bitcoin Cash"
+msgstr "支持小比特幣"
#: www/views/paperWallet.html:7
msgid "Sweep"
msgstr "扫描"
#: www/views/includes/incomingDataMenu.html:89
-msgctxt "List item"
-msgid "Sweep paper wallet"
-msgstr "清空纸钱包"
-
#: www/views/paperWallet.html:3
-msgctxt "Page title"
-msgid "Sweep Paper Wallet"
-msgstr "清空纸钱包"
+msgid "Sweep paper wallet"
+msgstr "Sweep 纸钱包"
#: src/js/services/onGoingProcess.js:33
msgid "Sweeping Wallet..."
@@ -2973,7 +2852,7 @@ msgstr "使用条款"
#: www/views/tab-create-personal.html:118
#: www/views/tab-import-phrase.html:68
msgid "Testnet"
-msgstr "测试网"
+msgstr "Testnet"
#: www/views/includes/incomingDataMenu.html:61
msgid "Text"
@@ -3100,14 +2979,6 @@ msgstr "此应用程序商店你比特币与尖端的安全。"
msgid "This bitcoin payment request has expired."
msgstr "这比特币付款请求已过期。"
-#: www/views/review.html:55
-msgid "Payment expires:"
-msgstr "付款到期:"
-
-#: www/views/review.html:56
-msgid "Payment request has expired"
-msgstr "付款请求已过期"
-
#: www/views/join.html:133
#: www/views/tab-create-personal.html:103
#: www/views/tab-create-shared.html:132
@@ -3149,6 +3020,10 @@ msgstr "发送到"
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}}"
@@ -3161,26 +3036,6 @@ msgstr "在进展充值..."
msgid "Top up {{amountStr}} to debit card ({{cardLastNumber}})"
msgstr "充值 {{amountStr}},记入借方卡 ({{cardLastNumber}})"
-#: www/views/shapeshift.html:30
-msgid "Start ShapeShift"
-msgstr "开始 ShapeShift"
-
-#: www/views/shapeshift.html:30
-msgid "Exchange your BTC to BCH in minutes."
-msgstr "在数分钟内将您的 BTC 兑换为 BCH。"
-
-#: www/views/shapeshift.html:30
-msgid "To start the process you need to add funds to your wallet."
-msgstr "要开始兑换,您需要先向钱包中充入资金。"
-
-#: www/views/shapeshift.html:30
-msgid "The process is fast and you will receive the exchanged amount in your wallet."
-msgstr "兑换操作非常快,您将在自己的钱包中收到兑换后的金额。"
-
-#: www/views/shapeshift.html:34
-msgid "This service is provided by the third-party ShapeShift, who will charge a small fee for the service. The fee will be shown before you start the transaction."
-msgstr "此服务由第三方 ShapeShift 提供,他们将收取少量服务费。所需费用将在您开始交易之前显示。"
-
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
#: www/views/modals/wallet-balance.html:23
@@ -3337,7 +3192,7 @@ msgstr "查看服务条款"
#: src/js/controllers/bitpayCard.js:122
#: src/js/controllers/tx-details.js:191
msgid "View Transaction on Explorer.Bitcoin.com"
-msgstr "在 Explorer.Bitcoin.com 上查看交易"
+msgstr "查看交易记录的洞察"
#: src/js/controllers/tab-home.js:148
msgid "View Update"
@@ -3772,172 +3627,3 @@ msgstr "下载的 {{updatingTxHistoryProgress}} 交易"
#: www/views/includes/walletInfo.html:18
msgid "{{wallet.m}}-of-{{wallet.n}}"
msgstr "{{wallet.m}}{{wallet.n}}"
-
-#: src/js/services/shapeshiftService.js:8
-msgid "Shapeshift"
-msgstr "Shapeshift"
-
-#: www/views/includes/community.html:3
-msgid "Community"
-msgstr "社区"
-
-#: src/js/services/communityService.js:40
-msgid "Bitcoin Cash Reddit"
-msgstr "Bitcoin Cash Reddit"
-
-#: src/js/services/communityService.js:47
-msgid "Bitcoin.com Twitter"
-msgstr "Bitcoin.com Twitter"
-
-#: www/views/includes/nextSteps.html:3
-msgid "Explore Bitcoin.com"
-msgstr "探索 Bitcoin.com"
-
-#: src/js/services/bitcoincomService.js:21
-msgid "Bitcoin Cash Games"
-msgstr "Bitcoin Cash 游戏"
-
-#: www/views/includes/community.html:29
-msgid "Share the Wallet App"
-msgstr "分享钱包应用"
-
-#: src/js/services/bitcoincomService.js:28
-msgid "News"
-msgstr "新闻"
-
-#: src/js/services/bitcoincomService.js:35
-msgid "Mining Pool"
-msgstr "矿池"
-
-#: src/js/services/bitcoincomService.js:42
-msgid "Tools"
-msgstr "工具"
-
-#: src/js/services/bitcoincomService.js:49
-msgid "Bitcoin Price Charts"
-msgstr "比特币价格图表"
-
-#: src/js/services/bitcoincomService.js:56
-msgid "Free Bitcoin Cash"
-msgstr "免费的 Bitcoin Cash"
-
-#: www/views/tab-home.html:30
-msgid "Your Bitcoin Wallets are ready!"
-msgstr "您的比特币钱包已就绪!"
-
-#: src/js/controllers/amount.js:49
-msgid "Address does not contain currency information, please make sure you are sending the correct currency."
-msgstr "地址未包含货币信息,请确保您发送的货币正确。"
-
-#: www/views/review.html:4
-msgid "Review Transaction"
-msgstr "检查交易"
-
-#: src/js/controllers/review.controller.js:36
-msgid "You are sending"
-msgstr "您将发送"
-
-#: src/js/controllers/review.controller.js:66
-msgid "You are shifting"
-msgstr "您将兑换"
-
-#: www/views/review.html:36
-msgid "To:"
-msgstr "到:"
-
-#: www/views/review.html:53
-msgid "Add personal note"
-msgstr "添加个人注释"
-
-#: www/views/review.html:87
-msgid "Suggested by merchant:"
-msgstr "商户建议:"
-
-#: src/js/controllers/review.controller.js:37
-msgid "Enter text here"
-msgstr "在此处输入文本"
-
-#: www/views/review.html:57
-msgid "Personal note:"
-msgstr "个人注释:"
-
-#: www/views/review.html:69
-msgid "Less than 1 cent"
-msgstr "少于 1 美分"
-
-#: src/js/services/incomingData.js:129
-msgid "This invoice is no longer accepting payments"
-msgstr "此发票不再接受付款"
-
-#: www/views/amount.html.js:60
-msgid "Send Maximum Amount"
-msgstr "发送最大金额"
-
-#: src/js/controllers/amount.controller.js:239
-msgid "Unknown error."
-msgstr "未知错误。"
-
-#: www/views/paperWallet.html:48
-msgid "No Bitcoin Cash wallet to transfer funds to found."
-msgstr "未找到可以转入资金的 Bitcoin Cash 钱包。"
-
-#: www/views/paperWallet.html:54
-msgid "No Bitcoin Cash found."
-msgstr "未找到 Bitcoin Cash。"
-
-#: www/views/paperWallet.html:60
-msgid "Bitcoin Core found:"
-msgstr "已找到 Bitcoin Core:"
-
-#: www/views/paperWallet.html:98
-msgid "No Bitcoin Core wallet to transfer funds to found."
-msgstr "未找到可以转入资金的 Bitcoin Core 钱包。"
-
-#: www/views/paperWallet.html:104
-msgid "No Bitcoin Core found."
-msgstr "未找到 Bitcoin Core。"
-
-#: src/js/controllers/tab-scan.js:120
-msgid "Scan Failed"
-msgstr "扫描失败"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Data not recognised."
-msgstr "数据未被识别。"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Unsupported"
-msgstr "不受支持"
-
-#: src/js/controllers/tab-scan.js:121
-msgid "Testnet is not supported."
-msgstr "不支持测试网。"
-
-#: www/views/includes/incomingDataMenu.html:81
-msgid "URL"
-msgstr "网址"
-
-#: www/views/includes/incomingDataMenu.html:90
-msgid "Open in web browser"
-msgstr "在网络浏览器中打开"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid address"
-msgstr "地址无效"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is not defined"
-msgstr "未定义金额"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is below the minimun"
-msgstr "金额低于最低金额"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Amount is above the limit"
-msgstr "金额高于限额"
-
-#: src/js/services/shapeshift.service.js.html:90
-msgid "Invalid response from Shapeshift"
-msgstr "Shapeshift 的响应无效"
-
diff --git a/package.json b/package.json
index e54e3d14d..c1f37b2e6 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"postinstall": "npm run apply:copay && echo && echo \"Repo configured for standard Copay distribution. To switch to the BitPay distribution, run 'npm run apply:bitpay'.\" && echo",
"start": "echo && echo \"Choose a distribution by running 'npm run apply:copay' or 'npm run apply:bitpay'.\" && echo",
"apply:copay": "npm i fs-extra@0.30 && cd app-template && node apply.js copay && cd .. && npm i",
- "apply:bitcoincom": "npm i fs-extra && cd app-template && node apply.js bitcoincom && npm i && cordova prepare && cd ../ && ./fix-asn1.sh",
+ "apply:bitcoincom": "npm i fs-extra && cd app-template && node apply.js bitcoincom && npm i && cordova prepare",
"apply:bitpay": "npm i fs-extra@0.30 && cd app-template && node apply.js bitpay && cd .. && npm i",
"unstage-package": "git reset package.json",
"clean-all": "git clean -dfx"
diff --git a/resources/bitcoin.com/ios/icon/AppIcon24x24@2x.png b/resources/bitcoin.com/ios/icon/AppIcon24x24@2x.png
deleted file mode 100644
index 67dddbb02..000000000
Binary files a/resources/bitcoin.com/ios/icon/AppIcon24x24@2x.png and /dev/null differ
diff --git a/resources/bitcoin.com/ios/icon/AppIcon27.5x27.5@2x.png b/resources/bitcoin.com/ios/icon/AppIcon27.5x27.5@2x.png
deleted file mode 100644
index 0033e910b..000000000
Binary files a/resources/bitcoin.com/ios/icon/AppIcon27.5x27.5@2x.png and /dev/null differ
diff --git a/resources/bitcoin.com/ios/icon/AppIcon44x44@2x.png b/resources/bitcoin.com/ios/icon/AppIcon44x44@2x.png
deleted file mode 100644
index ac78920fc..000000000
Binary files a/resources/bitcoin.com/ios/icon/AppIcon44x44@2x.png and /dev/null differ
diff --git a/resources/bitcoin.com/ios/icon/AppIcon86x86@2x.png b/resources/bitcoin.com/ios/icon/AppIcon86x86@2x.png
deleted file mode 100644
index 5a0e05b71..000000000
Binary files a/resources/bitcoin.com/ios/icon/AppIcon86x86@2x.png and /dev/null differ
diff --git a/resources/bitcoin.com/ios/icon/AppIcon98x98@2x.png b/resources/bitcoin.com/ios/icon/AppIcon98x98@2x.png
deleted file mode 100644
index a0aaf7bd7..000000000
Binary files a/resources/bitcoin.com/ios/icon/AppIcon98x98@2x.png and /dev/null differ
diff --git a/resources/bitcoin.com/ios/icon/icon-1024.png b/resources/bitcoin.com/ios/icon/icon-1024.png
deleted file mode 100644
index 2950ff8de..000000000
Binary files a/resources/bitcoin.com/ios/icon/icon-1024.png and /dev/null differ
diff --git a/resources/bitcoin.com/ios/icon/icon-20.png b/resources/bitcoin.com/ios/icon/icon-20.png
deleted file mode 100644
index 323da6465..000000000
Binary files a/resources/bitcoin.com/ios/icon/icon-20.png and /dev/null differ
diff --git a/resources/bitcoin.com/mac/pkg/app.icns b/resources/bitcoin.com/mac/pkg/app.icns
deleted file mode 100644
index 40aa3ea77..000000000
Binary files a/resources/bitcoin.com/mac/pkg/app.icns and /dev/null differ
diff --git a/resources/bitcoin.com/mac/pkg/build.cfg b/resources/bitcoin.com/mac/pkg/build.cfg
deleted file mode 100644
index 3594a2688..000000000
--- a/resources/bitcoin.com/mac/pkg/build.cfg
+++ /dev/null
@@ -1,32 +0,0 @@
-[Sign]
-## [REQUIRED] Your Application Certificate Identity
-ApplicationIdentity = 3rd Party Mac Developer Application: Saint Bitts LLC (299HJ3G3BP)
-## [OPTIONAL] Parent entitlements file
-ParentEntitlements = entitlements-parent.plist
-## [OPTIONAL] Child entitlements file
-ChildEntitlements = entitlements-child.plist
-## [OPTIONAL] Sandbox. Default: Yes
-Sandbox = Yes
-
-[Package]
-## [REQUIRED for --pkg] Your Installer Certificate Identity
-InstallerIdentity = 3rd Party Mac Developer Installer: Saint Bitts LLC (299HJ3G3BP)
-## [OPTIONAL for --pkg] Installation path
-InstallPath = /Applications
-
-[Info.plist]
-## [OPTIONAL] Your app bundle identifier
-CFBundleIdentifier = com.bitcoin.mwallet.mac
-## [REQUIRED] Team ID obtained from Apple Developer -> Membership -> Team ID
-NWTeamID = 299HJ3G3BP
-## Properties of Info.plist will be overwritten in this section.
-
-[Resources]
-## [OPTIONAL] Your custom icon file
-Icon = ../resources/bitcoin.com/mac/pkg/app.icns
-## [OPTIONAL] Locales
-## If Locales is not set, all current locales are preserved.
-## If comma separated locale list (e.g. en,fr,zh_CN) is given, you should have
-## additional [Locale locale_name] section for each locale containing localized strings.
-## Locales not in the list will be removed.
-Locales = en
\ No newline at end of file
diff --git a/resources/bitcoin.com/mac/pkg/build_mas.py b/resources/bitcoin.com/mac/pkg/build_mas.py
deleted file mode 100755
index 90f7ad5f0..000000000
--- a/resources/bitcoin.com/mac/pkg/build_mas.py
+++ /dev/null
@@ -1,259 +0,0 @@
-#!/usr/bin/env python
-
-import argparse
-import ConfigParser
-import shutil
-import os
-import fnmatch
-import plistlib
-import tempfile
-from datetime import datetime
-import sys
-import io
-
-bundleid = None
-verbose = False
-
-def info(msg):
- global verbose
- if verbose:
- print '[INFO] %s' % msg
-
-def error(msg):
- print '[ERROR] %s' % msg
- print '\nFailed.'
- sys.exit(1)
-
-def system(cmd):
- info(cmd)
- os.system(cmd)
-
-def check_options(config, section, required_options, msg):
- missed_options = []
-
- for option in required_options:
- if not config.has_option(section, option):
- missed_options.append(option)
-
- if len(missed_options) != 0:
- error(msg % (section, ', '.join(missed_options)))
-
-def glob(pathname, pattern, returnOnFound=False):
- matches = []
- for root, dirnames, filenames in os.walk(pathname):
- for dirname in fnmatch.filter(dirnames, pattern):
- if returnOnFound:
- return os.path.join(root, dirname)
- matches.append(os.path.join(root, dirname))
- for filename in fnmatch.filter(filenames, pattern):
- if returnOnFound:
- return os.path.join(root, filename)
- matches.append(os.path.join(root, filename))
- return matches
-
-def get_bundle_id(args):
- global bundleid
- if bundleid is None:
- plist = plistlib.readPlist(os.path.join(args.output, 'Contents/Info.plist'))
- bundleid = plist['CFBundleIdentifier']
- return bundleid
-
-def get_from_info_plist(args, key, default=None):
- plist = plistlib.readPlist(os.path.join(args.output, 'Contents/Info.plist'))
- if key in plist:
- return plist[key]
- else:
- return default
-
-def patch_info_plist_file(file, replaces):
- plist = plistlib.readPlist(file)
- for (key, val) in replaces:
- plist[key] = val
- plistlib.writePlist(plist, file)
-
-def generate_infoplist_strings_file(file, items):
- with io.open(file, 'w', encoding='utf-16') as fd:
- for item in items:
- fd.write(unicode('%s = "%s";\n' % item, 'utf-8'))
-
-def read_config(args):
- print '\nParsing config file %s' % args.config_file
- if not os.path.isfile(args.config_file):
- error('%s does not exist' % args.config_file)
- config = ConfigParser.SafeConfigParser()
- config.optionxform = str # set to str to prevent transforming into lower cases
- config.read(args.config_file)
- check_options(config, 'Sign', ['ApplicationIdentity'], 'Missed options in [%s]: %s')
- if args.pkg:
- check_options(config, 'Package', ['InstallerIdentity'], 'Missed options for --pkg in [%s]: %s')
- return config
-
-def copy_to_output(args):
- print '\nCopying %s to %s' % (args.input, args.output)
- shutil.rmtree(args.output, ignore_errors=True)
- shutil.copytree(args.input, args.output, symlinks=True) # symblic links are required
-
-def patch_info_plist(config, args):
- print '\nPatching Info.plist files'
-
- replaces = []
- for (key, val) in config.items('Info.plist'):
- replaces.append((key, val))
-
- file = os.path.join(args.output, 'Contents/Info.plist')
- info(file)
- patch_info_plist_file(file, replaces)
-
- info_plist_files = glob(os.path.join(args.output, 'Contents/Versions'), 'Info.plist')
- for file in info_plist_files:
- if 'nwjs Framework' in file:
- tmp_replaces = [('CFBundleIdentifier', '%s.framework' % get_bundle_id(args))]
- elif 'nwjs Helper' in file:
- tmp_replaces = [('CFBundleIdentifier', '%s.helper' % get_bundle_id(args))]
- else:
- error('Cannot patch unknown Info.plist %s' % file)
- info(file)
- patch_info_plist_file(file, tmp_replaces)
-
-def patch_locales(config, args):
- print '\nPatching locales'
- locales = config.get('Resources', 'Locales').split(',')
- removed_locales = []
- generated_locales = []
- for infoplist_strings_file in glob(os.path.join(args.output, 'Contents/Resources'), 'InfoPlist.strings'):
- locale_dir = os.path.dirname(infoplist_strings_file)
- (locale, _) = os.path.splitext(os.path.basename(locale_dir))
- if locale not in locales:
- removed_locales.append(locale)
- shutil.rmtree(locale_dir)
- elif config.has_section('Locale %s' % locale):
- generated_locales.append(locale)
- generate_infoplist_strings_file(infoplist_strings_file, config.items('Locale %s' % locale))
- else:
- error('Missing [Locale %s] section' % locale)
-
- if len(generated_locales) > 0:
- info('Generated locales for %s' % ', '.join(generated_locales))
- if len(removed_locales) > 0:
- info('Removed locales for %s' % ', '.join(removed_locales))
-
- removed_paks = []
- for local_pak in glob(os.path.join(args.output, 'Contents/Versions'), 'locale.pak'):
- locale_dir = os.path.dirname(local_pak)
- (locale, _) = os.path.splitext(os.path.basename(locale_dir))
- if locale != 'en' and locale not in locales:
- removed_paks.append(locale)
- shutil.rmtree(locale_dir)
-
- if len(removed_paks) > 0:
- info('Removed .pak files for %s' % ', '.join(removed_locales))
-
-def patch_icon(config, args):
- plist = plistlib.readPlist(os.path.join(args.output, 'Contents/Info.plist'))
- icon = os.path.join(os.path.dirname(args.config_file), config.get('Resources', 'Icon'))
- dest_icon = os.path.join(args.output, 'Contents/Resources/%s' % plist['CFBundleIconFile'])
- info('Copying icon from %s to %s' % (icon, dest_icon))
- shutil.copy2(icon, dest_icon)
-
-def codesign_app(config, args):
- print '\nCodesigning'
-
- bundleid = get_bundle_id(args)
-
- identity = config.get('Sign', 'ApplicationIdentity')
- sandbox = True
- if config.has_option('Sign', 'Sandbox'):
- sandbox = config.getboolean('Sign', 'Sandbox')
-
- ## sign child frameworks and helpers
- (_, tmp_child_entitlements) = tempfile.mkstemp()
- if config.has_option('Sign', 'ChildEntitlements'):
- child = config.get('Sign', 'ChildEntitlements')
- child_entitlements = plistlib.readPlist(child)
- else:
- child_entitlements = {
- 'com.apple.security.app-sandbox' : sandbox,
- 'com.apple.security.inherit' : True
- }
-
- plistlib.writePlist(child_entitlements, tmp_child_entitlements)
- info('Child entitlements: %s' % tmp_child_entitlements)
-
- libffmpeg = glob(os.path.join(args.output, 'Contents/Versions/55.0.2883.87/nwjs Framework.framework/Versions/A'), 'libffmpeg.dylib', returnOnFound=True)
- system('codesign --deep --force --verbose --verify --sign "%s" --entitlements %s --deep "%s"' % (identity, tmp_child_entitlements, libffmpeg))
- libnode = glob(os.path.join(args.output, 'Contents/Versions/55.0.2883.87/nwjs Framework.framework/Versions/A'), 'libnode.dylib', returnOnFound=True)
- system('codesign --deep --force --verbose --verify --sign "%s" --entitlements %s --deep "%s"' % (identity, tmp_child_entitlements, libnode))
-
- helperApp = glob(args.output, 'nwjs Helper.app', returnOnFound=True)
- system('codesign --deep --force --verbose --verify --sign "%s" --entitlements %s --deep "%s"' % (identity, tmp_child_entitlements, helperApp))
- framework = glob(args.output, 'nwjs Framework.framework', returnOnFound=True)
- system('codesign --deep --force --verbose --verify --sign "%s" --entitlements %s --deep "%s"' % (identity, tmp_child_entitlements, framework))
-
- ## sign parent app
- (_, tmp_parent_entitlements) = tempfile.mkstemp()
- if config.has_option('Sign', 'ParentEntitlements'):
- parent = config.get('Sign', 'ParentEntitlements')
- parent_entitlements = plistlib.readPlist(parent)
- else:
- parent_entitlements = {}
- teamid = get_from_info_plist(args, 'NWTeamID', default=None)
- if teamid is None:
- groupid = bundleid
- else:
- groupid = '%s.%s' % (teamid, bundleid)
- parent_entitlements['com.apple.security.app-sandbox'] = sandbox
- parent_entitlements['com.apple.security.application-groups'] = [groupid]
- plistlib.writePlist(parent_entitlements, tmp_parent_entitlements)
-
- info('Parent entitlements: %s' % tmp_parent_entitlements)
- system('codesign -f --verbose -s "%s" --entitlements %s --deep "%s"' % (identity, tmp_parent_entitlements, args.output))
-
-def productbuild(config, args):
- print '\nRunning productbuild'
- installer_identity = config.get('Package', 'InstallerIdentity')
- if config.has_option('Package', 'InstallPath'):
- install_path = config.get('Package', 'InstallPath')
- else:
- install_path = '/Applications'
- system('productbuild --component "%s" "%s" --sign "%s" "%s"' % (args.output, install_path, installer_identity, args.pkg))
-
-def main():
- parser = argparse.ArgumentParser(description='Signing tool for NW.js app')
- parser.add_argument('-C', '--config-file', default='build.cfg', help='config file. (default: build.cfg)')
- parser.add_argument('-I', '--input', default='nwjs.app', help='path to input app. (default: nwjs.app)')
- parser.add_argument('-O', '--output', default='nwjs_output.app', help='path to output app. (default: nwjs_output.app)')
- parser.add_argument('-S', '--skip-patching', default=False, help='run codesign without patching the app. (default: False)', action='store_true')
- parser.add_argument('-P', '--pkg', default=None, help='run productbuild to generate .pkg after codesign. (default: None)')
- parser.add_argument('-V', '--verbose', default=False, help='display detailed information. (default: False)', action='store_true')
- args = parser.parse_args()
-
- global verbose
- verbose = args.verbose
-
- # read config file
- config = read_config(args)
-
- # make a copy
- copy_to_output(args)
-
- if not args.skip_patching:
- # patch Info.plist
- patch_info_plist(config, args)
-
- # process resources & locales
- if config.has_section('Resources'):
- if config.has_option('Resources', 'Locales'):
- patch_locales(config, args)
- if config.has_option('Resources', 'Icon'):
- patch_icon(config, args)
-
- # codesign
- codesign_app(config, args)
-
- if args.pkg:
- productbuild(config, args)
-
- print '\nDone.'
-
-if __name__ == "__main__":
- main()
diff --git a/resources/bitcoin.com/mac/pkg/entitlements-child.plist b/resources/bitcoin.com/mac/pkg/entitlements-child.plist
deleted file mode 100644
index 635e25aac..000000000
--- a/resources/bitcoin.com/mac/pkg/entitlements-child.plist
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- com.apple.security.app-sandbox
-
- com.apple.security.inherit
-
-
-
\ No newline at end of file
diff --git a/resources/bitcoin.com/mac/pkg/entitlements-parent.plist b/resources/bitcoin.com/mac/pkg/entitlements-parent.plist
deleted file mode 100644
index b39edb569..000000000
--- a/resources/bitcoin.com/mac/pkg/entitlements-parent.plist
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- com.apple.security.app-sandbox
-
- com.apple.security.application-groups
-
- 299HJ3G3BP.com.bitcoin.mwallet.mac
-
- com.apple.security.files.user-selected.read-only
-
- com.apple.security.network.client
-
- com.apple.security.device.camera
-
-
-
diff --git a/src/android/build-extras.gradle b/src/android/build-extras.gradle
index e7dd50572..ff317a4df 100644
--- a/src/android/build-extras.gradle
+++ b/src/android/build-extras.gradle
@@ -1,25 +1,20 @@
-ext {
- ANDROID_SUPPORT_V4_VERSION = '26.1.0'
-}
-
configurations.all {
- resolutionStrategy {
- force "com.android.support:support-v4:26.1.0"
- force "com.google.android.gms:play-services-auth:11.8.0"
- force "com.google.android.gms:play-services-identity:11.8.0"
- force "com.google.android.gms:play-services-ads:11.8.0"
- force "com.google.android.gms:play-services-base:11.8.0"
- force "com.google.android.gms:play-services-gcm:11.8.0"
- force "com.google.android.gms:play-services-analytics:11.8.0"
- force "com.google.android.gms:play-services-location:11.8.0"
- force "com.google.android.gms:play-services-basement:11.8.0"
- force "com.google.android.gms:play-services-tagmanager:11.8.0"
- force 'com.google.firebase:firebase-core:11.8.0'
- force 'com.google.firebase:firebase-crash:11.8.0'
- force 'com.google.firebase:firebase-auth:11.8.0'
- force 'com.google.firebase:firebase-common:11.8.0'
- force 'com.google.firebase:firebase-config:11.8.0'
- force 'com.google.firebase:firebase-perf:11.8.0'
- force 'com.google.firebase:firebase-messaging:11.8.0'
- }
+ resolutionStrategy {
+ force "com.google.android.gms:play-services-auth:11.8.0"
+ force "com.google.android.gms:play-services-identity:11.8.0"
+ force "com.google.android.gms:play-services-ads:11.8.0"
+ force "com.google.android.gms:play-services-base:11.8.0"
+ force "com.google.android.gms:play-services-gcm:11.8.0"
+ force "com.google.android.gms:play-services-analytics:11.8.0"
+ force "com.google.android.gms:play-services-location:11.8.0"
+ force "com.google.android.gms:play-services-basement:11.8.0"
+ force "com.google.android.gms:play-services-tagmanager:11.8.0"
+ force 'com.google.firebase:firebase-core:11.8.0'
+ force 'com.google.firebase:firebase-crash:11.8.0'
+ force 'com.google.firebase:firebase-auth:11.8.0'
+ force 'com.google.firebase:firebase-common:11.8.0'
+ force 'com.google.firebase:firebase-config:11.8.0'
+ force 'com.google.firebase:firebase-perf:11.8.0'
+ force 'com.google.firebase:firebase-messaging:11.8.0'
+ }
}
\ No newline at end of file
diff --git a/src/js/app.js b/src/js/app.js
index 62ff2e6f4..745ceef50 100644
--- a/src/js/app.js
+++ b/src/js/app.js
@@ -19,9 +19,7 @@ var modules = [
'copayApp.controllers',
'copayApp.directives',
'copayApp.addons',
- 'bitcoincom.controllers',
- 'bitcoincom.directives',
- 'bitcoincom.services'
+ 'bitcoincom.directives'
];
var copayApp = window.copayApp = angular.module('copayApp', modules);
@@ -31,6 +29,4 @@ angular.module('copayApp.services', []);
angular.module('copayApp.controllers', []);
angular.module('copayApp.directives', []);
angular.module('copayApp.addons', []);
-angular.module('bitcoincom.controllers', []);
angular.module('bitcoincom.directives', []);
-angular.module('bitcoincom.services', []);
diff --git a/src/js/controllers/addressbookAdd.js b/src/js/controllers/addressbookAdd.js
index ff284b234..a57839aa1 100644
--- a/src/js/controllers/addressbookAdd.js
+++ b/src/js/controllers/addressbookAdd.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.controllers').controller('addressbookAddController', function($scope, $state, $stateParams, $timeout, $ionicHistory, gettextCatalog, addressbookService, popupService, configService, bitcoinCashJsService, platformInfo) {
+angular.module('copayApp.controllers').controller('addressbookAddController', function($scope, $state, $stateParams, $timeout, $ionicHistory, gettextCatalog, addressbookService, popupService, configService, bitcoinCashJsService) {
var config = configService.getSync();
var defaults = configService.getDefaults();
@@ -21,9 +21,6 @@ angular.module('copayApp.controllers').controller('addressbookAddController', fu
$timeout(function() {
var form = addressbookForm;
if (data && form) {
- if (data.result) {
- data = data.result;
- }
data = data.replace(/^bitcoin(cash)?:/, '');
form.address.$setViewValue(data);
form.address.$isValid = true;
@@ -38,16 +35,6 @@ angular.module('copayApp.controllers').controller('addressbookAddController', fu
var translated = bitcoinCashJsService.readAddress(addressbook.address);
addressbook.address = translated.legacy;
}
-
- var channel = "ga";
- if (platformInfo.isCordova) {
- channel = "firebase";
- }
- var log = new window.BitAnalytics.LogEvent("contact_created", [{
- "coin": $scope.addressbookEntry.coin
- }], [channel]);
- window.BitAnalytics.LogEventHandlers.postEvent(log);
-
$timeout(function() {
addressbookService.add(addressbook, function(err, ab) {
if (err) {
diff --git a/src/js/controllers/addressbookView.js b/src/js/controllers/addressbookView.js
index 16df9e559..aab6fb5b4 100644
--- a/src/js/controllers/addressbookView.js
+++ b/src/js/controllers/addressbookView.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.controllers').controller('addressbookViewController', function($scope, sendFlowService, $state, $timeout, lodash, addressbookService, popupService, $ionicHistory, platformInfo, gettextCatalog, configService, bitcoinCashJsService) {
+angular.module('copayApp.controllers').controller('addressbookViewController', function($scope, $state, $timeout, lodash, addressbookService, popupService, $ionicHistory, platformInfo, gettextCatalog, configService, bitcoinCashJsService) {
var config = configService.getSync();
var defaults = configService.getDefaults();
@@ -21,14 +21,23 @@ angular.module('copayApp.controllers').controller('addressbookViewController', f
});
$scope.sendTo = function() {
- var stateParams = {
- data: $scope.addressbookEntry.address,
- toName: $scope.addressbookEntry.name,
- toEmail: $scope.addressbookEntry.email,
- coin: $scope.addressbookEntry.coin
- };
-
- sendFlowService.start(stateParams);
+ $ionicHistory.removeBackView();
+ $state.go('tabs.send');
+ $timeout(function() {
+ var to = '';
+ if ($scope.addressbookEntry.coin == 'bch') {
+ var a = 'bitcoincash:' + $scope.addressbookEntry.address;
+ to = bitcoinCashJsService.readAddress(a).legacy;
+ } else {
+ to = $scope.addressbookEntry.address;
+ }
+ $state.transitionTo('tabs.send.amount', {
+ toAddress: to,
+ toName: $scope.addressbookEntry.name,
+ toEmail: $scope.addressbookEntry.email,
+ coin: $scope.addressbookEntry.coin
+ });
+ }, 100);
};
$scope.remove = function(addressbookEntry) {
diff --git a/src/js/controllers/advancedSettings.js b/src/js/controllers/advancedSettings.js
index 42fa10855..9355dd730 100644
--- a/src/js/controllers/advancedSettings.js
+++ b/src/js/controllers/advancedSettings.js
@@ -13,6 +13,10 @@ angular.module('copayApp.controllers').controller('advancedSettingsController',
$scope.hideNextSteps = {
value: config.hideNextSteps.enabled
};
+ $scope.displayBitcoinCoreEnabled = {
+ value: config.displayBitcoinCore.enabled
+ };
+
};
$scope.spendUnconfirmedChange = function() {
@@ -48,6 +52,17 @@ angular.module('copayApp.controllers').controller('advancedSettingsController',
});
};
+ $scope.displayBitcoinCoreChange = function() {
+ var opts = {
+ displayBitcoinCore: {
+ enabled: $scope.displayBitcoinCoreEnabled.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/amount.controller.js b/src/js/controllers/amount.controller.js
deleted file mode 100644
index 07f31bb3e..000000000
--- a/src/js/controllers/amount.controller.js
+++ /dev/null
@@ -1,774 +0,0 @@
-'use strict';
-
-(function(){
-
-angular
- .module('bitcoincom.controllers')
- .controller('amountController', amountController);
-
-function amountController(configService, $filter, gettextCatalog, $ionicHistory, $ionicModal, $ionicScrollDelegate, lodash, $log, nodeWebkitService, rateService, $scope, $state, $timeout, sendFlowService, shapeshiftService, txFormatService, platformInfo, ongoingProcess, popupService, profileService, walletService, $window) {
- var vm = this;
-
- // Variables
- vm.allowSend = false;
- vm.altCurrencyList = [];
- vm.alternativeAmount = '';
- vm.alternativeUnit = '';
- vm.amount = '0';
- vm.availableFunds = '';
- vm.canSendAllAvailableFunds = true;
- vm.errorMessage = '';
- // Use insufficient for logic, as when the amount is invalid, funds being
- // either sufficent or insufficient doesn't make sense.
- vm.fundsAreInsufficient = false;
- vm.globalResult = '';
- vm.isRequestingSpecificAmount = false;
- vm.listComplete = false;
- vm.lastUsedPopularList = [];
- vm.maxAmount = 0;
- vm.minAmount = 0;
- vm.sendableFunds = '';
- vm.showSendMaxButton = false;
- vm.showSendLimitMaxButton = false;
- vm.thirdParty = false;
- vm.unit = '';
-
- // Functions
- vm.changeUnit = changeUnit;
- vm.close = close;
- vm.findCurrency = findCurrency;
- vm.finish = finish;
- vm.goBack = goBack;
- vm.loadMore = loadMore;
- vm.next = next;
- vm.openPopup = openPopup;
- vm.pushDigit = pushDigit;
- vm.removeDigit = removeDigit;
- vm.save = save;
- vm.sendMax = sendMax;
-
-
- $scope.$on('$ionicView.beforeEnter', onBeforeEnter);
- $scope.$on('$ionicView.leave', onLeave);
-
- var LENGTH_EXPRESSION_LIMIT = 19;
- var LENGTH_BEFORE_COMMA_EXPRESSION_LIMIT = 8;
- var LENGTH_AFTER_COMMA_EXPRESSION_LIMIT = 8;
-
- var altCurrencyModal = null;
- var altUnitIndex = 0;
- var availableUnits = [];
- var canSendMax = true;
- var fiatCode;
- var isNW = platformInfo.isNW;
- var isAndroid = platformInfo.isAndroid;
- var isIos = platformInfo.isIOS;
- var lastUsedAltCurrencyList = [];
- var passthroughParams = {};
- var satToUnit;
- var transactionSendableAmount = {
- crypto: '',
- satoshis: null
- };
- var unitDecimals;
- var unitIndex = 0;
- var unitToSatoshi;
- var useSendMax = false;
- var walletSpendableAmount = {
- crypto: '',
- satoshis: null
- };
-
- function onLeave() {
- angular.element($window).off('keydown');
- }
-
- function onBeforeEnter(event, data) {
- if (data.direction == "back") {
- sendFlowService.state.pop();
- }
-
- initCurrencies();
-
- passthroughParams = sendFlowService.state.getClone();
- console.log('amount onBeforeEnter after back sendflow ', passthroughParams);
-
- vm.fromWalletId = passthroughParams.fromWalletId;
- vm.toWalletId = passthroughParams.toWalletId;
- vm.minAmount = parseFloat(passthroughParams.minAmount);
- vm.maxAmount = parseFloat(passthroughParams.maxAmount);
-
- vm.isRequestingSpecificAmount = !passthroughParams.fromWalletId;
- vm.showSendMaxButton = !vm.isRequestingSpecificAmount;
-
- var config = configService.getSync().wallet.settings;
- unitToSatoshi = config.unitToSatoshi;
- satToUnit = 1 / unitToSatoshi;
- unitDecimals = config.unitDecimals;
-
- setAvailableUnits();
- updateUnitUI();
-
- var reNr = /^[1234567890\.]$/;
- var reOp = /^[\*\+\-\/]$/;
-
- if (!isAndroid && !isIos) {
- angular.element($window).on('keydown', function(e) {
- if (!e.key) return;
- if (e.which === 8) { // you can add others here inside brackets.
- if (!altCurrencyModal) {
- e.preventDefault();
- vm.removeDigit();
- }
- }
-
- if (e.key.match(reNr)) {
- vm.pushDigit(e.key);
- } else if (e.key.match(reOp)) {
- pushOperator(e.key);
- } else if (e.keyCode === 86) {
- if (e.ctrlKey || e.metaKey) processClipboard();
- } else if (e.keyCode === 13) vm.finish();
-
- $timeout(function() {
- $scope.$apply();
- });
- });
- }
-
-
- resetAmount();
-
- processAmount();
-
- $timeout(function() {
- $ionicScrollDelegate.resize();
- }, 10);
-
- function setAvailableUnits() {
- var defaults = configService.getDefaults();
- var configCache = configService.getSync();
- availableUnits = [];
-
- var coinFromWallet = '';
- if (passthroughParams.fromWalletId) {
- var fromWallet = profileService.getWallet(passthroughParams.fromWalletId);
- coinFromWallet = fromWallet.coin;
- } else {
- var toWallet = profileService.getWallet(passthroughParams.toWalletId);
- coinFromWallet = toWallet.coin;
- }
-
- if (coinFromWallet === 'bch') {
- availableUnits.push({
- name: 'Bitcoin Cash',
- id: 'bch',
- shortName: (configCache.bitcoinCashAlias || defaults.bitcoinCashAlias).toUpperCase(),
- });
- };
-
- if (coinFromWallet === 'btc') {
- availableUnits.push({
- name: 'Bitcoin',
- id: 'btc',
- shortName: (configCache.bitcoinAlias || defaults.bitcoinAlias).toUpperCase(),
- });
- }
-
- unitIndex = 0;
-
-
- // currency have preference
- var fiatName;
- if (passthroughParams.currency) {
- fiatCode = passthroughParams.currency;
- altUnitIndex = unitIndex
- unitIndex = availableUnits.length;
- } else {
- fiatCode = config.alternativeIsoCode || 'USD';
- fiatName = config.alternanativeName || fiatCode;
- altUnitIndex = availableUnits.length;
- }
-
- availableUnits.push({
- name: fiatName || fiatCode,
- // TODO
- id: fiatCode,
- shortName: fiatCode,
- isFiat: true,
- });
-
- unitIndex = lodash.findIndex(availableUnits, {
- isFiat: true
- });
-
- altUnitIndex = 0;
-
- if (passthroughParams.fromWalletId) {
- var fromWallet = profileService.getWallet(passthroughParams.fromWalletId);
- updateAvailableFundsFromWallet(fromWallet);
- }
-
- if (passthroughParams.thirdParty) {
- vm.thirdParty = passthroughParams.thirdParty; // Parse stringified JSON-object
- if (vm.thirdParty) {
- initShapeshift();
- }
- }
- }
- }
-
- function goBack() {
- sendFlowService.router.goBack();
- }
-
- function initShapeshift() {
- if (vm.thirdParty.id === 'shapeshift') {
- vm.thirdParty.data = vm.thirdParty.data || {};
-
- vm.fromWallet = profileService.getWallet(vm.fromWalletId);
- vm.toWallet = profileService.getWallet(vm.toWalletId);
-
- vm.showSendMaxButton = false;
- vm.showSendLimitMaxButton = false;
- vm.canSendAllAvailableFunds = false;
-
- ongoingProcess.set('connectingShapeshift', true);
- shapeshiftService.getMarketData(vm.fromWallet.coin, vm.toWallet.coin, function onMarketData(err, data) {
- ongoingProcess.set('connectingShapeshift', false);
- if (err) {
- // Error stop here
- popupService.showAlert(gettextCatalog.getString('Shapeshift Error'), err.message, function () {
- goBack();
- });
- } else {
- vm.thirdParty.data.minAmount = vm.minAmount = parseFloat(data.minimum);
- vm.thirdParty.data.maxAmount = vm.maxAmount = parseFloat(data.maxLimit);
- setMaximumButtonFromWallet(vm.fromWallet);
- }
- });
- }
- }
-
- function paste(value) {
- vm.amount = value;
- processAmount();
- $timeout(function() {
- $scope.$apply();
- });
- }
-
- function processClipboard() {
- if (!isNW) return;
- var value = nodeWebkitService.readFromClipboard();
- if (value && evaluate(value) > 0) paste(evaluate(value));
- }
-
- function sendMax() {
- if (canSendMax) {
- useSendMax = true;
- finish();
- } else {
- var transactionSendableAmountInUnits = transactionSendableAmount.satoshis * satToUnit;
- if (vm.minAmount && transactionSendableAmountInUnits < vm.minAmount) {
- popupService.showAlert(
- gettextCatalog.getString('Insufficient funds'),
- gettextCatalog.getString('Amount below minimum allowed')
- );
- } else {
- // Need to be precise, so use crypto directly rather than fiat with exchange rate
- if (availableUnits[unitIndex].isFiat) {
- var tempIndex = altUnitIndex;
- altUnitIndex = unitIndex;
- unitIndex = tempIndex;
- }
- vm.amount = transactionSendableAmountInUnits.toFixed(LENGTH_AFTER_COMMA_EXPRESSION_LIMIT);
- useSendMax = true;
- finish();
- }
- }
- }
-
- function updateUnitUI() {
- vm.unit = availableUnits[unitIndex].shortName;
- vm.alternativeUnit = availableUnits[altUnitIndex].shortName;
-
- processAmount();
- $log.debug('Update unit coin @amount unit:' + vm.unit + " alternativeUnit:" + vm.alternativeUnit);
- }
-
- function changeUnit() {
-
- vm.amount = '0';
-
- if (!(availableUnits[unitIndex].isFiat && availableUnits.length > 2 && altUnitIndex == 0)) {
- unitIndex++;
- if (unitIndex >= availableUnits.length) unitIndex = 0;
- }
-
- if (availableUnits[unitIndex].isFiat) {
- altUnitIndex = altUnitIndex == 0 && availableUnits.length > 2 ? 1 : 0;
- } else {
- altUnitIndex = lodash.findIndex(availableUnits, {
- isFiat: true
- });
- }
-
- updateAvailableFundsStringIfNeeded();
- updateUnitUI();
- }
-
- function pushDigit(digit) {
- if (vm.amount && digit != '.') {
- var amountSplitByComma = vm.amount.split('.');
- if (amountSplitByComma.length > 1 && amountSplitByComma[1].length >= LENGTH_AFTER_COMMA_EXPRESSION_LIMIT) return;
- if (amountSplitByComma.length == 1 && amountSplitByComma[0].length >= LENGTH_BEFORE_COMMA_EXPRESSION_LIMIT) return;
- }
-
- if (vm.amount && vm.amount.length >= LENGTH_EXPRESSION_LIMIT) return;
- if (vm.amount.indexOf('.') > -1 && digit == '.') return;
- if (vm.amount == '0' && digit == '0') return;
- if (availableUnits[unitIndex].isFiat && vm.amount.indexOf('.') > -1 && vm.amount[vm.amount.indexOf('.') + 2]) return;
-
- if (vm.amount == '0' && digit != '.') {
- vm.amount = '';
- }
-
- if (vm.amount == '' && digit == '.') {
- vm.amount = '0';
- }
-
- vm.amount = (vm.amount + digit).replace('..', '.');
- processAmount();
- }
-
- function pushOperator(operator) {
- if (!vm.amount || vm.amount.length == 0) return;
- vm.amount = pushOperator(vm.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);
- }
-
- function removeDigit() {
- vm.amount = (vm.amount).toString().slice(0, -1);
- processAmount();
- }
-
- function resetAmount() {
- vm.amount = vm.alternativeAmount = vm.globalResult = '0';
- vm.allowSend = false;
- }
-
-
- function openPopup() {
- $ionicModal.fromTemplateUrl('views/modals/altCurrency.html', {
- scope: $scope
- }).then(function(modal) {
- altCurrencyModal = modal;
- altCurrencyModal.show();
- });
- }
-
- function close() {
- altCurrencyModal.remove();
- altCurrencyModal = null;
- }
-
- function processAmount() {
- var formatedValue = format(vm.amount);
- var result = evaluate(formatedValue);
-
- var amountInCrypto = 0;
-
- if (lodash.isNumber(result)) {
- vm.globalResult = isExpression(vm.amount) ? '= ' + processResult(result) : '';
-
- if (availableUnits[unitIndex].isFiat) {
-
- var a = fromFiat(result);
- if (a) {
- amountInCrypto = a;
- var amountInSatoshis = a * unitToSatoshi;
- vm.fundsAreInsufficient = !!passthroughParams.fromWalletId
- && walletSpendableAmount.satoshis !== null
- && walletSpendableAmount.satoshis < amountInSatoshis;
-
- vm.alternativeAmount = txFormatService.formatAmount(amountInSatoshis, true);
- vm.allowSend = lodash.isNumber(a)
- && a > 0
- && (!vm.minAmount || a >= vm.minAmount)
- && (!vm.maxAmount || a <= vm.maxAmount)
- && !vm.fundsAreInsufficient;
- } else {
- if (result) {
- vm.alternativeAmount = 'N/A';
- } else {
- vm.alternativeAmount = null;
- }
- vm.fundsAreInsufficient = false;
- vm.allowSend = false;
- }
- } else {
- amountInCrypto = result;
- vm.fundsAreInsufficient = passthroughParams.fromWalletId
- && walletSpendableAmount.satoshis !== null
- && walletSpendableAmount.satoshis < result * unitToSatoshi;
-
- vm.alternativeAmount = $filter('formatFiatAmount')(toFiat(result));
- vm.allowSend = lodash.isNumber(result)
- && result > 0
- && (!vm.minAmount || result >= vm.minAmount)
- && (!vm.maxAmount || result <= vm.maxAmount)
- && !vm.fundsAreInsufficient;
- }
-
- } else {
- vm.fundsAreInsufficient = false;
- }
-
- if (vm.fundsAreInsufficient) {
- vm.errorMessage = gettextCatalog.getString('Not enough available funds');
-
- } else if (amountInCrypto && vm.thirdParty && vm.thirdParty.id === 'shapeshift') {
- if (amountInCrypto < vm.minAmount) {
- vm.errorMessage = gettextCatalog.getString('Amount is below minimum');
-
- } else if (amountInCrypto > vm.maxAmount) {
- vm.errorMessage = gettextCatalog.getString('Amount is above maximum');
-
- } else {
- vm.errorMessage = '';
- }
- } else {
- vm.errorMessage = '';
- }
- }
-
- function processResult(val) {
- if (availableUnits[unitIndex].isFiat) return $filter('formatFiatAmount')(val);
- else return txFormatService.formatAmount(val.toFixed(unitDecimals) * unitToSatoshi, true);
- }
-
- function fromFiat(val) {
- return parseFloat((rateService.fromFiat(val, fiatCode, availableUnits[altUnitIndex].id) * satToUnit).toFixed(unitDecimals));
- }
-
- function toFiat(val) {
- if (!rateService.getRate(fiatCode)) return;
-
- return parseFloat((rateService.toFiat(val * unitToSatoshi, fiatCode, availableUnits[unitIndex].id)).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) {
- if (!val) return;
-
- var result = val.toString();
-
- if (isOperator(lodash.last(val))) result = result.slice(0, -1);
-
- return result.replace('x', '*');
- }
-
- function finish() {
- var unit = availableUnits[unitIndex];
- var uiAmount = evaluate(format(vm.amount));
-
- var satoshis = 0;
- if (unit.isFiat) {
- satoshis = Math.floor(fromFiat(uiAmount) * unitToSatoshi);
- } else {
- satoshis = Math.floor(uiAmount * unitToSatoshi);
- }
-
- var confirmData = {
- amount: (useSendMax && canSendMax) ? undefined : satoshis,
- displayAddress: passthroughParams.displayAddress,
- fromWalletId: passthroughParams.fromWalletId,
- sendMax: useSendMax,
- toAddress: passthroughParams.toAddress,
- toWalletId: passthroughParams.toWalletId
- };
-
- if (vm.thirdParty) {
- confirmData.thirdParty = vm.thirdParty;
- }
-
- if (!confirmData.fromWalletId) {
- $state.transitionTo('tabs.paymentRequest.confirm', confirmData);
- } else {
- sendFlowService.goNext(confirmData);
- useSendMax = false;
- }
- }
-
-
- // Currency
-
- var nextCurrencies = 10;
- var completeAlternativeList = [];
-
- var popularCurrencyList = [
- {isoCode: 'USD', order: 0},
- {isoCode: 'EUR', order: 1},
- {isoCode: 'JPY', order: 2},
- {isoCode: 'GBP', order: 3},
- {isoCode: 'AUD', order: 4},
- {isoCode: 'CAD', order: 5},
- {isoCode: 'CHF', order: 6},
- {isoCode: 'CNY', order: 7},
- {isoCode: 'KRW', order: 8},
- {isoCode: 'HKD', order: 9},
- ];
-
- function initCurrencies() {
- var unusedCurrencyList = [{
- isoCode: 'LTL'
- }, {
- isoCode: 'BTC'
- }, {
- isoCode: 'BCC'
- }, {
- isoCode: 'BCH_BTC'
- }, {
- isoCode: 'BCH'
- }];
- rateService.whenAvailable(function() {
-
- vm.listComplete = false;
-
- var idx = lodash.indexBy(unusedCurrencyList, 'isoCode');
- var idx2 = lodash.indexBy(lastUsedAltCurrencyList, 'isoCode');
- var idx3 = lodash.indexBy(popularCurrencyList, 'isoCode');
- var alternatives = rateService.listAlternatives(true);
-
- lodash.each(alternatives, function(c) {
- if (idx3[c.isoCode]) {
- idx3[c.isoCode].name = c.name;
- }
- if (!idx[c.isoCode] && !idx2[c.isoCode] && !idx3[c.isoCode]) {
- completeAlternativeList.push(c);
- }
- });
-
- vm.altCurrencyList = completeAlternativeList.slice(0, 10);
- vm.lastUsedPopularList = lodash.unique(lodash.union(lastUsedAltCurrencyList, popularCurrencyList), 'isoCode');
-
- rateService.updateRates();
-
- $timeout(function() {
- $scope.$apply();
- });
- });
- }
-
- function loadMore() {
- $timeout(function() {
- vm.altCurrencyList = completeAlternativeList.slice(0, nextCurrencies);
- nextCurrencies += 10;
- vm.listComplete = vm.altCurrencyList.length >= completeAlternativeList.length;
- $scope.$broadcast('scroll.infiniteScrollComplete');
- }, 100);
- }
-
- function next() {
- useSendMax = false;
- vm.finish();
- }
-
- function findCurrency(search) {
- if (!search) initCurrencies();
- var list = lodash.unique(lodash.union(completeAlternativeList, lodash.union(lastUsedAltCurrencyList, popularCurrencyList)), 'isoCode');
- vm.altCurrencyList = lodash.filter(list, function(item) {
- var val = item.name
- var val2 = item.isoCode;
- return lodash.includes(val.toLowerCase(), search.toLowerCase()) || lodash.includes(val2.toLowerCase(), search.toLowerCase());
- });
- $timeout(function() {
- $scope.$apply();
- });
- }
-
- function save(newAltCurrency) {
- var opts = {
- wallet: {
- settings: {
- alternativeName: newAltCurrency.name,
- alternativeIsoCode: newAltCurrency.isoCode,
- }
- }
- };
-
- configService.set(opts, function(err) {
- if (err) $log.warn(err);
- walletService.updateRemotePreferences(profileService.getWallets());
- var altUnitIndex = lodash.findIndex(availableUnits, {
- isFiat: true
- });
- availableUnits[altUnitIndex].id = newAltCurrency.isoCode;
- availableUnits[altUnitIndex].name = newAltCurrency.isoCode;
- availableUnits[altUnitIndex].shortName = newAltCurrency.isoCode;
- fiatCode = newAltCurrency.isoCode;
- updateAvailableFundsStringIfNeeded();
- updateUnitUI();
- close();
- });
- }
-
- function updateAvailableFundsStringIfNeeded() {
- if (passthroughParams.fromWalletId && walletSpendableAmount.satoshis !== null) {
- vm.availableFunds = walletSpendableAmount.crypto;
-
- if (availableUnits[unitIndex].isFiat) {
- var coin = availableUnits[altUnitIndex].id;
- txFormatService.formatAlternativeStr(coin, walletSpendableAmount.satoshis, function formatCallback(formatted){
-
- if (formatted) {
- $scope.$apply(function() {
- vm.availableFunds = formatted;
- });
- }
- });
- }
- updateMaximumButtonIfNeeded();
- }
- }
-
- function updateAvailableFundsFromWallet(wallet) {
- console.log('amount updateAvailableFundsFromWallet()');
- var availableFundsInFiat = '';
- if (wallet.status && wallet.status.isValid) {
- walletSpendableAmount.crypto = wallet.status.spendableBalanceStr;
- walletSpendableAmount.satoshis = wallet.status.spendableAmount;
- if (wallet.status.alternativeBalanceAvailable) {
- availableFundsInFiat = wallet.status.spendableBalanceAlternative + ' ' + wallet.status.alternativeIsoCode;
- } else {
- availableFundsInFiat = '';
- }
-
- } else if (wallet.cachedStatus && wallet.cachedStatus.isValid) {
-
- if (wallet.cachedStatus.alternativeBalanceAvailable) {
- availableFundsInFiat = wallet.cachedStatus.spendableBalanceAlternative + ' ' + wallet.cachedStatus.alternativeIsoCode;
- } else {
- availableFundsInFiat = '';
- }
- walletSpendableAmount.crypto = wallet.cachedStatus.spendableBalanceStr;
- walletSpendableAmount.satoshis = wallet.cachedStatus.spendableAmount;
-
- } else {
-
- walletSpendableAmount.crypto = '';
- walletSpendableAmount.satoshis = null;
- }
-
- if (availableUnits[unitIndex].isFiat) {
- vm.availableFunds = availableFundsInFiat || walletSpendableAmount.crypto;
- } else {
- vm.availableFunds = walletSpendableAmount.crypto;
- }
-
- setMaximumButtonFromWallet(wallet);
- }
-
- function updateMaximumButtonIfNeeded() {
- console.log('sendmax updateMaximumButtonIfNeeded()');
- if (vm.showSendMaxButton || vm.showSendLimitMaxButton) {
- transactionSendableAmount.fiat = '';
- vm.sendableFunds = transactionSendableAmount.crypto;
-
- if (availableUnits[unitIndex].isFiat) {
- var coin = availableUnits[altUnitIndex].id;
- txFormatService.formatAlternativeStr(coin, transactionSendableAmount.satoshis, function formatCallback(formatted){
- if (formatted) {
- $scope.$apply(function onApply() {
- vm.sendableFunds = formatted;
- });
- }
- });
- }
- }
- }
-
- function setMaximumButtonFromWallet(wallet) {
- console.log('sendmax setMaximumButtonFromWallet()');
- var minSatoshis = vm.minAmount * unitToSatoshi;
- var maxSatoshis = vm.maxAmount * unitToSatoshi;
-
- if (minSatoshis > walletSpendableAmount.satoshis) {
- console.log('sendmax Hiding max buttons as minimum is too high.');
- canSendMax = false;
- vm.showSendMaxButton = true;
- vm.showSendLimitMaxButton = false;
- transactionSendableAmount.satoshis = walletSpendableAmount.satoshis;
-
- } else if (maxSatoshis) {
- if (walletSpendableAmount.satoshis > maxSatoshis) {
- console.log('sendmax Showing max limit button as available is greater than max limit.');
- canSendMax = false;
- vm.showSendMaxButton = false;
- vm.showSendLimitMaxButton = true;
- transactionSendableAmount.satoshis = maxSatoshis;
- } else {
- console.log('sendmax Showing sendmax as all available as less than max limit.');
- // Enabling send max here is a little dangerous, if they receive funds between pressing
- // this and the calculation in the Review screen.
- canSendMax = false;
- vm.showSendMaxButton = true;
- vm.showSendLimitMaxButton = false;
- transactionSendableAmount.satoshis = walletSpendableAmount.satoshis;
- }
-
- } else {
- console.log('sendmax Showing sendmax as all available because no limits.');
- canSendMax = true;
- vm.showSendMaxButton = true;
- vm.showSendLimitMaxButton = false;
- transactionSendableAmount.satoshis = walletSpendableAmount.satoshis;
- }
-
- if (vm.showSendMaxButton || vm.showSendLimitMaxButton) {
- console.log('sendmax Setting max button text');
- transactionSendableAmount.crypto = txFormatService.formatAmountStr(wallet.coin, transactionSendableAmount.satoshis);
- vm.sendableFunds = transactionSendableAmount.crypto;
-
- if (availableUnits[unitIndex].isFiat) {
- txFormatService.formatAlternativeStr(wallet.coin, transactionSendableAmount.satoshis, function onFormat(formatted){
- if (formatted) {
- $scope.$apply(function onApply() {
- vm.sendableFunds = formatted;
- });
- }
- });
- }
- }
-
- }
-}
-})();
\ No newline at end of file
diff --git a/src/js/controllers/amount.js b/src/js/controllers/amount.js
new file mode 100644
index 000000000..2d0a5aa28
--- /dev/null
+++ b/src/js/controllers/amount.js
@@ -0,0 +1,628 @@
+'use strict';
+
+angular.module('copayApp.controllers').controller('amountController', function($scope, $filter, $timeout, $ionicModal, $ionicScrollDelegate, $ionicHistory, storageService, walletService, 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 LENGTH_BEFORE_COMMA_EXPRESSION_LIMIT = 8;
+ var LENGTH_AFTER_COMMA_EXPRESSION_LIMIT = 8;
+ var isNW = platformInfo.isNW;
+
+ var unitIndex = 0;
+ var altUnitIndex = 0;
+ var availableUnits = [];
+ var fiatCode;
+
+ var fixedUnit;
+
+ $scope.amountModel = { amount: 0 };
+
+ $scope.isChromeApp = platformInfo.isChromeApp;
+ $scope.isAndroid = platformInfo.isAndroid;
+ $scope.isIos = platformInfo.isIOS;
+
+ $scope.$on('$ionicView.leave', function() {
+ angular.element($window).off('keydown');
+ });
+
+ $scope.$on("$ionicView.beforeEnter", function(event, data) {
+
+ initCurrencies();
+
+ if (data.stateParams.shapeshiftOrderId && data.stateParams.shapeshiftOrderId.length > 0) {
+ $scope.minShapeshiftAmount = parseFloat(data.stateParams.minShapeshiftAmount);
+ $scope.maxShapeshiftAmount = parseFloat(data.stateParams.maxShapeshiftAmount);
+ $scope.shapeshiftOrderId = data.stateParams.shapeshiftOrderId;
+ $scope.fromWalletId = data.stateParams.fromWalletId;
+ }
+
+ if (data.stateParams.noPrefix) {
+ $scope.showWarningMessage = data.stateParams.noPrefix != 0;
+ if ($scope.showWarningMessage) {
+ var message = 'Address doesn\'t contain currency information, please make sure you are sending the correct currency.';
+ popupService.showAlert('', message, function() {}, 'Ok');
+ }
+ }
+
+ var config = configService.getSync().wallet.settings;
+
+ function setAvailableUnits() {
+ var defaults = configService.getDefaults();
+ var configCache = configService.getSync();
+ availableUnits = [];
+
+ var hasBCHWallets = profileService.getWallets({
+ coin: 'bch'
+ }).length;
+
+ if (hasBCHWallets) {
+ availableUnits.push({
+ name: 'Bitcoin Cash',
+ id: 'bch',
+ shortName: (configCache.bitcoinCashAlias || defaults.bitcoinCashAlias).toUpperCase(),
+ });
+ };
+
+ var hasBTCWallets = profileService.getWallets({
+ coin: 'btc'
+ }).length;
+
+ if (hasBTCWallets) {
+ availableUnits.push({
+ name: 'Bitcoin',
+ id: 'btc',
+ shortName: (configCache.bitcoinAlias || defaults.bitcoinAlias).toUpperCase(),
+ });
+ }
+
+ unitIndex = 0;
+
+ if (data.stateParams.coin) {
+ var coins = data.stateParams.coin.split(',');
+ var newAvailableUnits = [];
+
+ lodash.each(coins, function(c) {
+ var coin = lodash.find(availableUnits, {
+ id: c
+ });
+ if (!coin) {
+ $log.warn('Could not find desired coin:' + data.stateParams.coin)
+ } else {
+ newAvailableUnits.push(coin);
+ }
+ });
+
+ if (newAvailableUnits.length > 0) {
+ availableUnits = newAvailableUnits;
+ }
+ }
+
+
+ // currency have preference
+ var fiatName;
+ if (data.stateParams.currency) {
+ fiatCode = data.stateParams.currency;
+ altUnitIndex = unitIndex
+ unitIndex = availableUnits.length;
+ } else {
+ fiatCode = config.alternativeIsoCode || 'USD';
+ fiatName = config.alternanativeName || fiatCode;
+ altUnitIndex = availableUnits.length;
+ }
+
+ availableUnits.push({
+ name: fiatName || fiatCode,
+ // TODO
+ id: fiatCode,
+ shortName: fiatCode,
+ isFiat: true,
+ });
+
+ if (data.stateParams.fixedUnit) {
+ fixedUnit = true;
+ }
+
+ unitIndex = lodash.findIndex(availableUnits, {
+ isFiat: true
+ });
+
+ altUnitIndex = 0;
+ };
+
+ // Go to...
+ _id = data.stateParams.id; // Optional (BitPay Card ID or Wallet ID)
+ $scope.nextStep = data.stateParams.nextStep;
+
+ setAvailableUnits();
+ updateUnitUI();
+
+ $scope.hasMaxAmount = true;
+ if ($ionicHistory.backView().stateName == 'tabs.receive') {
+ $scope.hasMaxAmount = false;
+ }
+
+ $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.displayAddress = data.stateParams.displayAddress;
+ $scope.toName = data.stateParams.toName;
+ $scope.toEmail = data.stateParams.toEmail;
+ $scope.toColor = data.stateParams.toColor;
+
+ if (!$scope.nextStep && !data.stateParams.toAddress) {
+ $log.error('Bad params at amount')
+ throw ('bad params');
+ }
+
+ var reNr = /^[1234567890\.]$/;
+ var reOp = /^[\*\+\-\/]$/;
+
+ if (!$scope.isAndroid && !$scope.isIos) {
+ var disableKeys = angular.element($window).on('keydown', function(e) {
+ if (!e.key) return;
+ if (e.which === 8) { // you can add others here inside brackets.
+ if (!$scope.altCurrencyModal) {
+ 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();
+ });
+ });
+ }
+
+ $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.amountModel.amount = (($stateParams.toAmount) * satToUnit).toFixed(unitDecimals);
+ }
+
+ $scope.processAmount();
+
+ $timeout(function() {
+ $ionicScrollDelegate.resize();
+ }, 10);
+ });
+
+ $scope.goBack = function() {
+ if ($scope.shapeshiftOrderId) {
+ $state.go('tabs.send').then(function() {
+ $ionicHistory.clearHistory();
+ $state.go('tabs.home').then(function() {
+ $state.transitionTo('tabs.shapeshift');
+ });
+ });
+ } else {
+ $ionicHistory.goBack();
+ }
+ }
+
+ function paste(value) {
+ $scope.amountModel.amount = value;
+ $scope.processAmount();
+ $timeout(function() {
+ $scope.$apply();
+ });
+ };
+
+ function processClipboard() {
+ if (!isNW) return;
+ var value = nodeWebkitService.readFromClipboard();
+ if (value && evaluate(value) > 0) paste(evaluate(value));
+ };
+
+ $scope.sendMax = function() {
+ $scope.useSendMax = true;
+ $scope.finish();
+ };
+
+ $scope.toggleAlternative = function() {
+ if ($scope.amountModel.amount && isExpression($scope.amountModel.amount)) {
+ var amount = evaluate(format($scope.amountModel.amount));
+ $scope.globalResult = '= ' + processResult(amount);
+ }
+ };
+
+ function updateUnitUI() {
+ $scope.unit = availableUnits[unitIndex].shortName;
+ $scope.alternativeUnit = availableUnits[altUnitIndex].shortName;
+
+ $scope.processAmount();
+ $log.debug('Update unit coin @amount unit:' + $scope.unit + " alternativeUnit:" + $scope.alternativeUnit);
+ };
+
+ $scope.changeUnit = function() {
+
+ $scope.amountModel.amount = '0';
+
+ if (fixedUnit) return;
+
+ if (!(availableUnits[unitIndex].isFiat && availableUnits.length > 2 && altUnitIndex == 0)) {
+ unitIndex++;
+ if (unitIndex >= availableUnits.length) unitIndex = 0;
+ }
+
+ if (availableUnits[unitIndex].isFiat) {
+ altUnitIndex = altUnitIndex == 0 && availableUnits.length > 2 ? 1 : 0;
+ } else {
+ altUnitIndex = lodash.findIndex(availableUnits, {
+ isFiat: true
+ });
+ }
+
+ updateUnitUI();
+ };
+
+
+ $scope.changeAlternativeUnit = function() {
+
+ // Do nothing is fiat is not main unit
+ if (!availableUnits[unitIndex].isFiat) return;
+
+ var nextCoin = lodash.findIndex(availableUnits, function(x) {
+ if (x.isFiat) return false;
+ if (x.id == availableUnits[altUnitIndex].id) return false;
+ return true;
+ });
+
+ if (nextCoin >= 0) {
+ altUnitIndex = nextCoin;
+ updateUnitUI();
+ }
+ };
+
+ function checkFontSize() {
+ if ($scope.amountModel.amount && $scope.amountModel.amount.length >= SMALL_FONT_SIZE_LIMIT) $scope.smallFont = true;
+ else $scope.smallFont = false;
+ };
+
+ $scope.pushDigit = function(digit) {
+ if ($scope.amountModel.amount && digit != '.') {
+ var amountSplitByComma = $scope.amountModel.amount.split('.');
+ if (amountSplitByComma.length > 1 && amountSplitByComma[1].length >= LENGTH_AFTER_COMMA_EXPRESSION_LIMIT) return;
+ if (amountSplitByComma.length == 1 && amountSplitByComma[0].length >= LENGTH_BEFORE_COMMA_EXPRESSION_LIMIT) return;
+ }
+
+ if ($scope.amountModel.amount && $scope.amountModel.amount.length >= LENGTH_EXPRESSION_LIMIT) return;
+ if (($scope.amountModel.amount.indexOf('.') > -1 || $scope.amountModel.amount == '') && digit == '.') return;
+ if ($scope.amountModel.amount == '0' && digit == '0') return;
+ if (availableUnits[unitIndex].isFiat && $scope.amountModel.amount.indexOf('.') > -1 && $scope.amountModel.amount[$scope.amountModel.amount.indexOf('.') + 2]) return;
+
+ if ($scope.amountModel.amount == '0' && digit != '.') { $scope.amountModel.amount = ''}
+
+ $scope.amountModel.amount = ($scope.amountModel.amount + digit).replace('..', '.');
+ checkFontSize();
+ $scope.processAmount();
+ navigator.vibrate(50);
+ };
+
+ $scope.pushOperator = function(operator) {
+ if (!$scope.amountModel.amount || $scope.amountModel.amount.length == 0) return;
+ $scope.amountModel.amount = _pushOperator($scope.amountModel.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.amountModel.amount = ($scope.amountModel.amount).toString().slice(0, -1);
+ $scope.processAmount();
+ checkFontSize();
+ };
+
+ $scope.resetAmount = function() {
+ $scope.amountModel.amount = $scope.alternativeAmount = $scope.globalResult = '';
+ $scope.allowSend = false;
+ checkFontSize();
+ navigator.vibrate(50);
+ };
+
+
+ $scope.openPopup = function() {
+ $ionicModal.fromTemplateUrl('views/modals/altCurrency.html', {
+ scope: $scope
+ }).then(function(modal) {
+ $scope.altCurrencyModal = modal;
+ $scope.altCurrencyModal.show();
+ });
+ };
+
+ $scope.close = function() {
+ $scope.altCurrencyModal.remove();
+ $scope.altCurrencyModal = false;
+ };
+
+ $scope.processAmount = function() {
+ var formatedValue = format($scope.amountModel.amount);
+ var result = evaluate(formatedValue);
+
+ if (lodash.isNumber(result)) {
+ $scope.globalResult = isExpression($scope.amountModel.amount) ? '= ' + processResult(result) : '';
+
+ if (availableUnits[unitIndex].isFiat) {
+
+ var a = fromFiat(result);
+ if (a) {
+ $scope.alternativeAmount = txFormatService.formatAmount(a * unitToSatoshi, true);
+ $scope.allowSend = lodash.isNumber(a) && a > 0
+ && (!$scope.shapeshiftOrderId
+ || (a >= $scope.minShapeshiftAmount && a <= $scope.maxShapeshiftAmount));
+ } else {
+ if (result) {
+ $scope.alternativeAmount = 'N/A';
+ } else {
+ $scope.alternativeAmount = null;
+ }
+ $scope.allowSend = false;
+ }
+ } else {
+ $scope.alternativeAmount = $filter('formatFiatAmount')(toFiat(result));
+ $scope.allowSend = lodash.isNumber(result) && result > 0
+ && (!$scope.shapeshiftOrderId
+ || (result >= $scope.minShapeshiftAmount && result <= $scope.maxShapeshiftAmount));
+ }
+ }
+ };
+
+ function processResult(val) {
+ if (availableUnits[unitIndex].isFiat) return $filter('formatFiatAmount')(val);
+ else return txFormatService.formatAmount(val.toFixed(unitDecimals) * unitToSatoshi, true);
+ };
+
+ function fromFiat(val) {
+ return parseFloat((rateService.fromFiat(val, fiatCode, availableUnits[altUnitIndex].id) * satToUnit).toFixed(unitDecimals));
+ };
+
+ function toFiat(val) {
+ if (!rateService.getRate(fiatCode)) return;
+
+ return parseFloat((rateService.toFiat(val * unitToSatoshi, fiatCode, availableUnits[unitIndex].id)).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) {
+ if (!val) return;
+
+ var result = val.toString();
+
+ if (isOperator(lodash.last(val))) result = result.slice(0, -1);
+
+ return result.replace('x', '*');
+ };
+
+ $scope.finish = function() {
+
+ function finish() {
+ var unit = availableUnits[unitIndex];
+ var _amount = evaluate(format($scope.amountModel.amount));
+ var coin = unit.id;
+ if (unit.isFiat) {
+ coin = availableUnits[altUnitIndex].id;
+ }
+
+ if ($scope.nextStep) {
+ $state.transitionTo($scope.nextStep, {
+ id: _id,
+ amount: $scope.useSendMax ? null : _amount,
+ currency: unit.id.toUpperCase(),
+ coin: coin,
+ useSendMax: $scope.useSendMax
+ });
+ } else {
+ var amount = _amount;
+
+ if (unit.isFiat) {
+ amount = (fromFiat(amount) * unitToSatoshi).toFixed(0);
+ } else {
+ amount = (amount * unitToSatoshi).toFixed(0);
+ }
+
+ var confirmData = {
+ recipientType: $scope.recipientType,
+ toAmount: amount,
+ toAddress: $scope.toAddress,
+ displayAddress: $scope.displayAddress || $scope.toAddress,
+ toName: $scope.toName,
+ toEmail: $scope.toEmail,
+ toColor: $scope.toColor,
+ coin: coin,
+ useSendMax: $scope.useSendMax,
+ };
+
+ if ($scope.shapeshiftOrderId) {
+ var shapeshiftOrderUrl = 'https://www.shapeshift.io/#/status/';
+ shapeshiftOrderUrl += $scope.shapeshiftOrderId;
+ confirmData.description = shapeshiftOrderUrl;
+ confirmData.fromWalletId = $scope.fromWalletId;
+
+ if (confirmData.useSendMax) {
+ var wallet = lodash.find(profileService.getWallets({ coin: coin }),
+ function(w) {
+ return w.id == $scope.fromWalletId;
+ });
+
+ var balance = parseFloat(wallet.cachedBalance.substring(0, wallet.cachedBalance.length-4));
+ if (balance < $scope.minShapeshiftAmount * 1.04) {
+ confirmData.useSendMax = false;
+ confirmData.toAmount = $scope.minShapeshiftAmount * unitToSatoshi;
+ } else if (balance > $scope.maxShapeshiftAmount) {
+ confirmData.useSendMax = false;
+ confirmData.toAmount = $scope.maxShapeshiftAmount * unitToSatoshi * 0.99;
+ }
+ }
+ }
+
+ $state.transitionTo('tabs.send.confirm', confirmData);
+ }
+ $scope.useSendMax = null;
+ }
+
+ if ($scope.showWarningMessage) {
+ var u = $scope.unit == 'BCH' || $scope.unit == 'BTC' ? $scope.unit : $scope.alternativeUnit;
+ var message = 'Are you sure you want to send ' + u.toUpperCase() + '?';
+ popupService.showConfirm(message, '', 'Yes', 'No', function(res) {
+ if (!res) {
+ $scope.useSendMax = null;
+ return;
+ };
+ finish();
+ });
+ } else {
+ finish();
+ }
+
+ };
+
+
+ // Currency
+
+ var next = 10;
+ var completeAlternativeList = [];
+
+ var popularCurrencyList = [
+ {isoCode: 'USD', order: 0},
+ {isoCode: 'EUR', order: 1},
+ {isoCode: 'JPY', order: 2},
+ {isoCode: 'GBP', order: 3},
+ {isoCode: 'AUD', order: 4},
+ {isoCode: 'CAD', order: 5},
+ {isoCode: 'CHF', order: 6},
+ {isoCode: 'CNY', order: 7},
+ {isoCode: 'KRW', order: 8},
+ {isoCode: 'HKD', order: 9},
+ ]
+
+ function initCurrencies() {
+ var unusedCurrencyList = [{
+ isoCode: 'LTL'
+ }, {
+ isoCode: 'BTC'
+ }, {
+ isoCode: 'BCC'
+ }, {
+ isoCode: 'BCH_BTC'
+ }, {
+ isoCode: 'BCH'
+ }];
+ rateService.whenAvailable(function() {
+
+ $scope.listComplete = false;
+
+ var idx = lodash.indexBy(unusedCurrencyList, 'isoCode');
+ var idx2 = lodash.indexBy($scope.lastUsedAltCurrencyList, 'isoCode');
+ var idx3 = lodash.indexBy(popularCurrencyList, 'isoCode');
+ var alternatives = rateService.listAlternatives(true);
+
+ lodash.each(alternatives, function(c) {
+ if (idx3[c.isoCode]) {
+ idx3[c.isoCode].name = c.name;
+ }
+ if (!idx[c.isoCode] && !idx2[c.isoCode] && !idx3[c.isoCode]) {
+ completeAlternativeList.push(c);
+ }
+ });
+
+ $scope.altCurrencyList = completeAlternativeList.slice(0, 10);
+ $scope.lastUsedPopularList = lodash.unique(lodash.union($scope.lastUsedAltCurrencyList, popularCurrencyList), 'isoCode');
+
+ $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) initCurrencies();
+ var list = lodash.unique(lodash.union(completeAlternativeList, lodash.union($scope.lastUsedAltCurrencyList, popularCurrencyList)), 'isoCode');
+ $scope.altCurrencyList = lodash.filter(list, function(item) {
+ var val = item.name
+ var val2 = item.isoCode;
+ return lodash.includes(val.toLowerCase(), search.toLowerCase()) || lodash.includes(val2.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);
+ walletService.updateRemotePreferences(profileService.getWallets());
+ var altUnitIndex = lodash.findIndex(availableUnits, {
+ isFiat: true
+ });
+ availableUnits[altUnitIndex].id = newAltCurrency.isoCode;
+ availableUnits[altUnitIndex].name = newAltCurrency.isoCode;
+ availableUnits[altUnitIndex].shortName = newAltCurrency.isoCode;
+ fiatCode = newAltCurrency.isoCode;
+ updateUnitUI();
+ $scope.close();
+ });
+ };
+});
diff --git a/src/js/controllers/amount.spec.js b/src/js/controllers/amount.spec.js
deleted file mode 100644
index fdef97109..000000000
--- a/src/js/controllers/amount.spec.js
+++ /dev/null
@@ -1,604 +0,0 @@
-describe('amountController', function(){
- var configCache,
- configService,
- gettextCatalog,
- $controller,
- $ionicHistory,
- $rootScope,
- ongoingProcess,
- platformInfo,
- popupService,
- profileService,
- rateService,
- sendFlowService,
- shapeshiftService,
- txFormatService,
- $scope,
- $state,
- $stateParams;
-
-
-
- beforeEach(function(){
- module('ngLodash');
- module('copayApp.controllers');
-
- configCache = {
- wallet: {
- settings: {
- unitToSatoshi: 100000000
- }
- }
- };
-
-
- configService = jasmine.createSpyObj(['getDefaults','getSync']);
- configService.getDefaults.and.returnValue({
- bitcoinCashAlias: 'bch',
- bitcoinAlias: 'btc'
- });
- configService.getSync.and.returnValue(configCache);
-
- gettextCatalog = jasmine.createSpyObj(['getString']);
- gettextCatalog.getString.and.callFake(function(str){ return str; });
- $ionicHistory = jasmine.createSpyObj(['backView']);
-
- ongoingProcess = jasmine.createSpyObj(['set']);
-
- platformInfo = {
- isChromeApp: false,
- isAndroid: false,
- isIos: true
- };
- popupService = jasmine.createSpyObj(['showAlert']);
- profileService = jasmine.createSpyObj(['getWallet', 'getWallets']);
-
- rateService = jasmine.createSpyObj(['fromFiat', 'listAlternatives', 'updateRates', 'whenAvailable']);
- sendFlowService = jasmine.createSpyObj(['getStateClone', 'pushState']);
- shapeshiftService = jasmine.createSpyObj(['getMarketData']);
- txFormatService = jasmine.createSpyObj(['formatAlternativeStr', 'formatAmountStr']);
-
- txFormatService.formatAlternativeStr.and.callFake(function(coin, satoshis, cb) {
- if (typeof satoshis !== "number") {
- throw "satoshis in formatAlternativeStr() is not a number."
- }
- var units = satoshis / 100000000;
- var formatted = (units * 10000).toFixed(2) + ' USD';
- cb(formatted);
- });
-
- txFormatService.formatAmountStr.and.callFake(function(coin, satoshis) {
- if (typeof satoshis !== "number") {
- throw "satoshis in formatAmountStr() is not a number."
- }
- return (satoshis * 100000000).toFixed(8) + ' ' + (coin || 'bch').toUpperCase();
- });
-
- $state = jasmine.createSpyObj(['transitionTo']);
- $stateParams = {};
-
- inject(function(_$controller_, _$rootScope_){
- // The injector unwraps the underscores (_) from around the parameter names when matching
- $controller = _$controller_;
- $rootScope = _$rootScope_;
- });
-
-
-
- });
-
- it('receives fromWalletId and toAddress.', function() {
-
- var backView = {
- stateName: 'ignoreme'
- };
- $ionicHistory.backView.and.returnValue(backView);
-
- var wallet = {
- status: {
- isValid: true,
- spendableAmount: 123456
- }
- };
- profileService.getWallet.and.returnValue(wallet);
- profileService.getWallets.and.returnValue([{}]);
- rateService.fromFiat.and.returnValue(12); // satoshis or coins?
-
- var $scope = $rootScope.$new();
-
-
- var amountController = $controller('amountController', {
- configService: configService,
- gettextCatalog: gettextCatalog,
- $ionicHistory: $ionicHistory,
- $ionicModal: {},
- $ionicScrollDelegate: {},
- nodeWebkitService: {},
- ongoingProcess: ongoingProcess,
- platformInfo: platformInfo,
- profileService: profileService,
- popupService: popupService,
- rateService: rateService,
- $scope: $scope,
- sendFlowService: sendFlowService,
- shapeshiftService: shapeshiftService,
- $state: {},
- $stateParams: $stateParams,
- txFormatService: txFormatService,
- walletService: {}
- });
-
- var sendFlowState = {
- fromWalletId: 'fd56c1e7-e3ac-4fd9-8afc-27b9c1b3718b',
- toAddress: 'qrup46avn8t466xxwlzs4qelht7cnwvesv2e29wf7s'
- };
-
- sendFlowService.getStateClone.and.returnValue(sendFlowState);
-
- $scope.$emit('$ionicView.beforeEnter', {});
-
- //expect($scope.fromWalletId).toBe('fd56c1e7-e3ac-4fd9-8afc-27b9c1b3718b');
- //expect($scope.toAddress).toBe('qrup46avn8t466xxwlzs4qelht7cnwvesv2e29wf7s');
- });
-
-
-
- describe('Shapeshift', function() {
- var walletFrom;
- var walletTo;
-
- beforeEach(function(){
- walletFrom = {};
- walletTo = {};
-
- profileService.getWallet.and.callFake(function(walletId){
- if (walletId === '4cd7673e-7320-4dfa-86e5-d4edb51d460a') {
- return walletFrom;
- } else if (walletId === 'bf00af8f-0788-4b57-b30a-0390747407e9') {
- return walletTo;
- } else {
- return null;
- }
- });
-
- rateService.listAlternatives.and.returnValue([
- {name: "Australian Dollar", isoCode: "AUD"},
- {name: "United States Dollar", isoCode: "USD"}
- ]);
-
- });
-
- it ('with available balance below limit, shows sendMax for triggering alert', function() {
-
- walletFrom.coin = 'btc';
- walletFrom.status = {
- isValid: true,
- spendableAmount: 789
- };
- walletTo.coin = 'bch';
-
- profileService.getWallets.and.returnValue([{}]);
- rateService.fromFiat.and.returnValue(12);
-
- var $scope = $rootScope.$new();
-
- var amountController = $controller('amountController', {
- configService: configService,
- gettextCatalog: gettextCatalog,
- $ionicHistory: $ionicHistory,
- $ionicModal: {},
- $ionicScrollDelegate: {},
- nodeWebkitService: {},
- ongoingProcess: ongoingProcess,
- platformInfo: platformInfo,
- profileService: profileService,
- popupService: popupService,
- rateService: rateService,
- $scope: $scope,
- sendFlowService: sendFlowService,
- shapeshiftService: shapeshiftService,
- $state: $state,
- $stateParams: $stateParams,
- txFormatService: txFormatService,
- walletService: {}
- });
-
- rateService.whenAvailable.and.callFake(function(cb){
- cb();
- });
-
- var sendFlowState = {
- amount: '',
- displayAddress: null,
- fromWalletId: '4cd7673e-7320-4dfa-86e5-d4edb51d460a',
- sendMax: false,
- thirdParty: {
- id: 'shapeshift',
- data: {},
- },
- toAddress: '',
- toWalletId: 'bf00af8f-0788-4b57-b30a-0390747407e9'
- };
-
- sendFlowService.getStateClone.and.returnValue(sendFlowState);
-
- var reqCoinIn = '';
- var reqCoinOut = '';
- shapeshiftService.getMarketData.and.callFake(function(coinIn, coinOut, cb){
- reqCoinIn = coinIn;
- reqCoinOut = coinOut;
- cb({
- maxLimit: '0.6846239',
- minimum: '0.00013692'
- });
- });
-
- $scope.$emit('$ionicView.beforeEnter', {});
-
- expect(rateService.updateRates.calls.any()).toEqual(true);
-
- expect(reqCoinIn).toBe('btc');
- expect(reqCoinOut).toBe('bch');
-
- expect(amountController.maxAmount).toBe(0.68462390);
- expect(amountController.minAmount).toBe(0.00013692);
-
- expect(amountController.showSendMaxButton).toEqual(true);
- expect(amountController.showSendLimitMaxButton).toEqual(false);
-
- expect(amountController.sendableFunds).toEqual('0.08 USD');
-
- // Now hit the Send Max button
- amountController.sendMax();
-
- expect(popupService.showAlert.calls.argsFor(0)[0]).toEqual('Insufficient funds');
- expect(popupService.showAlert.calls.argsFor(0)[1]).toEqual('Amount below minimum allowed');
- expect(sendFlowService.pushState.calls.any()).toEqual(false);
- expect($state.transitionTo.calls.any()).toEqual(false);
- });
-
- it ('with available balance between limits, uses sendMax', function() {
-
- walletFrom.coin = 'btc';
- walletFrom.status = {
- isValid: true,
- spendableAmount: 456789
- };
- walletTo.coin = 'bch';
-
- profileService.getWallets.and.returnValue([{}]);
- rateService.fromFiat.and.returnValue(12);
-
- var $scope = $rootScope.$new();
-
- var amountController = $controller('amountController', {
- configService: configService,
- gettextCatalog: {},
- $ionicHistory: $ionicHistory,
- $ionicModal: {},
- $ionicScrollDelegate: {},
- nodeWebkitService: {},
- ongoingProcess: ongoingProcess,
- platformInfo: platformInfo,
- profileService: profileService,
- popupService: {},
- rateService: rateService,
- $scope: $scope,
- sendFlowService: sendFlowService,
- shapeshiftService: shapeshiftService,
- $state: $state,
- $stateParams: $stateParams,
- txFormatService: txFormatService,
- walletService: {}
- });
-
- rateService.whenAvailable.and.callFake(function(cb){
- cb();
- });
-
- var sendFlowState = {
- amount: '',
- displayAddress: null,
- fromWalletId: '4cd7673e-7320-4dfa-86e5-d4edb51d460a',
- sendMax: false,
- thirdParty: {
- id: 'shapeshift',
- data: {},
- },
- toAddress: '',
- toWalletId: 'bf00af8f-0788-4b57-b30a-0390747407e9'
- };
-
- sendFlowService.getStateClone.and.returnValue(sendFlowState);
-
- var reqCoinIn = '';
- var reqCoinOut = '';
- shapeshiftService.getMarketData.and.callFake(function(coinIn, coinOut, cb){
- reqCoinIn = coinIn;
- reqCoinOut = coinOut;
- cb({
- maxLimit: '0.6846239',
- minimum: '0.00013692'
- });
- });
-
- $scope.$emit('$ionicView.beforeEnter', {});
-
- expect(rateService.updateRates.calls.any()).toEqual(true);
-
- expect(reqCoinIn).toBe('btc');
- expect(reqCoinOut).toBe('bch');
-
- expect(amountController.maxAmount).toBe(0.68462390);
- expect(amountController.minAmount).toBe(0.00013692);
-
- expect(amountController.showSendMaxButton).toEqual(true);
- expect(amountController.showSendLimitMaxButton).toEqual(false);
-
- // Now hit the Send Max button
- var pushedState = null;
- sendFlowService.pushState.and.callFake(function (sendFlowState){
- pushedState = sendFlowState;
- });
-
- amountController.sendMax();
-
- expect(pushedState.amount).toBeUndefined();
- expect(pushedState.fromWalletId).toEqual('4cd7673e-7320-4dfa-86e5-d4edb51d460a');
- expect(pushedState.sendMax).toEqual(true);
- expect(pushedState.toWalletId).toEqual('bf00af8f-0788-4b57-b30a-0390747407e9');
-
- expect(pushedState.thirdParty.id).toEqual('shapeshift');
- expect(pushedState.thirdParty.data.maxAmount).toEqual(0.6846239);
- expect(pushedState.thirdParty.data.minAmount).toEqual(0.00013692);
-
- expect($state.transitionTo.calls.count()).toEqual(1);
- expect($state.transitionTo.calls.argsFor(0)[0]).toEqual('tabs.send.review');
- });
-
- it ('with available balance higher than max, uses send limit max instead of sendMax', function() {
-
- walletFrom.coin = 'btc';
- walletFrom.status = {
- isValid: true,
- spendableAmount: 123456789
- };
- walletTo.coin = 'bch';
-
- profileService.getWallets.and.returnValue([{}]);
- rateService.fromFiat.and.returnValue(12); // satoshis or coins?
-
- var $scope = $rootScope.$new();
-
- var amountController = $controller('amountController', {
- configService: configService,
- gettextCatalog: {},
- $ionicHistory: $ionicHistory,
- $ionicModal: {},
- $ionicScrollDelegate: {},
- nodeWebkitService: {},
- ongoingProcess: ongoingProcess,
- platformInfo: platformInfo,
- profileService: profileService,
- popupService: {},
- rateService: rateService,
- $scope: $scope,
- sendFlowService: sendFlowService,
- shapeshiftService: shapeshiftService,
- $state: $state,
- $stateParams: $stateParams,
- txFormatService: txFormatService,
- walletService: {}
- });
-
- rateService.whenAvailable.and.callFake(function(cb){
- cb();
- });
-
- var sendFlowState = {
- amount: '',
- displayAddress: null,
- fromWalletId: '4cd7673e-7320-4dfa-86e5-d4edb51d460a',
- sendMax: false,
- thirdParty: {
- id: 'shapeshift',
- data: {},
- },
- toAddress: '',
- toWalletId: 'bf00af8f-0788-4b57-b30a-0390747407e9'
- };
-
- sendFlowService.getStateClone.and.returnValue(sendFlowState);
-
- var reqCoinIn = '';
- var reqCoinOut = '';
- shapeshiftService.getMarketData.and.callFake(function(coinIn, coinOut, cb){
- reqCoinIn = coinIn;
- reqCoinOut = coinOut;
- cb({
- maxLimit: '0.6846239',
- minimum: '0.00013692'
- });
- });
-
- $scope.$emit('$ionicView.beforeEnter', {});
-
- expect(rateService.updateRates.calls.any()).toEqual(true);
-
- expect(reqCoinIn).toBe('btc');
- expect(reqCoinOut).toBe('bch');
-
- expect(amountController.maxAmount).toBe(0.6846239);
- expect(amountController.minAmount).toBe(0.00013692);
-
- expect(amountController.showSendMaxButton).toEqual(false);
- expect(amountController.showSendLimitMaxButton).toEqual(true);
-
- // Now hit the Send Max button
- var pushedState = null;
- sendFlowService.pushState.and.callFake(function (sendFlowState){
- pushedState = sendFlowState;
- });
-
- amountController.sendMax();
-
- expect(pushedState.amount).toEqual(68462390);
- expect(pushedState.fromWalletId).toEqual('4cd7673e-7320-4dfa-86e5-d4edb51d460a');
- expect(pushedState.sendMax).toEqual(false);
- expect(pushedState.toWalletId).toEqual('bf00af8f-0788-4b57-b30a-0390747407e9');
-
- expect(pushedState.thirdParty.id).toEqual('shapeshift');
- expect(pushedState.thirdParty.data.maxAmount).toEqual(0.6846239);
- expect(pushedState.thirdParty.data.minAmount).toEqual(0.00013692);
-
- expect($state.transitionTo.calls.count()).toEqual(1);
- expect($state.transitionTo.calls.argsFor(0)[0]).toEqual('tabs.send.review');
- });
- });
-
-
- describe('Wallet transfer', function() {
- var walletFrom;
- var walletTo;
-
- beforeEach(function(){
- walletFrom = {};
- walletTo = {};
-
- profileService.getWallet.and.callFake(function(walletId){
- if (walletId === '4cd7673e-7320-4dfa-86e5-d4edb51d460a') {
- return walletFrom;
- } else if (walletId === 'bf00af8f-0788-4b57-b30a-0390747407e9') {
- return walletTo;
- } else {
- return null;
- }
- });
-
- rateService.listAlternatives.and.returnValue([
- {name: "Australian Dollar", isoCode: "AUD"},
- {name: "United States Dollar", isoCode: "USD"}
- ]);
-
- });
-
- it('wallet transfer send max.', function() {
-
- walletFrom.coin = 'btc';
- walletFrom.status = {
- isValid: true,
- spendableAmount: 123456789
- };
-
- profileService.getWallets.and.returnValue([{}]);
-
- var $scope = $rootScope.$new();
-
- var amountController = $controller('amountController', {
- configService: configService,
- gettextCatalog: gettextCatalog,
- $ionicHistory: $ionicHistory,
- $ionicModal: {},
- $ionicScrollDelegate: {},
- nodeWebkitService: {},
- ongoingProcess: ongoingProcess,
- platformInfo: platformInfo,
- profileService: profileService,
- popupService: popupService,
- rateService: rateService,
- $scope: $scope,
- sendFlowService: sendFlowService,
- shapeshiftService: shapeshiftService,
- $state: $state,
- $stateParams: $stateParams,
- txFormatService: txFormatService,
- walletService: {}
- });
-
- var sendFlowState = {
- fromWalletId: '4cd7673e-7320-4dfa-86e5-d4edb51d460a',
- toWalletId: 'bf00af8f-0788-4b57-b30a-0390747407e9'
- };
-
- sendFlowService.getStateClone.and.returnValue(sendFlowState);
-
- $scope.$emit('$ionicView.beforeEnter', {});
-
- expect(amountController.showSendMaxButton).toEqual(true);
- expect(amountController.showSendLimitMaxButton).toEqual(false);
-
- expect(amountController.sendableFunds).toEqual('12345.68 USD');
-
- // Now hit the Send Max button
- var pushedState = null;
- sendFlowService.pushState.and.callFake(function (sendFlowState){
- pushedState = sendFlowState;
- });
-
- amountController.sendMax();
-
- expect(pushedState.amount).toBeUndefined();
- expect(pushedState.fromWalletId).toEqual('4cd7673e-7320-4dfa-86e5-d4edb51d460a');
- expect(pushedState.sendMax).toEqual(true);
- expect(pushedState.toWalletId).toEqual('bf00af8f-0788-4b57-b30a-0390747407e9');
-
- expect($state.transitionTo.calls.count()).toEqual(1);
- expect($state.transitionTo.calls.argsFor(0)[0]).toEqual('tabs.send.review');
- });
-
-
- // This situation was seen in real life
- it('wallet transfer with valid cached status only.', function() {
-
- walletFrom.coin = 'btc';
- walletFrom.status = {
- isValid: false,
- };
- walletFrom.cachedStatus = {
- isValid: true,
- spendableAmount: 5678
- };
-
- profileService.getWallets.and.returnValue([{}]);
-
- var $scope = $rootScope.$new();
-
- var amountController = $controller('amountController', {
- configService: configService,
- gettextCatalog: gettextCatalog,
- $ionicHistory: $ionicHistory,
- $ionicModal: {},
- $ionicScrollDelegate: {},
- nodeWebkitService: {},
- ongoingProcess: ongoingProcess,
- platformInfo: platformInfo,
- profileService: profileService,
- popupService: popupService,
- rateService: rateService,
- $scope: $scope,
- sendFlowService: sendFlowService,
- shapeshiftService: shapeshiftService,
- $state: $state,
- $stateParams: $stateParams,
- txFormatService: txFormatService,
- walletService: {}
- });
-
- var sendFlowState = {
- fromWalletId: '4cd7673e-7320-4dfa-86e5-d4edb51d460a',
- toWalletId: 'bf00af8f-0788-4b57-b30a-0390747407e9'
- };
-
- sendFlowService.getStateClone.and.returnValue(sendFlowState);
-
- $scope.$emit('$ionicView.beforeEnter', {});
-
- expect(amountController.showSendMaxButton).toEqual(true);
- expect(amountController.showSendLimitMaxButton).toEqual(false);
-
- expect(amountController.sendableFunds).toEqual('0.57 USD');
- });
-
- });
-
-});
\ No newline at end of file
diff --git a/src/js/controllers/backup.js b/src/js/controllers/backup.js
index 6ec7089c6..0eec71f12 100644
--- a/src/js/controllers/backup.js
+++ b/src/js/controllers/backup.js
@@ -1,7 +1,7 @@
'use strict';
angular.module('copayApp.controllers').controller('backupController',
- function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, lodash, profileService, bwcService, walletService, ongoingProcess, popupService, gettextCatalog, $ionicModal) {
+ function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, lodash, profileService, bwcService, walletService, ongoingProcess, popupService, gettextCatalog, $ionicModal, firebaseEventsService) {
if ($state.current.name == 'onboarding.backup') {
$scope.onboarding = true;
@@ -89,8 +89,7 @@ angular.module('copayApp.controllers').controller('backupController',
$scope.setFlow(2);
})
} else {
-
- //firebaseEventsService.logEvent('backed_up_wallet');
+ firebaseEventsService.logEvent('backed_up_wallet');
openConfirmBackupModal();
}
};
diff --git a/src/js/controllers/buyBitcoindotcom.js b/src/js/controllers/buyBitcoindotcom.js
index 64766eede..741898c34 100644
--- a/src/js/controllers/buyBitcoindotcom.js
+++ b/src/js/controllers/buyBitcoindotcom.js
@@ -1,9 +1,7 @@
'use strict';
angular.module('copayApp.controllers').controller('buyBitcoindotcomController',
- function($scope, platformInfo, externalLinkService) {
-
- $scope.os = platformInfo.isAndroid ? 'android' : platformInfo.isIOS ? 'ios' : 'desktop';
+ function($scope, $timeout, $ionicModal, $log, $state, $ionicHistory, lodash, bitcoincomService, externalLinkService, popupService) {
$scope.openExternalLink = function(url) {
externalLinkService.open(url);
diff --git a/src/js/controllers/communityController.js b/src/js/controllers/communityController.js
index b39d233ba..537270b8f 100644
--- a/src/js/controllers/communityController.js
+++ b/src/js/controllers/communityController.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.controllers').controller('communityController', function($scope, communityService, $ionicScrollDelegate, $timeout, platformInfo, configService, externalLinkService) {
+angular.module('copayApp.controllers').controller('communityController', function($scope, communityService, $ionicScrollDelegate, $timeout, platformInfo, configService) {
$scope.hide = false;
@@ -29,7 +29,7 @@ angular.module('copayApp.controllers').controller('communityController', functio
}
$scope.open = function(url) {
- externalLinkService.open(url, false);
+ window.open(url, '_system');
}
});
diff --git a/src/js/controllers/confirm.js b/src/js/controllers/confirm.js
index ae4bc7153..6ec1d9469 100644
--- a/src/js/controllers/confirm.js
+++ b/src/js/controllers/confirm.js
@@ -1,20 +1,25 @@
'use strict';
-angular.module('copayApp.controllers').controller('confirmController', function($rootScope, $scope, $interval, $timeout, $ionicScrollDelegate, $ionicLoading, ionicToast, addressbookService, gettextCatalog, walletService, platformInfo, lodash, configService, $state, $log, profileService, bitcore, bitcoreCash, txFormatService, ongoingProcess, $ionicModal, popupService, $ionicHistory, $ionicConfig, feeService, bitcoinCashJsService, bwcError, txConfirmNotification, soundService, clipboardService) {
+angular.module('copayApp.controllers').controller('confirmController', function($rootScope, $scope, $interval, $filter, $timeout, $ionicScrollDelegate, gettextCatalog, walletService, platformInfo, lodash, configService, $stateParams, $window, $state, $log, profileService, bitcore, bitcoreCash, txFormatService, ongoingProcess, $ionicModal, popupService, $ionicHistory, $ionicConfig, payproService, feeService, bwcError, txConfirmNotification, externalLinkService, firebaseEventsService) {
var countDown = null;
var FEE_TOO_HIGH_LIMIT_PER = 15;
var tx = {};
- var lastTxId = "";
// 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 = false;
@@ -26,16 +31,6 @@ angular.module('copayApp.controllers').controller('confirmController', function(
}, 10);
}
- $scope.shareTransaction = function() {
- var explorerTxUrl = 'https://explorer.bitcoin.com/'+tx.coin+'/tx/'+lastTxId;
- if (platformInfo.isCordova) {
- var text = 'Take a look at this Bitcoin transaction here: '+explorerTxUrl;
- window.plugins.socialsharing.share(text, null, null, null);
- } else {
- ionicToast.show(gettextCatalog.getString('Copied to clipboard'), 'bottom', false, 3000);
- clipboardService.copyToClipboard(explorerTxUrl);
- }
- };
$scope.showWalletSelector = function() {
$scope.walletSelector = true;
@@ -50,6 +45,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
$ionicConfig.views.swipeBackEnabled(false);
});
+
function exitWithError(err) {
$log.info('Error setting wallet selector:' + err);
popupService.showAlert(gettextCatalog.getString(), bwcError.msg(err), function() {
@@ -72,108 +68,112 @@ angular.module('copayApp.controllers').controller('confirmController', function(
});
};
- var setWalletSelector = function(coin, network, minAmount, cb) {
+ $scope.$on("$ionicView.beforeEnter", function(event, data) {
- // no min amount? (sendMax) => look for no empty wallets
- minAmount = minAmount || 1;
+ function setWalletSelector(coin, network, minAmount, cb) {
- $scope.wallets = profileService.getWallets({
- onlyComplete: true,
- network: network,
- coin: coin
- });
+ // no min amount? (sendMax) => look for no empty wallets
+ minAmount = minAmount || 1;
- if (tx.fromWalletId) {
- $scope.wallets = lodash.filter($scope.wallets, function (w) {
- return w.id == tx.fromWalletId;
+ $scope.wallets = profileService.getWallets({
+ onlyComplete: true,
+ network: network,
+ coin: coin
});
- }
+
+ if (tx.fromWalletId) {
+ $scope.wallets = lodash.filter($scope.wallets, function(w) {
+ return w.id == tx.fromWalletId;
+ });
+ }
- if (!$scope.wallets || !$scope.wallets.length) {
- setNoWallet(gettextCatalog.getString('No wallets available'), true);
- return cb();
- }
- var filteredWallets = [];
- var index = 0;
- var walletsUpdated = 0;
+ if (!$scope.wallets || !$scope.wallets.length) {
+ setNoWallet(gettextCatalog.getString('No wallets available'), true);
+ return cb();
+ }
- lodash.each($scope.wallets, function (w) {
- walletService.getStatus(w, {}, function (err, status) {
- if (err || !status) {
- $log.error(err);
- } else {
- walletsUpdated++;
- w.status = status;
+ var filteredWallets = [];
+ var index = 0;
+ var walletsUpdated = 0;
- if (!status.availableBalanceSat)
- $log.debug('No balance available in: ' + w.name);
+ 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 > minAmount) {
- filteredWallets.push(w);
+ 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 (++index == $scope.wallets.length) {
+ if (!walletsUpdated)
+ return cb('Could not update any wallet');
- if (lodash.isEmpty(filteredWallets)) {
- setNoWallet(gettextCatalog.getString('Insufficient confirmed funds'), true);
+ if (lodash.isEmpty(filteredWallets)) {
+ setNoWallet(gettextCatalog.getString('Insufficient confirmed funds'), true);
+ }
+ $scope.wallets = lodash.clone(filteredWallets);
+ return cb();
}
- $scope.wallets = lodash.clone(filteredWallets);
- return cb();
- }
- });
- });
- };
-
- $scope.getContacts = function(addr) {
- 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',
- coin: v.coin,
- displayCoin: (v.coin == 'bch'
- ? (config.bitcoinCashAlias || defaults.bitcoinCashAlias)
- : (config.bitcoinAlias || defaults.bitcoinAlias)).toUpperCase()
});
});
+ };
- return cb();
- });
- };
-
- $scope.$on("$ionicView.beforeEnter", function(event, data) {
- $scope.fromWallet = profileService.getWallet(data.stateParams.fromWalletId); // Wallet to send from
+ // Setup $scope
+ var B = data.stateParams.coin == 'bch' ? bitcoreCash : bitcore;
+ var networkName;
+ try {
+ networkName = (new B.Address(data.stateParams.toAddress)).network.name;
+ } catch(e) {
+ var message = gettextCatalog.getString('Invalid address');
+ var backText = gettextCatalog.getString('Go back');
+ var learnText = gettextCatalog.getString('Learn more');
+ popupService.showConfirm(null, message, backText, learnText, function(back) {
+ $ionicHistory.nextViewOptions({
+ disableAnimate: true,
+ historyRoot: true
+ });
+ $state.go('tabs.send').then(function() {
+ $ionicHistory.clearHistory();
+ if (!back) {
+ var url = 'https://support.bitpay.com/hc/en-us/articles/115004671663';
+ externalLinkService.open(url);
+ }
+ });
+ });
+ return;
+ }
// Grab stateParams
tx = {
- amount: parseInt(data.stateParams.amount),
+ toAmount: parseInt(data.stateParams.toAmount),
sendMax: data.stateParams.useSendMax == 'true' ? true : false,
fromWalletId: data.stateParams.fromWalletId,
toAddress: data.stateParams.toAddress,
+ displayAddress: data.stateParams.displayAddress,
+ description: data.stateParams.description,
+ paypro: data.stateParams.paypro,
+
feeLevel: configFeeLevel,
spendUnconfirmed: walletConfig.spendUnconfirmed,
// Vanity tx info (not in the real tx)
- recipientType: $scope.recipientType || null,
- toName: null,
- toEmail: null,
- toColor: null,
- network: false,
- coin: $scope.fromWallet.coin,
+ recipientType: data.stateParams.recipientType || null,
+ toName: data.stateParams.toName,
+ toEmail: data.stateParams.toEmail,
+ toColor: data.stateParams.toColor,
+ network: networkName,
+ coin: data.stateParams.coin,
txp: {},
};
@@ -182,71 +182,18 @@ angular.module('copayApp.controllers').controller('confirmController', function(
tx.feeRate = parseInt(data.stateParams.requiredFeeRate);
}
- if (tx.coin && tx.coin === 'bch') {
+ if (tx.coin && tx.coin == 'bch') {
tx.feeLevel = 'normal';
}
- var B = data.stateParams.coin === 'bch' ? bitcoreCash : bitcore;
- var networkName;
- $scope.recipientType = null;
- try {
- if (data.stateParams.toWalletId) { // There is a toWalletId, so we presume this is a wallet-to-wallet transfer
- $scope.recipientType = 'wallet'; // set transaction type to wallet-to-wallet
- $ionicLoading.show();
-
- var toWallet = profileService.getWallet(data.stateParams.toWalletId);
- tx.toColor = toWallet.color;
- tx.toName = toWallet.name;
-
- // We need an address to send to, so we ask the walletService to create a new address for the toWallet.
- walletService.getAddress(toWallet, true, function (err, addr) {
- $ionicLoading.hide();
- tx.toAddress = addr;
- networkName = (new B.Address(tx.toAddress)).network.name;
- tx.network = networkName;
- setupTx(tx);
- });
- } else { // This is a Wallet-to-address transfer
- networkName = (new B.Address(tx.toAddress)).network.name;
- tx.network = networkName;
- setupTx(tx);
- }
- } catch (e) {
- var message = gettextCatalog.getString('Invalid address');
- popupService.showAlert(null, message, function () {
- $ionicHistory.nextViewOptions({
- disableAnimate: true,
- historyRoot: true
- });
- $state.go('tabs.send').then(function () {
- $ionicHistory.clearHistory();
- });
- });
- return;
- }
- });
-
- var setupTx = function(tx) {
- if (tx.coin === 'bch') {
- tx.displayAddress = bitcoinCashJsService.readAddress(tx.toAddress).cashaddr;
- } else {
- tx.displayAddress = entry.address;
- }
-
- addressbookService.get(tx.coin+tx.toAddress, function(err, addr) { // Check if the recipient is a contact
- if (!err && addr) {
- tx.toName = addr.name;
- tx.toEmail = addr.email;
- tx.recipientType = 'contact';
- }
- });
-
// Other Scope vars
$scope.isCordova = isCordova;
+ $scope.isWindowsPhoneApp = isWindowsPhoneApp;
$scope.showAddress = false;
+
$scope.walletSelectorTitle = gettextCatalog.getString('Send from');
- setWalletSelector(tx.coin, tx.network, tx.amount, function(err) {
+ setWalletSelector(tx.coin, tx.network, tx.toAmount, function(err) {
if (err) {
return exitWithError('Could not update wallets');
}
@@ -258,9 +205,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
}
});
- $scope.displayBalanceAsFiat = walletConfig.settings.priceDisplay === 'fiat';
-
- };
+ });
function getSendMaxInfo(tx, wallet, cb) {
@@ -284,7 +229,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
return setSendError(msg);
}
- if (tx.amount > Number.MAX_SAFE_INTEGER) {
+ if (tx.toAmount > Number.MAX_SAFE_INTEGER) {
var msg = gettextCatalog.getString('Amount too big');
$log.warn(msg);
return setSendError(msg);
@@ -294,7 +239,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
txp.outputs = [{
'toAddress': tx.toAddress,
- 'amount': tx.amount,
+ 'amount': tx.toAmount,
'message': tx.description
}];
@@ -333,17 +278,14 @@ angular.module('copayApp.controllers').controller('confirmController', function(
$scope.tx = tx;
function updateAmount() {
- if (!tx.amount) return;
+ if (!tx.toAmount) return;
// Amount
- tx.amountStr = txFormatService.formatAmountStr(wallet.coin, tx.amount);
+ tx.amountStr = txFormatService.formatAmountStr(wallet.coin, tx.toAmount);
tx.amountValueStr = tx.amountStr.split(' ')[0];
tx.amountUnitStr = tx.amountStr.split(' ')[1];
- txFormatService.formatAlternativeStr(wallet.coin, tx.amount, function(v) {
- var parts = v.split(' ');
+ txFormatService.formatAlternativeStr(wallet.coin, tx.toAmount, function(v) {
tx.alternativeAmountStr = v;
- tx.alternativeAmountValueStr = parts[0];
- tx.alternativeAmountUnitStr = (parts.length > 0) ? parts[1] : '';
});
}
@@ -395,7 +337,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
}
tx.sendMaxInfo = sendMaxInfo;
- tx.amount = tx.sendMaxInfo.amount;
+ tx.toAmount = tx.sendMaxInfo.amount;
updateAmount();
ongoingProcess.set('calculatingFee', false);
$timeout(function() {
@@ -446,7 +388,7 @@ angular.module('copayApp.controllers').controller('confirmController', function(
function useSelectedWallet() {
if (!$scope.useSendMax) {
- showAmount(tx.amount);
+ showAmount(tx.toAmount);
}
$scope.onWalletSelect($scope.wallet);
@@ -455,19 +397,19 @@ angular.module('copayApp.controllers').controller('confirmController', function(
function setButtonText(isMultisig, isPayPro) {
if (isPayPro) {
- if (isCordova) {
+ if (isCordova && !isWindowsPhoneApp) {
$scope.buttonText = gettextCatalog.getString('Slide to pay');
} else {
$scope.buttonText = gettextCatalog.getString('Click to pay');
}
} else if (isMultisig) {
- if (isCordova) {
+ if (isCordova && !isWindowsPhoneApp) {
$scope.buttonText = gettextCatalog.getString('Slide to accept');
} else {
$scope.buttonText = gettextCatalog.getString('Click to accept');
}
} else {
- if (isCordova) {
+ if (isCordova && !isWindowsPhoneApp) {
$scope.buttonText = gettextCatalog.getString('Slide to send');
} else {
$scope.buttonText = gettextCatalog.getString('Click to send');
@@ -475,14 +417,13 @@ angular.module('copayApp.controllers').controller('confirmController', function(
}
};
+
$scope.toggleAddress = function() {
$scope.showAddress = !$scope.showAddress;
};
function showSendMaxWarning(wallet, sendMaxInfo) {
- var feeAlternative = '',
- msg = '';
function verifyExcludedUtxos() {
var warningMsg = [];
@@ -500,25 +441,15 @@ angular.module('copayApp.controllers').controller('confirmController', function(
return warningMsg.join('\n');
};
- feeAlternative = txFormatService.formatAlternativeStr(wallet.coin, sendMaxInfo.fee);
- if (feeAlternative) {
- msg = gettextCatalog.getString("{{feeAlternative}} will be deducted for bitcoin networking fees ({{fee}}).", {
- fee: txFormatService.formatAmountStr(wallet.coin, sendMaxInfo.fee),
- feeAlternative: feeAlternative
- });
- } else {
- msg = gettextCatalog.getString("{{fee}} will be deducted for bitcoin networking fees).", {
- fee: txFormatService.formatAmountStr(wallet.coin, sendMaxInfo.fee)
- });
- }
-
+ var msg = gettextCatalog.getString("{{fee}} will be deducted for bitcoin networking fees.", {
+ fee: txFormatService.formatAmountStr(wallet.coin, sendMaxInfo.fee)
+ });
var warningMsg = verifyExcludedUtxos();
if (!lodash.isEmpty(warningMsg))
msg += '\n' + warningMsg;
- popupService.showAlert(null, msg, function() {});
-
+ popupService.showAlert(null, msg, function() {});
};
$scope.onWalletSelect = function(wallet) {
@@ -665,7 +596,6 @@ angular.module('copayApp.controllers').controller('confirmController', function(
txConfirmNotification.subscribe(wallet, {
txid: txp.txid
});
- lastTxId = txp.txid;
}
}, onSendStatusChange);
};
@@ -692,23 +622,11 @@ angular.module('copayApp.controllers').controller('confirmController', function(
(processName == 'sendingTx' && !$scope.wallet.canSign() && !$scope.wallet.isPrivKeyExternal())
) && !isOn) {
$scope.sendStatus = 'success';
-
- if ($state.current.name === "tabs.send.confirm") { // XX SP: Otherwise all open wallets on other devices play this sound if you have been in a send flow before on that device.
- soundService.play('misc/payment_sent.mp3');
+ if (config.soundsEnabled && $scope.wallet.coin == 'bch') {
+ var audio = new Audio('misc/bch_sent.mp3');
+ audio.play();
}
-
- var channel = "ga";
- if (platformInfo.isCordova) {
- channel = "firebase";
- }
- var log = new window.BitAnalytics.LogEvent("transfer_success", [{
- "coin": $scope.wallet.coin,
- "type": "outgoing",
- "amount": $scope.amount,
- "fees": $scope.fee
- }], [channel, "adjust"]);
- window.BitAnalytics.LogEventHandlers.postEvent(log);
-
+ firebaseEventsService.logEvent('sent_bitcoin', { coin: $scope.wallet.coin });
$timeout(function() {
$scope.$digest();
}, 100);
diff --git a/src/js/controllers/create.js b/src/js/controllers/create.js
index a21053e2d..a25300a4a 100644
--- a/src/js/controllers/create.js
+++ b/src/js/controllers/create.js
@@ -1,7 +1,7 @@
'use strict';
angular.module('copayApp.controllers').controller('createController',
- function($scope, $timeout, $log, lodash, $state, $ionicScrollDelegate, $ionicHistory, profileService, configService, gettextCatalog, ledger, trezor, intelTEE, derivationPathHelper, ongoingProcess, walletService, popupService, appConfigService, pushNotificationsService, $ionicNavBarDelegate) {
+ function($scope, $rootScope, $timeout, $log, lodash, $state, $ionicScrollDelegate, $ionicHistory, profileService, configService, gettextCatalog, ledger, trezor, intelTEE, derivationPathHelper, ongoingProcess, walletService, storageService, popupService, appConfigService, pushNotificationsService, firebaseEventsService, $ionicNavBarDelegate) {
/* For compressed keys, m*73 + n*34 <= 496 */
var COPAYER_PAIR_LIMITS = {
@@ -268,7 +268,7 @@ angular.module('copayApp.controllers').controller('createController',
}, 100);
}
else {
- //firebaseEventsService.logEvent('wallet_created', { coin: opts.coin });
+ firebaseEventsService.logEvent('wallet_created', { coin: opts.coin });
$state.go('tabs.home');
}
}
diff --git a/src/js/controllers/customAmount.js b/src/js/controllers/customAmount.js
index 5d22d40fb..f6b96c22c 100644
--- a/src/js/controllers/customAmount.js
+++ b/src/js/controllers/customAmount.js
@@ -17,7 +17,7 @@ angular.module('copayApp.controllers').controller('customAmountController', func
}
$scope.$on("$ionicView.beforeEnter", function(event, data) {
- var walletId = data.stateParams.toWalletId;
+ var walletId = data.stateParams.id;
if (!walletId) {
showErrorAndBack('Error', 'No wallet selected');
@@ -53,26 +53,17 @@ angular.module('copayApp.controllers').controller('customAmountController', func
$scope.address = bchAddresses[$scope.bchAddressType];
}
- $scope.coin = $scope.wallet.coin;
- var satoshis = parseInt(data.stateParams.amount, 10);
+ $scope.coin = data.stateParams.coin;
var parsedAmount = txFormatService.parseAmount(
$scope.wallet.coin,
- satoshis,
- 'sat');
+ data.stateParams.amount,
+ data.stateParams.currency);
// Amount in USD or BTC
var amount = parsedAmount.amount;
var currency = parsedAmount.currency;
$scope.amountUnitStr = parsedAmount.amountUnitStr;
- configService.whenAvailable(function (config) {
- $scope.selectedPriceDisplay = config.wallet.settings.priceDisplay;
-
- $timeout(function () {
- $scope.$apply();
- });
- });
-
if (currency != 'BTC' && currency != 'BCH') {
// Convert to BTC or BCH
var config = configService.getSync().wallet.settings;
diff --git a/src/js/controllers/shareApp.js b/src/js/controllers/feedback/complete.js
similarity index 77%
rename from src/js/controllers/shareApp.js
rename to src/js/controllers/feedback/complete.js
index ba3fdedff..905880901 100644
--- a/src/js/controllers/shareApp.js
+++ b/src/js/controllers/feedback/complete.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.controllers').controller('shareAppController', function($scope, $stateParams, $timeout, $log, $ionicHistory, $state, $ionicNavBarDelegate, $ionicConfig, platformInfo, configService, storageService, lodash, appConfigService, gettextCatalog) {
+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
@@ -57,8 +57,28 @@ angular.module('copayApp.controllers').controller('shareAppController', function
$ionicConfig.views.swipeBackEnabled(true);
});
+ $scope.$on("$ionicView.enter", function() {
+ if (!$scope.fromSettings)
+ $ionicConfig.views.swipeBackEnabled(false);
+ });
+
$scope.$on("$ionicView.beforeEnter", function(event, data) {
- $ionicNavBarDelegate.showBackButton(true);
+ $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;
@@ -113,4 +133,13 @@ angular.module('copayApp.controllers').controller('shareAppController', function
}
}, 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
new file mode 100644
index 000000000..6ae485a3a
--- /dev/null
+++ b/src/js/controllers/feedback/rateApp.js
@@ -0,0 +1,53 @@
+'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 = defaults.rateApp.bitcoincom.android;
+ if (isIOS)
+ url = defaults.rateApp.bitcoincom.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
new file mode 100644
index 000000000..abc109796
--- /dev/null
+++ b/src/js/controllers/feedback/rateCard.js
@@ -0,0 +1,60 @@
+'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
new file mode 100644
index 000000000..23fb0ea59
--- /dev/null
+++ b/src/js/controllers/feedback/send.js
@@ -0,0 +1,102 @@
+'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/modals/search.js b/src/js/controllers/modals/search.js
index 439df891d..3d5ae366e 100644
--- a/src/js/controllers/modals/search.js
+++ b/src/js/controllers/modals/search.js
@@ -1,6 +1,6 @@
'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, externalLinkService, bitcoinCashJsService) {
+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;
@@ -21,8 +21,6 @@ angular.module('copayApp.controllers').controller('searchController', function($
function filter(search) {
$scope.filteredTxHistory = [];
- $scope.searchTermIsAddress = false;
- $scope.searchTermIsTxId = false;
function computeSearchableString(tx) {
var addrbook = '';
@@ -31,19 +29,6 @@ angular.module('copayApp.controllers').controller('searchController', function($
var message = tx.message ? tx.message : '';
var comment = tx.note ? tx.note.body : '';
var addressTo = tx.addressTo ? tx.addressTo : '';
-
- if ($scope.wallet.coin === 'bch') {
-
- /**
- * For each address
- * I translate the legacy address and add in the searchable string the 3 kind of addresses
- */
- lodash.each(tx.outputs, function(output) {
- var addr = bitcoinCashJsService.translateAddresses(output.address);
- addressTo += addr.legacy + addr.bitpay + 'bitcoincash:' + addr.cashaddr
- });
- }
-
var txid = tx.txid ? tx.txid : '';
return ((tx.amountStr + message + addressTo + addrbook + searchableDate + comment + txid).toString()).toLowerCase();
}
@@ -65,19 +50,8 @@ angular.module('copayApp.controllers').controller('searchController', function($
return lodash.includes(tx.searcheableString, search.toLowerCase());
});
- if (search) {
- if ((search.indexOf('bitcoincash:') === 0 || search[0] === 'C' || search[0] === 'H' || search[0] === 'p' || search[0] === 'q') && search.replace('bitcoincash:', '').length === 42) { // CashAddr
- $scope.searchTermIsAddress = true;
- } else if ((search[0] === "1" || search[0] === "3" || search.substring(0, 3) === "bc1") && search.length >= 26 && search.length <= 35) { // Legacy Addresses
- $scope.searchTermIsAddress = true;
- } else if (search.length === 64) {
- $scope.searchTermIsTxId = true;
- }
- }
-
if ($scope.filteredTxHistory.length > HISTORY_SHOW_LIMIT) $scope.txHistoryShowMore = true;
else $scope.txHistoryShowMore = false;
-
return $scope.filteredTxHistory;
};
@@ -103,14 +77,4 @@ angular.module('copayApp.controllers').controller('searchController', function($
$scope.txHistoryShowMore = $scope.filteredTxHistory.length > $scope.txHistorySearchResults.length;
};
- $scope.searchOnBlockchain = function(searchTerm) {
- var url = 'https://explorer.bitcoin.com/'+$scope.wallet.coin+'/search/' + searchTerm;
- var optIn = true;
- var title = null;
- var message = gettextCatalog.getString('Search on Explorer.Bitcoin.com');
- var okText = gettextCatalog.getString('Open Explorer');
- var cancelText = gettextCatalog.getString('Go Back');
- externalLinkService.open(url, optIn, title, message, okText, cancelText);
- };
-
});
diff --git a/src/js/controllers/nextStepsController.js b/src/js/controllers/nextStepsController.js
index 6d8021f08..48ce15a5f 100644
--- a/src/js/controllers/nextStepsController.js
+++ b/src/js/controllers/nextStepsController.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.controllers').controller('nextStepsController', function($scope, nextStepsService, $ionicScrollDelegate, $timeout, platformInfo, configService, externalLinkService) {
+angular.module('copayApp.controllers').controller('nextStepsController', function($scope, nextStepsService, $ionicScrollDelegate, $timeout, configService) {
$scope.hide = false;
@@ -22,6 +22,6 @@ angular.module('copayApp.controllers').controller('nextStepsController', functio
};
$scope.open = function(url) {
- externalLinkService.open(url, false)
+ window.open(url, '_system');
}
});
diff --git a/src/js/controllers/onboarding/tour.js b/src/js/controllers/onboarding/tour.js
index f6cf0afe2..47261006b 100644
--- a/src/js/controllers/onboarding/tour.js
+++ b/src/js/controllers/onboarding/tour.js
@@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.controllers').controller('tourController',
- function ($scope, $state, $log, $timeout, $filter, ongoingProcess, configService, profileService, rateService, popupService, gettextCatalog, lodash, startupService, storageService, uxLanguage, walletService, $q) {
+ function($scope, $state, $log, $timeout, $filter, ongoingProcess, profileService, rateService, popupService, gettextCatalog, startupService, storageService, walletService, $q) {
$scope.data = {
index: 0
@@ -46,90 +46,62 @@ angular.module('copayApp.controllers').controller('tourController',
creatingWallet = true;
ongoingProcess.set('creatingWallet', true);
$timeout(function() {
- uxLanguage.init(function(lang) {
- var rateCode = uxLanguage.getRateCode(lang);
- console.log("When Available: rateService");
- rateService.whenAvailable(function() {
- var alternatives = rateService.listAlternatives(true);
+ profileService.createDefaultWallet(function(err, walletClients) {
+ if (err) {
+ $log.warn(err);
- var newAltCurrency = lodash.find(alternatives, {
- 'isoCode': rateCode
+ 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 bchWallet = walletClients[0];
+ var btcWallet = walletClients[1];
+ var bchWalletId = bchWallet.credentials.walletId;
+ var btcWalletId = btcWallet.credentials.walletId;
+
+ function createAddressPromise(wallet) {
+ return $q(function(resolve, reject) {
+ walletService.getAddress(wallet, true, function(e, addr) {
+ if (e) reject(e);
+ resolve(addr);
});
-
- configService.whenAvailable(function(config) {
- var opts = {
- wallet: {
- settings: {
- alternativeName: newAltCurrency.name,
- alternativeIsoCode: newAltCurrency.isoCode,
- }
- }
- };
- configService.set(opts, function(err) {
- if (err) $log.warn(err);
-
- profileService.createDefaultWallet(function(err, walletClients) {
- 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 bchWallet = walletClients[0];
- var btcWallet = walletClients[1];
- var bchWalletId = bchWallet.credentials.walletId;
- var btcWalletId = btcWallet.credentials.walletId;
-
- function createAddressPromise(wallet) {
- return $q(function (resolve, reject) {
- walletService.getAddress(wallet, true, function (e, addr) {
- if (e) reject(e);
- resolve(addr);
- });
- });
- }
-
- function goToCollectEmail() {
- $state.go('onboarding.collectEmail', {
- bchWalletId: bchWalletId,
- btcWalletId: btcWalletId
- });
- }
-
- var bchAddressPromise = createAddressPromise(bchWallet);
- var btcAddressPromise = createAddressPromise(btcWallet);
- ongoingProcess.set('generatingNewAddress', true);
-
- $q.all([bchAddressPromise, btcAddressPromise]).then(function (addresses) {
- ongoingProcess.set('generatingNewAddress', false);
- $state.go('tabs.home');
- }, function (e) {
- ongoingProcess.set('generatingNewAddress', false);
- $log.warn(e);
- popupService.showAlert(gettextCatalog.getString('Error'), e);
- $state.go('tabs.home');
- });
- });
- });
- });
- $log.debug('Setting default currency : ' + newAltCurrency);
});
- })
- }, 300);
- };
- });
+ }
+
+ function goToCollectEmail() {
+ $state.go('onboarding.collectEmail', {
+ bchWalletId: bchWalletId,
+ btcWalletId: btcWalletId
+ });
+ }
+
+ var bchAddressPromise = createAddressPromise(bchWallet);
+ var btcAddressPromise = createAddressPromise(btcWallet);
+ ongoingProcess.set('generatingNewAddress', true);
+
+ $q.all([bchAddressPromise, btcAddressPromise]).then(function(addresses) {
+ ongoingProcess.set('generatingNewAddress', false);
+ $state.go('tabs.home');
+ }, function(e) {
+ ongoingProcess.set('generatingNewAddress', false);
+ $log.warn(e);
+ popupService.showAlert(gettextCatalog.getString('Error'), e);
+ $state.go('tabs.home');
+ });
+ });
+ }, 300);
+ };
+ });
diff --git a/src/js/controllers/preferences.js b/src/js/controllers/preferences.js
index 2053e32a5..b71b23b36 100644
--- a/src/js/controllers/preferences.js
+++ b/src/js/controllers/preferences.js
@@ -59,7 +59,7 @@ angular.module('copayApp.controllers').controller('preferencesController',
};
$scope.openWikiSpendingPassword = function() {
- var url = 'https://walletsupport.bitcoin.com/article/129/what-does-the-spending-password-do-';
+ var url = 'https://github.com/bitpay/copay/wiki/COPAY---FAQ#what-the-spending-password-does';
var optIn = true;
var title = null;
var message = gettextCatalog.getString('Read more in our Wiki');
diff --git a/src/js/controllers/preferencesAbout.js b/src/js/controllers/preferencesAbout.js
index 463e92030..a7c756cce 100644
--- a/src/js/controllers/preferencesAbout.js
+++ b/src/js/controllers/preferencesAbout.js
@@ -4,7 +4,7 @@ angular.module('copayApp.controllers').controller('preferencesAbout',
function($scope, $window, appConfigService, gettextCatalog, externalLinkService, $ionicNavBarDelegate) {
$scope.title = gettextCatalog.getString('About') + ' ' + appConfigService.nameCase;
- $scope.version = $window.fullVersion;
+ $scope.version = $window.version;
$scope.commitHash = $window.commitHash;
$scope.openExternalLink = function() {
diff --git a/src/js/controllers/preferencesBwsUrl.js b/src/js/controllers/preferencesBwsUrl.js
index 907628551..0c6be93ba 100644
--- a/src/js/controllers/preferencesBwsUrl.js
+++ b/src/js/controllers/preferencesBwsUrl.js
@@ -16,7 +16,7 @@ angular.module('copayApp.controllers').controller('preferencesBwsUrlController',
};
$scope.resetDefaultUrl = function() {
- $scope.bwsurl.value = ($scope.wallet.coin === 'btc') ? defaults.bws.url : defaults.bwscash.url;
+ $scope.bwsurl.value = defaults.bws.url;
};
$scope.save = function() {
@@ -25,15 +25,15 @@ angular.module('copayApp.controllers').controller('preferencesBwsUrlController',
switch ($scope.bwsurl.value) {
case 'prod':
case 'production':
- bws = ($scope.wallet.coin === 'btc') ? defaults.bws.url : defaults.bwscash.url;
+ bws = 'https://bws.bitcoin.com/bws/api'
break;
case 'sta':
case 'staging':
- bws = 'https://bws-staging.b-pay.net/bws/api';
+ bws = 'https://bws-staging.b-pay.net/bws/api'
break;
case 'loc':
case 'local':
- bws = 'http://localhost:3232/bws/api';
+ bws = 'http://localhost:3232/bws/api'
break;
};
if (bws) {
diff --git a/src/js/controllers/preferencesLanguage.js b/src/js/controllers/preferencesLanguage.js
index 1286e5cd4..0f8442587 100644
--- a/src/js/controllers/preferencesLanguage.js
+++ b/src/js/controllers/preferencesLanguage.js
@@ -6,7 +6,7 @@ angular.module('copayApp.controllers').controller('preferencesLanguageController
$scope.availableLanguages = uxLanguage.getLanguages();
$scope.openExternalLink = function() {
- var url = 'https://crowdin.com/project/bitcoincom-wallet';
+ 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!');
diff --git a/src/js/controllers/preferencesNotifications.js b/src/js/controllers/preferencesNotifications.js
index a9a833ff7..7351a9f23 100644
--- a/src/js/controllers/preferencesNotifications.js
+++ b/src/js/controllers/preferencesNotifications.js
@@ -75,15 +75,6 @@ angular.module('copayApp.controllers').controller('preferencesNotificationsContr
};
emailService.updateEmail(opts);
-
- var channel = "ga";
- if (platformInfo.isCordova) {
- channel = "firebase";
- }
- var log = new window.BitAnalytics.LogEvent("settings_email_notification_toggle", [{
- "toggle": $scope.emailNotifications.value
- }], [channel]);
- window.BitAnalytics.LogEventHandlers.postEvent(log);
};
$scope.soundNotificationsChange = function() {
diff --git a/src/js/controllers/review.controller.js b/src/js/controllers/review.controller.js
deleted file mode 100644
index ae30382fb..000000000
--- a/src/js/controllers/review.controller.js
+++ /dev/null
@@ -1,974 +0,0 @@
-'use strict';
-
-(function () {
-
-angular
- .module('copayApp.controllers')
- .controller('reviewController', reviewController);
-
- function reviewController(addressbookService, bitcoinCashJsService, bitcore, bitcoreCash, bwcError, clipboardService, configService, feeService, gettextCatalog, $interval, $ionicHistory, $ionicModal, ionicToast, lodash, $log, ongoingProcess, platformInfo, popupService, profileService, $scope, sendFlowService, shapeshiftService, soundService, $state, $timeout, txConfirmNotification, txFormatService, walletService) {
- var vm = this;
-
- vm.buttonText = '';
- vm.destination = {
- address: '',
- balanceAmount: '',
- balanceCurrency: '',
- coin: '',
- color: '',
- currency: '',
- currencyColor: '',
- kind: '', // 'address', 'contact', 'wallet'
- name: ''
- };
- vm.displayAddress = '';
- vm.feeCrypto = '';
- vm.feeFiat = '';
- vm.fiatCurrency = '';
- vm.feeIsHigh = false;
- vm.feeLessThanACent = false;
- vm.isCordova = platformInfo.isCordova;
- vm.memo = '';
- vm.notReadyMessage = '';
- vm.origin = {
- balanceAmount: '',
- balanceCurrency: '',
- currency: '',
- currencyColor: '',
- };
- vm.originWallet = null;
- vm.paymentExpired = false;
- vm.personalNotePlaceholder = gettextCatalog.getString('Enter text here');
- vm.primaryAmount = '';
- vm.primaryCurrency = '';
- vm.usingMerchantFee = false;
- vm.readyToSend = false;
- vm.remainingTimeStr = '';
- vm.secondaryAmount = '';
- vm.secondaryCurrency = '';
- vm.sendingTitle = gettextCatalog.getString('You are sending');
- vm.sendStatus = '';
- vm.showAddress = true;
- vm.thirdParty = false;
- vm.wallet = null;
- vm.memoExpanded = false;
-
- // Functions
- vm.goBack = goBack;
- vm.onSuccessConfirm = onSuccessConfirm;
- vm.onShareTransaction = onShareTransaction;
-
- var sendFlowData;
- var config = null;
- var coin = '';
- var countDown = null;
- var defaults = {};
- var usingCustomFee = false;
- var usingMerchantFee = false;
- var destinationWalletId = '';
- var lastTxId = '';
- var originWalletId = '';
- var priceDisplayIsFiat = true;
- var satoshis = null;
- var toAddress = '';
- var tx = {};
- var txPayproData = null;
- var unitFromSat = 0;
-
- var FEE_TOO_HIGH_LIMIT_PERCENTAGE = 15;
-
- $scope.$on("$ionicView.beforeEnter", onBeforeEnter);
-
-
- function onBeforeEnter(event, data) {
- console.log('review onBeforeEnter sendflow ', sendFlowService.state);
- // Reset from last time
- vm.memo = '';
-
- defaults = configService.getDefaults();
- sendFlowData = sendFlowService.state.getClone();
- originWalletId = sendFlowData.fromWalletId;
- if (typeof sendFlowData.amount === 'string') {
- satoshis = parseInt(sendFlowData.amount, 10);
- } else {
- satoshis = sendFlowData.amount;
- }
- toAddress = sendFlowData.toAddress;
- destinationWalletId = sendFlowData.toWalletId;
-
- vm.displayAddress = sendFlowData.displayAddress;
- vm.originWallet = profileService.getWallet(originWalletId);
- vm.origin.currency = vm.originWallet.coin.toUpperCase();
- coin = vm.originWallet.coin;
-
- if (sendFlowData.thirdParty) {
- vm.thirdParty = sendFlowData.thirdParty;
- switch (vm.thirdParty.id) {
- case 'shapeshift':
- initShapeshift(function (err) {
- if (err) {
- // Error stop here
- ongoingProcess.set('connectingShapeshift', false);
- popupService.showAlert(gettextCatalog.getString('Shapeshift Error'), err.toString(), function () {
- $ionicHistory.goBack();
- });
- } else {
- _next(data);
- }
- });
- break;
- case 'bip70':
- initBip70();
- default:
- _next(data);
- break;
- }
- } else {
- _next(data);
- }
-
- function _next() {
- configService.get(function onConfig(err, configCache) {
- if (err) {
- $log.err('Error getting config.', err);
- } else {
- config = configCache;
- priceDisplayIsFiat = config.wallet.settings.priceDisplay === 'fiat';
- vm.origin.currencyColor = (vm.originWallet.coin === 'btc' ? defaults.bitcoinWalletColor : defaults.bitcoinCashWalletColor);
- console.log("coin", vm.originWallet.coin, vm.origin.currencyColor, config.bitcoinWalletColor, vm.originWallet.coin === 'btc');
- unitFromSat = 1 / config.wallet.settings.unitToSatoshi;
- }
- updateSendAmounts();
- getOriginWalletBalance(vm.originWallet);
- handleDestinationAsAddress(toAddress, coin);
- handleDestinationAsWallet(sendFlowData.toWalletId);
- createVanityTransaction(data);
- });
- }
- }
-
- vm.approve = function() {
-
- if (!tx || !vm.originWallet) return;
-
- if (vm.paymentExpired) {
- popupService.showAlert(null, gettextCatalog.getString('This bitcoin payment request has expired.', function () {
- $ionicHistory.goBack();
- }));
- vm.sendStatus = '';
- $timeout(function() {
- $scope.$apply();
- });
- return;
- }
-
- ongoingProcess.set('creatingTx', true, statusChangeHandler);
- getTxp(lodash.clone(tx), vm.originWallet, false, function(err, txp) {
- ongoingProcess.set('creatingTx', false, statusChangeHandler);
- if (err) return;
-
- // confirm txs for more that 20usd, if not spending/touchid is enabled
- function confirmTx(cb) {
- if (walletService.isEncrypted(vm.originWallet))
- return cb();
-
- var amountUsd = parseFloat(txFormatService.formatToUSD(vm.originWallet.coin, txp.amount));
- return cb();
- };
-
- function publishAndSign() {
- if (!vm.originWallet.canSign() && !vm.originWallet.isPrivKeyExternal()) {
- $log.info('No signing proposal: No private key');
-
- return walletService.onlyPublish(vm.originWallet, txp, function(err) {
- if (err) setSendError(err);
- }, statusChangeHandler);
- }
-
- walletService.publishAndSign(vm.originWallet, txp, function(err, txp) {
- if (err) return setSendError(err);
- if (config.confirmedTxsNotifications && config.confirmedTxsNotifications.enabled) {
- txConfirmNotification.subscribe(vm.originWallet, {
- txid: txp.txid
- });
- lastTxId = txp.txid;
- }
- }, statusChangeHandler);
- };
-
- confirmTx(function(nok) {
- if (nok) {
- vm.sendStatus = '';
- $timeout(function() {
- $scope.$apply();
- });
- return;
- }
- publishAndSign();
- });
- });
- };
-
- vm.chooseFeeLevel = function(tx, wallet) {
-
- if (wallet.coin == 'bch') return;
- if (usingMerchantFee) return;
-
- var scope = $rootScope.$new(true);
- scope.network = tx.network;
- scope.feeLevel = tx.feeLevel;
- scope.noSave = true;
- scope.coin = vm.originWallet.coin;
-
- 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, vm.originWallet, {
- clearCache: true,
- dryRun: true
- }, function() {});
- };
- };
-
- function createVanityTransaction(data) {
- console.log('createVanityTransaction()');
- var configFeeLevel = config.wallet.settings.feeLevel ? config.wallet.settings.feeLevel : 'normal';
-
- // Grab stateParams
- tx = {
- amount: parseInt(sendFlowData.amount),
- sendMax: sendFlowData.sendMax,
- fromWalletId: sendFlowData.fromWalletId,
- toAddress: sendFlowData.toAddress,
- paypro: txPayproData,
-
- feeLevel: configFeeLevel,
- spendUnconfirmed: config.wallet.spendUnconfirmed,
-
- // Vanity tx info (not in the real tx)
- recipientType: vm.destination.kind || null,
- toName: vm.destination.name || null,
- toEmail: vm.destination.email || null,
- toColor: vm.destination.color || null,
- network: false,
- coin: vm.originWallet.coin,
- txp: {},
- };
-
-
- if (data.stateParams.requiredFeeRate) {
- vm.usingMerchantFee = true;
- tx.feeRate = parseInt(data.stateParams.requiredFeeRate);
- }
-
- if (tx.coin && tx.coin === 'bch') {
- tx.feeLevel = 'normal';
- }
-
- var B = tx.coin === 'bch' ? bitcoreCash : bitcore;
- var networkName;
- try {
- if (vm.destination.kind === 'wallet') { // This is a wallet-to-wallet transfer
- ongoingProcess.set('generatingNewAddress', true);
- var toWallet = profileService.getWallet(destinationWalletId);
-
- // We need an address to send to, so we ask the walletService to create a new address for the toWallet.
- console.log('Getting address for wallet...');
- walletService.getAddress(toWallet, true, function onWalletAddress(err, addr) {
- console.log('getAddress cb called', err);
- ongoingProcess.set('generatingNewAddress', false);
- tx.toAddress = addr;
- networkName = (new B.Address(tx.toAddress)).network.name;
- tx.network = networkName;
- console.log('calling setupTx() for wallet.');
- setupTx(tx);
- });
- } else { // This is a Wallet-to-address transfer
- networkName = (new B.Address(tx.toAddress)).network.name;
- tx.network = networkName;
- console.log('calling setupTx() for address.');
- setupTx(tx);
- }
- } catch (e) {
- console.error('Error setting up tx', e);
- var message = gettextCatalog.getString('Invalid address');
- popupService.showAlert(null, message, function () {
- $ionicHistory.nextViewOptions({
- disableAnimate: true,
- historyRoot: true
- });
- $state.go('tabs.send').then(function () {
- $ionicHistory.clearHistory();
- });
- });
- return;
- }
- }
- function getOriginWalletBalance(originWallet) {
- var balanceText = getWalletBalanceDisplayText(vm.originWallet);
- vm.origin.balanceAmount = balanceText.amount;
- vm.origin.balanceCurrency = balanceText.currency;
- }
-
- 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.amount > 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.amount,
- 'message': vm.memo
- }];
-
- if (tx.sendMaxInfo) {
- txp.inputs = tx.sendMaxInfo.inputs;
- txp.fee = tx.sendMaxInfo.fee;
- } else {
- if (usingCustomFee || usingMerchantFee) {
- txp.feePerKb = tx.feeRate;
- } else txp.feeLevel = tx.feeLevel;
- }
-
- txp.message = vm.memo;
-
- 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 getWalletBalanceDisplayText(wallet) {
- var balanceCryptoAmount = '';
- var balanceCryptoCurrencyCode = '';
- var balanceFiatAmount = '';
- var balanceFiatCurrency = '';
- var displayAmount = '';
- var displayCurrency = '';
-
- var walletStatus = null;
- if (wallet.status && wallet.status.isValid) {
- walletStatus = wallet.status;
- } else if (wallet.cachedStatus.isValid) {
- walletStatus = wallet.cachedStatus;
- }
-
- if (walletStatus) {
- var cryptoBalanceParts = walletStatus.spendableBalanceStr.split(' ');
- balanceCryptoAmount = cryptoBalanceParts[0];
- balanceCryptoCurrencyCode = cryptoBalanceParts.length > 1 ? cryptoBalanceParts[1] : '';
-
- if (walletStatus.alternativeBalanceAvailable) {
- balanceFiatAmount = walletStatus.spendableBalanceAlternative;
- balanceFiatCurrency = walletStatus.alternativeIsoCode;
- }
- }
-
- if (priceDisplayIsFiat) {
- displayAmount = balanceFiatAmount ? balanceFiatAmount : balanceCryptoAmount;
- displayCurrency = balanceFiatAmount ? balanceFiatCurrency : balanceCryptoCurrencyCode;
- } else {
- displayAmount = balanceCryptoAmount;
- displayCurrency = balanceCryptoCurrencyCode;
- }
-
- return {
- amount: displayAmount,
- currency: displayCurrency
- };
- }
-
- function goBack() {
- sendFlowService.router.goBack();
- }
-
- function handleDestinationAsAddress(address, originCoin) {
- if (!address) {
- return;
- }
-
- // Check if the recipient is a contact
- addressbookService.get(originCoin + address, function(err, contact) {
- if (!err && contact) {
- handleDestinationAsAddressOfContact(contact);
- } else {
- if (originCoin === 'bch') {
- vm.destination.address = bitcoinCashJsService.readAddress(address).cashaddr;
- } else {
- vm.destination.address = address;
- }
- vm.destination.kind = 'address';
- }
- });
-
- }
-
- function handleDestinationAsAddressOfContact(contact) {
- vm.destination.kind = 'contact';
- vm.destination.name = contact.name;
- vm.destination.email = contact.email;
- vm.destination.color = contact.coin === 'btc' ? defaults.bitcoinWalletColor : defaults.bitcoinCashWalletColor;
- vm.destination.currency = contact.coin.toUpperCase();
- vm.destination.currencyColor = vm.destination.color;
- }
-
- function handleDestinationAsWallet(walletId) {
- destinationWalletId = walletId;
- if (!destinationWalletId) {
- return;
- }
-
- var destinationWallet = profileService.getWallet(destinationWalletId);
- vm.destination.coin = destinationWallet.coin;
- vm.destination.color = destinationWallet.color;
- vm.destination.currency = destinationWallet.coin.toUpperCase();
- vm.destination.kind = 'wallet';
- vm.destination.name = destinationWallet.name;
-
- if (defaults) {
- vm.destination.currencyColor = vm.destination.coin === 'btc' ? defaults.bitcoinWalletColor : defaults.bitcoinCashWalletColor;
- }
-
- var balanceText = getWalletBalanceDisplayText(destinationWallet);
- vm.destination.balanceAmount = balanceText.amount;
- vm.destination.balanceCurrency = balanceText.currency;
- }
-
- function initBip70() {
- vm.sendingTitle = gettextCatalog.getString('You are paying');
- vm.memo = vm.thirdParty.memo;
- vm.memoExpanded = !!vm.memo;
- vm.destination.name = vm.thirdParty.name;
-
- txPayproData = {
- caTrusted: vm.thirdParty.caTrusted,
- domain: vm.thirdParty.domain,
- expires: vm.thirdParty.expires,
- toAddress: toAddress,
- url: vm.thirdParty.url,
- verified: vm.thirdParty.verified,
- };
- }
-
- function initShapeshift(cb) {
- vm.sendingTitle = gettextCatalog.getString('You are shifting');
- if (!vm.thirdParty.data) {
- vm.thirdParty.data = {};
- }
-
- var toWallet = profileService.getWallet(destinationWalletId);
- vm.destination.name = toWallet.name;
- vm.destination.color = toWallet.color;
- vm.destination.currency = toWallet.coin.toUpperCase();
-
-
- ongoingProcess.set('connectingShapeshift', true);
- walletService.getAddress(vm.originWallet, false, function onReturnWalletAddress(err, returnAddr) {
- if (err) {
- return cb(err);
- }
- walletService.getAddress(toWallet, false, function onWithdrawalWalletAddress(err, withdrawalAddr) {
- if (err) {
- return cb(err);
- }
-
- // Need to use the correct service to do it.
- var amount = parseFloat(satoshis / 100000000);
-
- shapeshiftService.shiftIt(vm.originWallet.coin, toWallet.coin, withdrawalAddr, returnAddr, amount, function onShiftIt(err, shapeshiftData) {
- if (err) {
- return cb(err);
- } else {
- vm.destination.kind = 'shapeshift';
- vm.destination.address = toAddress;
- tx.toAddress = shapeshiftData.toAddress;
- vm.memo = 'ShapeShift Order:\nhttps://www.shapeshift.io/#/status/' + shapeshiftData.orderId;
- vm.memoExpanded = !!vm.memo;
- ongoingProcess.set('connectingShapeshift', false);
- cb();
- }
- });
- });
- });
- }
-
- function onShareTransaction() {
- var explorerTxUrl = 'https://explorer.bitcoin.com/' + tx.coin + '/tx/' + lastTxId;
- if (platformInfo.isCordova) {
- var text = gettextCatalog.getString('Take a look at this Bitcoin Cash transaction here: ') + explorerTxUrl;
- if (coin === 'btc') {
- text = gettextCatalog.getString('Take a look at this Bitcoin transaction here: ') + explorerTxUrl;
- }
- window.plugins.socialsharing.share(text, null, null, null);
- } else {
- ionicToast.show(gettextCatalog.getString('Copied to clipboard'), 'bottom', false, 3000);
- clipboardService.copyToClipboard(explorerTxUrl);
- }
-
- }
-
- function startExpirationTimer(expirationTime) {
- vm.paymentExpired = false;
- setExpirationTime();
-
- countDown = $interval(function() {
- setExpirationTime();
- }, 1000);
-
- function setExpirationTime() {
- console.log('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;
- vm.remainingTimeStr = m + ":" + ('0' + s).slice(-2);
- };
-
- function setExpiredValues() {
- vm.paymentExpired = true;
- vm.remainingTimeStr = gettextCatalog.getString('Expired');
- vm.readyToSend = false;
- if (countDown) $interval.cancel(countDown);
- $timeout(function() {
- $scope.$apply();
- });
- };
- };
-
- function updateSendAmounts() {
- if (typeof satoshis !== 'number') {
- return;
- }
-
- var cryptoAmount = '';
- var cryptoCurrencyCode = '';
- var amountStr = txFormatService.formatAmountStr(coin, satoshis);
- if (amountStr) {
- var amountParts = amountStr.split(' ');
- cryptoAmount = amountParts[0];
- cryptoCurrencyCode = amountParts.length > 1 ? amountParts[1] : '';
- }
- // Want to avoid flashing of amount strings so do all formatting after this has returned.
- txFormatService.formatAlternativeStr(coin, satoshis, function(v) {
- if (!v) {
- vm.primaryAmount = cryptoAmount;
- vm.primaryCurrency = cryptoCurrencyCode;
- vm.secondaryAmount = '';
- vm.secondaryCurrency = '';
- return;
- }
- vm.secondaryAmount = vm.primaryAmount;
- vm.secondaryCurrency = vm.primaryCurrency;
-
- var fiatParts = v.split(' ');
- var fiatAmount = fiatParts[0];
- var fiatCurrency = fiatParts.length > 1 ? fiatParts[1] : '';
-
- if (priceDisplayIsFiat) {
- vm.primaryAmount = fiatAmount;
- vm.primaryCurrency = fiatCurrency;
- vm.secondaryAmount = cryptoAmount;
- vm.secondaryCurrency = cryptoCurrencyCode;
- } else {
- vm.primaryAmount = cryptoAmount;
- vm.primaryCurrency = cryptoCurrencyCode;
- vm.secondaryAmount = fiatAmount;
- vm.secondaryCurrency = fiatCurrency;
- }
- });
- }
-
- function onSuccessConfirm() {
- vm.sendStatus = '';
- $ionicHistory.nextViewOptions({
- disableAnimate: true,
- historyRoot: true
- });
- $state.go('tabs.send').then(function() {
- $ionicHistory.clearHistory();
- $state.transitionTo('tabs.home');
- });
- };
-
- function setButtonText(isMultisig, isPayPro) {
- if (isPayPro) {
- if (vm.isCordova) {
- vm.buttonText = gettextCatalog.getString('Slide to pay');
- } else {
- vm.buttonText = gettextCatalog.getString('Click to pay');
- }
- } else if (isMultisig) {
- if (vm.isCordova) {
- vm.buttonText = gettextCatalog.getString('Slide to accept');
- } else {
- vm.buttonText = gettextCatalog.getString('Click to accept');
- }
- } else {
- if (vm.isCordova) {
- vm.buttonText = gettextCatalog.getString('Slide to send');
- } else {
- vm.buttonText = gettextCatalog.getString('Click to send');
- }
- }
- }
-
- function setNotReady(msg, criticalError) {
- vn.readyToSend = false;
- vm.notReadyMessage = msg;
- $scope.criticalError = criticalError;
- $log.warn('Not ready to make the payment:' + msg);
- $timeout(function() {
- $scope.$apply();
- });
- };
-
- function setSendError(msg) {
- $scope.sendStatus = '';
- vm.readyToSend = false;
- $timeout(function() {
- $scope.$apply();
- });
- popupService.showAlert(gettextCatalog.getString('Error at confirm'), bwcError.msg(msg), function () {
- $ionicHistory.goBack();
- });
- };
-
- function setupTx(tx) {
- if (tx.coin === 'bch') {
- tx.displayAddress = bitcoinCashJsService.readAddress(tx.toAddress).cashaddr;
- } else {
- tx.displayAddress = tx.toAddress;
- }
-
- addressbookService.get(tx.coin+tx.toAddress, function(err, addr) { // Check if the recipient is a contact
- if (!err && addr) {
- tx.toName = addr.name;
- tx.toEmail = addr.email;
- tx.recipientType = 'contact';
- }
- });
-
- vm.showAddress = false;
-
-
- setButtonText(vm.originWallet.credentials.m > 1, !!tx.paypro);
-
- if (tx.paypro)
- startExpirationTimer(tx.paypro.expires);
-
- popupService.showConfirm(null, 'Do you want this transaction to be sent without a fee?', 'Yes', 'No', function(ok) {
- if(ok){
- tx.feeRate = 0;
- // tx.feeLevel = 'free';
- usingCustomFee = true;
- }
- updateTx(tx, vm.originWallet, {
- dryRun: true
- }, function(err) {
- $timeout(function() {
- $scope.$apply();
- }, 10);
-
- });
- });
-
-
-
- // setWalletSelector(tx.coin, tx.network, tx.amount, function(err) {
- // if (err) {
- // return exitWithError('Could not update wallets');
- // }
- //
- // if (vm.wallets.length > 1) {
- // vm.showWalletSelector();
- // } else if (vm.wallets.length) {
- // setWallet(vm.wallets[0], tx);
- // }
- // });
- }
-
- function showSendMaxWarning(wallet, sendMaxInfo) {
- var feeAlternative = '',
- msg = '';
-
- 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(wallet.coin, 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(vm.originWallet.coin, sendMaxInfo.amountAboveMaxSize)
- }));
- }
- return warningMsg.join('\n');
- };
-
- feeAlternative = txFormatService.formatAlternativeStr(vm.originWallet.coin, sendMaxInfo.fee);
- if (feeAlternative) {
- msg = gettextCatalog.getString("{{feeAlternative}} will be deducted for bitcoin networking fees ({{fee}}).", {
- fee: txFormatService.formatAmountStr(vm.originWallet.coin, sendMaxInfo.fee),
- feeAlternative: feeAlternative
- });
- } else {
- msg = gettextCatalog.getString("{{fee}} will be deducted for bitcoin networking fees).", {
- fee: txFormatService.formatAmountStr(vm.originWallet.coin, sendMaxInfo.fee)
- });
- }
-
- var warningMsg = verifyExcludedUtxos();
-
- if (!lodash.isEmpty(warningMsg))
- msg += '\n' + warningMsg;
-
- popupService.showAlert(null, msg, function() {});
- //popupService.showConfirm(null, msg, null, null, function() {});
- };
-
- function statusChangeHandler(processName, showName, isOn) {
- $log.debug('statusChangeHandler: ', processName, showName, isOn);
- if (
- (
- processName === 'broadcastingTx' ||
- ((processName === 'signingTx') && vm.originWallet.m > 1) ||
- (processName == 'sendingTx' && !vm.originWallet.canSign() && !vm.originWallet.isPrivKeyExternal())
- ) && !isOn) {
- // Show the popup
- vm.sendStatus = 'success';
-
- // Clear the send flow service state
- sendFlowService.state.clear();
-
- if ($state.current.name === "tabs.send.review") { // XX SP: Otherwise all open wallets on other devices play this sound if you have been in a send flow before on that device.
- soundService.play('misc/payment_sent.mp3');
- }
-
- var channel = "firebase";
- if (platformInfo.isNW) {
- channel = "ga";
- }
- // When displaying Fiat, if the formatting fails, the crypto will be the primary amount.
- var amount = unitFromSat * satoshis;
- var log = new window.BitAnalytics.LogEvent("transfer_success", [{
- "coin": vm.originWallet.coin,
- "type": "outgoing",
- "amount": amount,
- "fees": vm.feeCrypto
- }], [channel, "adjust"]);
- window.BitAnalytics.LogEventHandlers.postEvent(log);
-
- $timeout(function() {
- $scope.$digest();
- }, 100);
- } else if (showName) {
- vm.sendStatus = showName;
- }
- };
-
- function updateTx(tx, wallet, opts, cb) {
- ongoingProcess.set('calculatingFee', true);
-
- if (opts.clearCache) {
- tx.txp = {};
- }
-
- // $scope.tx = tx;
-
- // function updateAmount() {
- // if (!tx.amount) return;
- //
- // // Amount
- // tx.amountStr = txFormatService.formatAmountStr(originWallet.coin, tx.amount);
- // tx.amountValueStr = tx.amountStr.split(' ')[0];
- // tx.amountUnitStr = tx.amountStr.split(' ')[1];
- // txFormatService.formatAlternativeStr(wallet.coin, tx.amount, function(v) {
- // var parts = v.split(' ');
- // tx.alternativeAmountStr = v;
- // tx.alternativeAmountValueStr = parts[0];
- // tx.alternativeAmountUnitStr = (parts.length > 0) ? parts[1] : '';
- // });
- // }
- //
- // updateAmount();
- // refresh();
-
- var feeServiceLevel = usingMerchantFee && vm.originWallet.coin == 'btc' ? 'urgent' : tx.feeLevel;
- feeService.getFeeRate(vm.originWallet.coin, tx.network, feeServiceLevel, function(err, feeRate) {
- if (err) {
- ongoingProcess.set('calculatingFee', false);
- return cb(err);
- }
-
- var msg;
- // if (tx.feeLevel == 'free'){
- // tx.feeRate = 0;
- // }
- // else
- if (usingCustomFee) {
- msg = gettextCatalog.getString('Custom');
- tx.feeLevelName = msg;
- } else if (usingMerchantFee) {
- $log.info('Using Merchant Fee:' + tx.feeRate + ' vs. Urgent level:' + feeRate);
- msg = gettextCatalog.getString('Suggested by Merchant');
- tx.feeLevelName = msg;
- } else {
- tx.feeLevelName = feeService.feeOpts[tx.feeLevel];
- tx.feeRate = feeRate;
-
- }
-
-
- getSendMaxInfo(lodash.clone(tx), wallet, function(err, sendMaxInfo) {
- if (err) {
- ongoingProcess.set('calculatingFee', false);
- 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) {
- ongoingProcess.set('calculatingFee', false);
- setNotReady(gettextCatalog.getString('Insufficient confirmed funds'));
- popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Not enough funds for fee'), function () {
- $ionicHistory.goBack();
- });
- return cb('no_funds');
- }
-
- tx.sendMaxInfo = sendMaxInfo;
- tx.amount = tx.sendMaxInfo.amount;
- satoshis = tx.amount;
- updateSendAmounts();
- ongoingProcess.set('calculatingFee', false);
- $timeout(function() {
- showSendMaxWarning(wallet, sendMaxInfo);
- }, 200);
- }
-
- // txp already generated for this wallet?
- if (tx.txp[wallet.id]) {
- ongoingProcess.set('calculatingFee', false);
- vm.readyToSend = true;
- updateSendAmounts();
- $scope.$apply();
- return cb();
- }
-
- console.log('calling getTxp() from getSendMaxInfo cb.');
- getTxp(lodash.clone(tx), wallet, opts.dryRun, function(err, txp) {
- ongoingProcess.set('calculatingFee', false);
- if (err) {
- if (err.message == 'Insufficient funds') {
- setNotReady(gettextCatalog.getString('Insufficient funds'));
- popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Not enough funds for fee'));
- return cb('no_funds');
- } else
- return cb(err);
- }
-
- txp.feeStr = txFormatService.formatAmountStr(wallet.coin, txp.fee);
- txFormatService.formatAlternativeStr(wallet.coin, txp.fee, function(v) {
- // txp.alternativeFeeStr = v;
- // if (txp.alternativeFeeStr.substring(0, 4) == '0.00')
- // txp.alternativeFeeStr = '< ' + txp.alternativeFeeStr;
- vm.feeFiat = v;
- vm.fiatCurrency = config.wallet.settings.alternativeIsoCode;
- if (v.substring(0, 1) === "<") {
- vm.feeLessThanACent = true;
- }
-
- console.log("fiat", vm.feeFiat);
-
- });
-
- var per = (txp.fee / (txp.amount + txp.fee) * 100);
- var perString = per.toFixed(2);
- txp.feeRatePerStr = (perString == '0.00' ? '< ' : '') + perString + '%';
- txp.feeToHigh = per > FEE_TOO_HIGH_LIMIT_PERCENTAGE;
- vm.feeCrypto = (unitFromSat * txp.fee).toFixed(8);
- vm.feeIsHigh = txp.feeToHigh;
- console.log("crypto", vm.feeCrypto);
-
-
- tx.txp[wallet.id] = txp;
- $log.debug('Confirm. TX Fully Updated for wallet:' + wallet.id, tx);
- vm.readyToSend = true;
- updateSendAmounts();
- console.log('readyToSend:', vm.readyToSend);
- $scope.$apply();
-
- return cb();
- });
- });
- });
- }
- }
-})();
diff --git a/src/js/controllers/servicesController.js b/src/js/controllers/servicesController.js
index 0f9b6d4f8..62b13c041 100644
--- a/src/js/controllers/servicesController.js
+++ b/src/js/controllers/servicesController.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.controllers').controller('servicesController', function(externalLinkService, $scope, $ionicScrollDelegate, $timeout, servicesService, configService) {
+angular.module('copayApp.controllers').controller('servicesController', function($scope, $ionicScrollDelegate, $timeout, servicesService, configService) {
$scope.hide = false;
configService.whenAvailable(function(config) {
@@ -20,8 +20,4 @@ angular.module('copayApp.controllers').controller('servicesController', function
}, 10);
};
- $scope.open = function(url) {
- externalLinkService.open(url, false);
- }
-
});
diff --git a/src/js/controllers/shapeshift.js b/src/js/controllers/shapeshift.js
index 652f54c34..a58fc20b6 100644
--- a/src/js/controllers/shapeshift.js
+++ b/src/js/controllers/shapeshift.js
@@ -1,58 +1,67 @@
'use strict';
-angular.module('copayApp.controllers').controller('shapeshiftController', function($scope, sendFlowService, $state, $timeout, $ionicHistory, profileService, walletService, popupService, lodash, $ionicNavBarDelegate) {
+angular.module('copayApp.controllers').controller('shapeshiftController', function($scope, $interval, profileService, walletService, popupService, lodash, $ionicNavBarDelegate) {
+
var walletsBtc = [];
var walletsBch = [];
- $scope.showMyAddress = showMyAddress;
+ function generateAddress(wallet, cb) {
+ if (!wallet) return;
+ walletService.getAddress(wallet, false, function(err, addr) {
+ if (err) {
+ popupService.showAlert(err);
+ }
+ return cb(addr);
+ });
+ }
+
+ function showToWallets() {
+ $scope.toWallets = $scope.fromWallet.coin == 'btc' ? walletsBch : walletsBtc;
+ $scope.onToWalletSelect($scope.toWallets[0]);
+ $scope.singleToWallet = $scope.toWallets.length == 1;
+ }
+
+ $scope.onFromWalletSelect = function(wallet) {
+ $scope.fromWallet = wallet;
+ showToWallets();
+ generateAddress(wallet, function(addr) {
+ $scope.fromWalletAddress = addr;
+ });
+ };
+
+ $scope.onToWalletSelect = function(wallet) {
+ $scope.toWallet = wallet;
+ generateAddress(wallet, function(addr) {
+ $scope.toWalletAddress = addr;
+ });
+ }
$scope.$on("$ionicView.beforeEnter", function(event, data) {
walletsBtc = profileService.getWallets({coin: 'btc'});
walletsBch = profileService.getWallets({coin: 'bch'});
$scope.fromWallets = lodash.filter(walletsBtc.concat(walletsBch), function(w) {
- return (w.status && w.status.balance && w.status.balance.availableAmount > 0);
+ return w.status.balance.availableAmount > 0;
});
-
- $scope.singleFromWallet = $scope.fromWallets.length === 1;
+ if ($scope.fromWallets.length == 0) return;
+ $scope.onFromWalletSelect($scope.fromWallets[0]);
+ $scope.onToWalletSelect($scope.toWallets[0]);
+ $scope.singleFromWallet = $scope.fromWallets.length == 1;
+ $scope.singleToWallet = $scope.toWallets.length == 1;
$scope.fromWalletSelectorTitle = 'From';
$scope.toWalletSelectorTitle = 'To';
$scope.showFromWallets = false;
$scope.showToWallets = false;
- $scope.walletsWithFunds = profileService.getWallets({onlyComplete: true, hasFunds: true});
- $scope.wallets = profileService.getWallets({onlyComplete: true});
- $scope.hasWallets = !lodash.isEmpty($scope.wallets);
});
$scope.$on("$ionicView.enter", function(event, data) {
$ionicNavBarDelegate.showBar(true);
});
- // 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.shapeshift = function() {
- var stateParams = {
- thirdParty: {
- id: 'shapeshift'
- }
- };
- sendFlowService.start(stateParams);
+ $scope.showFromWalletSelector = function() {
+ $scope.showFromWallets = true;
}
- function showMyAddress() {
- $state.go('tabs.home').then(function() {
- $state.go('tabs.receive');
- });
+ $scope.showToWalletSelector = function() {
+ $scope.showToWallets = true;
}
-
});
diff --git a/src/js/controllers/tab-home.controller.js b/src/js/controllers/tab-home.js
similarity index 64%
rename from src/js/controllers/tab-home.controller.js
rename to src/js/controllers/tab-home.js
index f78f156f1..28736972f 100644
--- a/src/js/controllers/tab-home.controller.js
+++ b/src/js/controllers/tab-home.js
@@ -1,7 +1,7 @@
'use strict';
angular.module('copayApp.controllers').controller('tabHomeController',
- function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, $window, gettextCatalog, lodash, popupService, ongoingProcess, bannerService, communityService, externalLinkService, latestReleaseService, profileService, walletService, configService, $log, platformInfo, sendFlowService, storageService, txpModalService, appConfigService, startupService, addressbookService, bwcError, nextStepsService, buyAndSellService, homeIntegrationsService, bitpayCardService, pushNotificationsService, timeService, bitcoincomService, pricechartService, firebaseEventsService, servicesService, shapeshiftService, $ionicNavBarDelegate, signVerifyMessageService) {
+ 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, bitcoincomService, pricechartService, firebaseEventsService, servicesService, shapeshiftService, $ionicNavBarDelegate, signVerifyMessageService) {
var wallet;
var listeners = [];
var notifications = [];
@@ -14,53 +14,78 @@ angular.module('copayApp.controllers').controller('tabHomeController',
$scope.isAndroid = platformInfo.isAndroid;
$scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP;
$scope.isNW = platformInfo.isNW;
+ $scope.showRateCard = {};
$scope.showServices = false;
- $scope.bannerIsLoading = true;
- $scope.bannerImageUrl = '';
- $scope.bannerUrl = '';
-
- $scope.$on("$ionicView.beforeEnter", onBeforeEnter);
- $scope.$on("$ionicView.enter", onEnter);
- $scope.$on("$ionicView.afterEnter", onAfterEnter);
- $scope.$on("$ionicView.leave", onLeave);
-
- function onAfterEnter () {
+ $scope.$on("$ionicView.afterEnter", function() {
startupService.ready();
+ });
- bannerService.getBanner(function (banner) {
- $scope.bannerImageUrl = banner.imageURL;
- $scope.bannerUrl = banner.url;
- $scope.bannerIsLoading = false;
- });
- };
-
- function onBeforeEnter (event, data) {
-
+ $scope.$on("$ionicView.beforeEnter", function(event, data) {
if (!$scope.homeTip) {
storageService.getHomeTipAccepted(function(error, value) {
$scope.homeTip = (value == 'accepted') ? false : true;
});
}
- latestReleaseService.checkLatestRelease(function(err, newReleaseData) {
- if (err) {
- $log.warn(err);
+ 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 (newReleaseData) {
- $scope.newRelease = true;
- $scope.newReleaseText = gettextCatalog.getString('There is a new version of {{appName}} available', {
- appName: $scope.name
+ 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();
});
- $scope.newReleaseNotes = newReleaseData.releaseNotes;
}
});
- }
- function onEnter(event, data) {
+ 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) {
$ionicNavBarDelegate.showBar(true);
- updateAllWallets();
+ updateAllWallets(function() {
+ profileService.initBitcoinCoreDisplay();
+ });
addressbookService.list(function(err, ab) {
if (err) $log.error(err);
@@ -101,35 +126,37 @@ angular.module('copayApp.controllers').controller('tabHomeController',
$scope.nextStepsItems = nextStepsService.get();
}
+ $scope.displayBitcoinCore = config.displayBitcoinCore.enabled;
+
$scope.showServices = true;
+ pushNotificationsService.init();
+ firebaseEventsService.init();
$timeout(function() {
$ionicScrollDelegate.resize();
$scope.$apply();
}, 10);
});
- }
+ });
- function onLeave (event, data) {
+ $scope.$on("$ionicView.leave", function(event, data) {
lodash.each(listeners, function(x) {
x();
});
- }
+ });
$scope.createdWithinPastDay = function(time) {
return timeService.withinPastDay(time);
};
- $scope.startFreshSend = function() {
- sendFlowService.start();
- }
-
- $scope.showUpdatePopup = function() {
- latestReleaseService.showUpdatePopup();
- };
-
- $scope.openBannerUrl = function() {
- externalLinkService.open($scope.bannerUrl, false);
+ $scope.openExternalLink = function() {
+ var url = 'https://github.com/Bitcoin-com/Wallet/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) {
@@ -206,7 +233,6 @@ angular.module('copayApp.controllers').controller('tabHomeController',
var j = 0;
lodash.each(wallets, function(wallet) {
- walletService.invalidateCache(wallet); // Temporary solution, to have the good balance, when we ask to reload the wallets.
walletService.getStatus(wallet, {}, function(err, status) {
if (err) {
@@ -226,7 +252,6 @@ angular.module('copayApp.controllers').controller('tabHomeController',
cb();
}
}
- $scope.walletsWithFunds = profileService.getWallets({hasFunds: true});
});
});
};
@@ -256,6 +281,8 @@ angular.module('copayApp.controllers').controller('tabHomeController',
var txIdList = [];
+ var notificationsBeforeCheck = notifications.length;
+
for (var i=0; i 200) {
- text = text.substring(0, 200);
- }
-
- $scope.clipboardHasAddress = false;
- $scope.clipboardHasContent = false;
- var parsed = bitcoinUriService.parse(text);
- console.log('parsed', parsed);
- if (parsed.isValid && parsed.publicAddress && parsed.coin === 'bch' && !parsed.testnet) { // CashAddr
- $scope.clipboardHasAddress = true;
- } else if ((text[0] === "1" || text[0] === "3" || text.substring(0, 3) === "bc1") && text.length >= 26 && text.length <= 35) { // Legacy Addresses
- $scope.clipboardHasAddress = true;
- } else if (text.length > 1) {
- $scope.clipboardHasContent = true;
- }
- });
-
- $ionicNavBarDelegate.showBar(true);
- if (!$scope.hasWallets) {
- $scope.checkingBalance = false;
- return;
- }
- updateHasFunds();
- updateContactsList(function() {
- updateList();
- });
- });
-
- $scope.findContact = function(search) {
- if (!search || search.length < 1) {
- $scope.list = originalList;
- $timeout(function() {
- $scope.$apply();
- });
- return;
- }
-
- var params = sendFlowService.state.getClone();
- params.data = search;
- sendFlowService.start(params, function onError() {
- var result = lodash.filter(originalList, function(item) {
- var val = item.name;
- return lodash.startsWith(val.toLowerCase(), search.toLowerCase());
- });
-
- $scope.list = result;
- });
- };
-
- var hasWallets = function() {
- $scope.walletsWithFunds = profileService.getWallets({
- onlyComplete: true,
- hasFunds: true
- });
- $scope.wallets = profileService.getWallets({
- onlyComplete: true,
- });
- $scope.walletsBch = profileService.getWallets({
- onlyComplete: true,
- coin: 'bch'
- });
- $scope.walletsBtc = profileService.getWallets({
- onlyComplete: true,
- coin: 'btc'
- });
- $scope.hasWallets = lodash.isEmpty($scope.wallets) ? false : true;
- };
-
- var updateHasFunds = function() {
- $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;
- }
-
- if (index === $scope.wallets.length) {
- $scope.checkingBalance = false;
- $timeout(function() {
- $scope.$apply();
- });
- }
- });
- });
- };
-
- var updateContactsList = function(cb) {
- var config = configService.getSync();
- var defaults = configService.getDefaults();
- 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',
- coin: v.coin,
- displayCoin: (v.coin == 'bch'
- ? (config.bitcoinCashAlias || defaults.bitcoinCashAlias)
- : (config.bitcoinAlias || defaults.bitcoinAlias)).toUpperCase()
- });
- });
- originalList = completeContacts;
- return cb();
- });
- };
-
- var updateList = function() {
- $scope.list = lodash.clone(originalList);
- $timeout(function() {
- $ionicScrollDelegate.resize();
- $scope.$apply();
- }, 10);
- };
-
- $scope.searchInFocus = function() {
- $scope.searchFocus = true;
- };
-
- $scope.searchBlurred = function() {
- if ($scope.formData.search == null || $scope.formData.search.length === 0) {
- $scope.searchFocus = false;
- }
- };
-
- $scope.sendToContact = function (item) {
- $timeout(function () {
- var toAddress = item.address;
-
- if (item.recipientType && item.recipientType === 'contact') {
- if (toAddress.indexOf('bch') === 0 || toAddress.indexOf('btc') === 0) {
- toAddress = toAddress.substring(3);
- }
- }
-
- $log.debug('Got toAddress:' + toAddress + ' | ' + item.name);
-
- var stateParams = sendFlowService.state.getClone();
- stateParams.toAddress = toAddress;
- stateParams.coin = item.coin;
- sendFlowService.start(stateParams);
- });
- };
-
- $scope.startWalletToWalletTransfer = function() {
- console.log('startWalletToWalletTransfer()');
- var params = sendFlowService.state.getClone();
- params.isWalletTransfer = true;
- sendFlowService.start(params);
- }
-
- // 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) {
- console.log(data);
- console.log('tab-send onBeforeEnter sendflow ', sendFlowService.state);
- $scope.isIOS = platformInfo.isIOS && platformInfo.isCordova;
- $scope.showWalletsBch = $scope.showWalletsBtc = $scope.showWallets = false;
-
- $scope.checkingBalance = true;
- $scope.formData = {
- search: null
- };
- originalList = [];
- hasWallets();
-
- configService.whenAvailable(function(_config) {
- $scope.displayBalanceAsFiat = _config.wallet.settings.priceDisplay === 'fiat';
- });
-
- if (data.direction == "back") {
- sendFlowService.state.clear();
- }
-
- });
-});
\ No newline at end of file
diff --git a/src/js/controllers/tab-send.js b/src/js/controllers/tab-send.js
new file mode 100644
index 000000000..377cb9a49
--- /dev/null
+++ b/src/js/controllers/tab-send.js
@@ -0,0 +1,260 @@
+'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, configService, bitcoinCashJsService, $ionicNavBarDelegate) {
+
+ var originalList;
+ var CONTACTS_SHOW_LIMIT;
+ var currentContactsPage;
+ $scope.isChromeApp = platformInfo.isChromeApp;
+ $scope.sectionDisplay = {
+ transferToWallet: false
+ };
+
+ 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 config = configService.getSync();
+ 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',
+ coin: v.coin,
+ network: v.network,
+ balanceString: v.cachedBalance,
+ displayWallet: v.coin == 'btc' ? config.displayBitcoinCore.enabled : true,
+ getAddress: function(cb) {
+ walletService.getAddress(v, false, cb);
+ },
+ });
+ });
+ originalList = originalList.concat(walletList);
+ }
+ }
+
+ var updateContactsList = function(cb) {
+ var config = configService.getSync();
+ var defaults = configService.getDefaults();
+ 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',
+ coin: v.coin,
+ displayCoin: (v.coin == 'bch'
+ ? (config.bitcoinCashAlias || defaults.bitcoinCashAlias)
+ : (config.bitcoinAlias || defaults.bitcoinAlias)).toUpperCase(),
+ 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);
+ }
+
+ if (item.recipientType && item.recipientType == 'contact') {
+ if (addr.indexOf('bch') == 0 || addr.indexOf('btc') == 0) {
+ addr = addr.substring(3);
+ }
+ }
+
+ $log.debug('Got toAddress:' + addr + ' | ' + item.name);
+ return $state.transitionTo('tabs.send.amount', {
+ recipientType: item.recipientType,
+ displayAddress: item.coin == 'bch' ? bitcoinCashJsService.translateAddresses(addr).cashaddr : addr,
+ toAddress: addr,
+ toName: item.name,
+ toEmail: item.email,
+ toColor: item.color,
+ coin: item.coin
+ });
+ });
+ });
+ };
+
+ // 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) {
+ $ionicNavBarDelegate.showBar(true);
+ if (!$scope.hasWallets) {
+ $scope.checkingBalance = false;
+ return;
+ }
+ updateHasFunds();
+ updateWalletsList();
+ updateContactsList(function() {
+ updateList();
+ });
+ });
+
+ $scope.toggle = function(section) {
+ $scope.sectionDisplay[section] = !$scope.sectionDisplay[section];
+ $timeout(function() {
+ $ionicScrollDelegate.resize();
+ $scope.$apply();
+ }, 10);
+ };
+});
diff --git a/src/js/controllers/tab-settings.js b/src/js/controllers/tab-settings.js
index 494d63cc5..6cfc80def 100644
--- a/src/js/controllers/tab-settings.js
+++ b/src/js/controllers/tab-settings.js
@@ -16,7 +16,7 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct
isoCode: config.wallet.settings.alternativeIsoCode
};
- $scope.selectedPriceDisplay = config.wallet.settings.priceDisplay === 'crypto' ? gettextCatalog.getString('Cryptocurrency') : gettextCatalog.getString('Fiat');
+ $scope.selectedPriceDisplay = config.wallet.settings.priceDisplay;
// TODO move this to a generic service
bitpayAccountService.getAccounts(function(err, data) {
@@ -45,18 +45,6 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct
});
};
- $scope.sendFeedback = function() {
- var mailToLink = 'mailto:wallet@bitcoin.com?subject=Feedback%20for%20Bitcoin.com%20Wallet';
- if (platformInfo.isNW) {
- nw.Shell.openExternal(mailToLink);
- } else if (platformInfo.isCordova) {
- var mailWindow = window.open(mailToLink, '_system');
- mailWindow.close(); // XX SP: bugfix for some browsers in cordova to change the view entirely
- } else {
- window.location.href = mailToLink;
- }
- };
-
$scope.openExternalLink = function() {
var appName = appConfigService.name;
var url = appName == 'copay' ? 'https://github.com/bitcoin-com/wallet/issues' : 'https://www.bitcoin.com/wallet-support';
diff --git a/src/js/controllers/tabsController.js b/src/js/controllers/tabsController.js
index b78274ecb..a186879e3 100644
--- a/src/js/controllers/tabsController.js
+++ b/src/js/controllers/tabsController.js
@@ -1,13 +1,11 @@
'use strict';
-angular.module('copayApp.controllers').controller('tabsController', function($rootScope, $log, $scope, $state, $stateParams, $timeout, platformInfo, incomingDataService, lodash, popupService, gettextCatalog, scannerService, sendFlowService) {
+angular.module('copayApp.controllers').controller('tabsController', function($rootScope, $log, $scope, $state, $stateParams, $timeout, platformInfo, incomingData, lodash, popupService, gettextCatalog, scannerService) {
$scope.onScan = function(data) {
- incomingDataService.redir(data, function onError(err) {
- if (err) {
- popupService.showAlert(gettextCatalog.getString('Error'), err.message);
- }
- });
+ if (!incomingData.redir(data)) {
+ popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid data'));
+ }
};
$scope.setScanFn = function(scanFn) {
@@ -17,10 +15,6 @@ angular.module('copayApp.controllers').controller('tabsController', function($ro
};
};
- $scope.startFreshSend = function() {
- sendFlowService.start();
- };
-
$scope.importInit = function() {
$scope.fromOnboarding = $stateParams.fromOnboarding;
$timeout(function() {
@@ -29,6 +23,7 @@ angular.module('copayApp.controllers').controller('tabsController', function($ro
};
$scope.chooseScanner = function() {
+
var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP;
if (!isWindowsPhoneApp) {
@@ -38,14 +33,10 @@ angular.module('copayApp.controllers').controller('tabsController', function($ro
scannerService.useOldScanner(function(err, contents) {
if (err) {
- popupService.showAlert(gettextCatalog.getString('Error'), err.message);
- } else {
- incomingDataService.redir(contents, function onError(err) {
- if (err) {
- popupService.showAlert(gettextCatalog.getString('Error'), err.message);
- }
- });
+ popupService.showAlert(gettextCatalog.getString('Error'), err);
+ return;
}
+ incomingData.redir(contents);
});
};
diff --git a/src/js/controllers/tx-details.js b/src/js/controllers/tx-details.js
index 7cac598cd..c12218f05 100644
--- a/src/js/controllers/tx-details.js
+++ b/src/js/controllers/tx-details.js
@@ -45,7 +45,7 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio
});
$scope.readMore = function() {
- var url = 'https://walletsupport.bitcoin.com/article/101/transaction-fees';
+ var url = 'https://github.com/bitpay/copay/wiki/COPAY---FAQ#amount-too-low-to-spend';
var optIn = true;
var title = null;
var message = gettextCatalog.getString('Read more in our Wiki');
@@ -201,7 +201,7 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio
$scope.viewOnBlockchain = function() {
var btx = $scope.btx;
var url = 'https://' + ($scope.getShortNetworkName() == 'test' ? 'test-' : '') + blockexplorerUrl + '/tx/' + btx.txid;
- externalLinkService.open(url, false);
+ window.open(url, '_system');
};
$scope.getShortNetworkName = function() {
diff --git a/src/js/controllers/wallet-selector.controller.js b/src/js/controllers/wallet-selector.controller.js
deleted file mode 100644
index 036727333..000000000
--- a/src/js/controllers/wallet-selector.controller.js
+++ /dev/null
@@ -1,204 +0,0 @@
-'use strict';
-
-(function () {
-
-angular
- .module('copayApp.controllers')
- .controller('walletSelectorController', walletSelectorController);
-
- function walletSelectorController ($scope, $state, sendFlowService, configService, gettextCatalog, ongoingProcess, profileService, walletService, txFormatService) {
- var fromWalletId = '';
- var priceDisplayAsFiat = false;
- var unitDecimals = 0;
- var unitsFromSatoshis = 0;
-
- $scope.$on("$ionicView.beforeEnter", onBeforeEnter);
- $scope.$on("$ionicView.enter", onEnter);
-
- function onBeforeEnter(event, data) {
- if (data.direction == "back") {
- sendFlowService.state.pop();
- }
-
- $scope.params = sendFlowService.state.getClone();
-
- console.log('walletSelector onBeforeEnter after back sendflow', $scope.params);
-
- var config = configService.getSync().wallet.settings;
- priceDisplayAsFiat = config.priceDisplay === 'fiat';
- unitDecimals = config.unitDecimals;
- unitsFromSatoshis = 1 / config.unitToSatoshi;
-
- if ($scope.params.isWalletTransfer) {
- $scope.sendFlowTitle = gettextCatalog.getString('Transfer between wallets');
- } else if (!$scope.params.thirdParty) {
- $scope.sendFlowTitle = gettextCatalog.getString('Send');
- }
-
- $scope.coin = false; // Wallets to show (for destination screen or contacts)
- $scope.type = $scope.params['fromWalletId'] ? 'destination' : 'origin'; // origin || destination
- fromWalletId = $scope.params['fromWalletId'];
-
- if ($scope.type === 'destination' && $scope.params.toAddress) {
- $state.transitionTo(getNextStep($scope.params));
- }
-
- if ($scope.params.coin) {
- $scope.coin = $scope.params.coin; // Contacts have a coin embedded
- }
-
- if ($scope.params.amount) { // There is an amount, so presume that it is a payment request
- $scope.sendFlowTitle = gettextCatalog.getString('Payment Request');
- $scope.specificAmount = $scope.specificAlternativeAmount = '';
- $scope.isPaymentRequest = true;
- }
- if ($scope.params.thirdParty) {
- $scope.thirdParty = $scope.params.thirdParty;
- }
- };
-
- function onEnter (event, data) {
- configService.whenAvailable(function(config) {
- $scope.selectedPriceDisplay = config.wallet.settings.priceDisplay;
- });
-
- if ($scope.thirdParty) {
- // Third party services specific logic
- handleThirdPartyIfShapeshift();
- }
-
- prepareWalletLists();
- formatRequestedAmount();
- };
-
- function formatRequestedAmount() {
- if ($scope.params.amount) {
- var cryptoAmount = (unitsFromSatoshis * $scope.params.amount).toFixed(unitDecimals);
- var cryptoCoin = $scope.coin.toUpperCase();
-
- txFormatService.formatAlternativeStr($scope.coin, $scope.params.amount, function onFormatAlternativeStr(formatted){
- if (formatted) {
- var fiatParts = formatted.split(' ');
- var fiatAmount = fiatParts[0];
- var fiatCurrrency = fiatParts.length > 1 ? fiatParts[1] : '';
-
- if (priceDisplayAsFiat) {
- $scope.requestAmount = fiatAmount;
- $scope.requestCurrency = fiatCurrrency;
-
- $scope.requestAmountSecondary = cryptoAmount;
- $scope.requestCurrencySecondary = cryptoCoin;
- } else {
- $scope.requestAmount = cryptoAmount;
- $scope.requestCurrency = cryptoCoin;
-
- $scope.requestAmountSecondary = fiatAmount;
- $scope.requestCurrencySecondary = fiatCurrrency;
- }
- $scope.$apply();
- }
- });
- }
- }
-
- function handleThirdPartyIfShapeshift() {
- console.log($scope.thirdParty, $scope.coin);
- if ($scope.thirdParty.id === 'shapeshift' && $scope.type === 'destination') { // Shapeshift wants to know the
- $scope.coin = profileService.getWallet(fromWalletId).coin;
- if ($scope.coin === 'bch') {
- $scope.coin = 'btc';
- } else {
- $scope.coin = 'bch';
- }
- }
- }
-
- function prepareWalletLists() {
- var walletsAll = [];
- var walletsSufficientFunds = [];
- $scope.walletsInsufficientFunds = []; // For origin screen
-
- if ($scope.type === 'origin') {
- $scope.headerTitle = gettextCatalog.getString('Choose a wallet to send from');
-
- if ($scope.params.amount || $scope.coin) {
-
- walletsAll = profileService.getWallets({coin: $scope.coin});
- ongoingProcess.set('scanning', true);
- walletsAll.forEach(function forWallet(wallet) {
- if (!wallet.status && !wallet.cachedStatus) {
- walletService.getStatus(wallet, {}, function(err, status) {
- wallet.status = status;
- if (status.availableBalanceSat > ($scope.params.amount ? $scope.params.amount : 0)) {
- walletsSufficientFunds.push(wallet);
- } else {
- $scope.walletsInsufficientFunds.push(wallet);
- }
- if ($scope.coin === 'btc') { // As this is a promise
- $scope.walletsBtc = walletsSufficientFunds;
- } else {
- $scope.walletsBch = walletsSufficientFunds;
- }
- ongoingProcess.set('scanning', false);
- });
- } else {
- var walletStatus = null;
- if (wallet.status && wallet.status.isValid) {
- walletStatus = wallet.status;
- } else if (wallet.cachedStatus && wallet.status.isValid) {
- walletStatus = wallet.cachedStatus;
- }
-
- if (walletStatus && walletStatus.availableBalanceSat > ($scope.params.amount ? $scope.params.amount : 0)) {
- walletsSufficientFunds.push(wallet);
- } else {
- $scope.walletsInsufficientFunds.push(wallet);
- }
- ongoingProcess.set('scanning', false);
- }
- });
-
- if ($scope.coin === 'btc') {
- $scope.walletsBtc = walletsSufficientFunds;
- } else {
- $scope.walletsBch = walletsSufficientFunds;
- }
- } else {
- $scope.walletsBch = profileService.getWallets({coin: 'bch', hasFunds: true});
- $scope.walletsBtc = profileService.getWallets({coin: 'btc', hasFunds: true});
- $scope.walletsInsufficientFunds = profileService.getWallets({coin: $scope.coin, hasNoFunds: true});
- }
-
- } else if ($scope.type === 'destination') {
- if (!$scope.coin) { // Allow for the coin to be set by a third party
- $scope.fromWallet = profileService.getWallet(fromWalletId);
- $scope.coin = $scope.fromWallet.coin; // Only show wallets with the select origin wallet coin
- }
- $scope.headerTitle = gettextCatalog.getString('Choose a wallet to send to');
-
- if ($scope.coin === 'btc') { // if no specific coin is set or coin is set btc
- $scope.walletsBtc = profileService.getWallets({coin: $scope.coin});
- } else {
- $scope.walletsBch = profileService.getWallets({coin: $scope.coin});
- }
- }
- }
-
-
-
- $scope.useWallet = function(wallet) {
- var params = sendFlowService.state.getClone();
- if ($scope.type === 'origin') { // we're on the origin screen, set wallet to send from
- params.fromWalletId = wallet.id;
- } else { // we're on the destination screen, set wallet to send to
- params.toWalletId = wallet.id;
- }
- sendFlowService.goNext(params);
- };
-
- $scope.goBack = function() {
- sendFlowService.router.goBack();
- }
-
- }
-})();
\ No newline at end of file
diff --git a/src/js/controllers/wallet-details.controller.js b/src/js/controllers/walletDetails.js
similarity index 59%
rename from src/js/controllers/wallet-details.controller.js
rename to src/js/controllers/walletDetails.js
index 429420741..acc0dce79 100644
--- a/src/js/controllers/wallet-details.controller.js
+++ b/src/js/controllers/walletDetails.js
@@ -1,65 +1,45 @@
'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, sendFlowService, storageService, $ionicScrollDelegate, $window, bwcError, gettextCatalog, timeService, feeService, appConfigService, rateService, walletHistoryService) {
- // Desktop can display 13 rows of transactions, bump it up to a nice round 15.
- var DISPLAY_PAGE_SIZE = 15;
- var currentTxHistoryDisplayPage = 0;
- var completeTxHistory = []
+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, rateService) {
+
+ var HISTORY_SHOW_LIMIT = 10;
+ var currentTxHistoryPage = 0;
var listeners = [];
-
- // For gradual migration for doing it properly
- $scope.vm = {
- allowInfiniteScroll: false,
- gettingCachedHistory: true,
- gettingInitialHistory: true,
- updatingTxHistory: false,
- fetchedAllTxHistory: false,
- //updateTxHistoryError: false
- updateTxHistoryFailed: false
- };
-
- // Need flag for when to allow infinite scroll at bottom
- // - ie not when loading initial data and there is no more cached data
-
- $scope.amountIsCollapsible = false;
- $scope.color = '#888888';
-
- $scope.filteredTxHistory = [];
+ $scope.txps = [];
+ $scope.completeTxHistory = [];
+ $scope.openTxpModal = txpModalService.open;
$scope.isCordova = platformInfo.isCordova;
$scope.isAndroid = platformInfo.isAndroid;
$scope.isIOS = platformInfo.isIOS;
- $scope.isSearching = false;
- $scope.openTxpModal = txpModalService.open;
- $scope.requiresMultipleSignatures = false;
- $scope.showBalanceButton = false;
- $scope.status = null;
- // Displaying 50 transactions when entering the screen takes a while, so only display a subset
- // of everything we have, not the complete history.
- $scope.txHistory = []; // This is what is displayed
- $scope.txHistorySearchResults = [];
- $scope.txps = [];
- $scope.updatingStatus = false;
- $scope.updateStatusError = null;
- $scope.updatingTxHistoryProgress = 0;
- $scope.wallet = null;
- $scope.walletId = '';
- $scope.walletNotRegistered = false;
-
-
-
- var channel = "ga";
- if (platformInfo.isCordova) {
- channel = "firebase";
- }
- var log = new window.BitAnalytics.LogEvent("wallet_details_open", [], [channel]);
- window.BitAnalytics.LogEventHandlers.postEvent(log);
+ $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;
@@ -86,7 +66,6 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
$scope.updatingStatus = true;
$scope.updateStatusError = null;
$scope.walletNotRegistered = false;
- $scope.vm.fetchedAllTxHistory = false;
walletService.getStatus($scope.wallet, {
force: !!force,
@@ -170,97 +149,68 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
if (err) return;
$timeout(function() {
walletService.startScan($scope.wallet, function() {
- $scope.updateAll(true, true);
+ $scope.updateAll();
$scope.$apply();
});
});
});
};
+ var updateTxHistory = function(cb) {
+ if (!cb) cb = function() {};
+ $scope.updateTxHistoryError = false;
+ $scope.updatingTxHistoryProgress = 0;
+
+ feeService.getFeeLevels($scope.wallet.coin, function(err, levels) {
+ walletService.getTxHistory($scope.wallet, {
+ feeLevels: levels
+ }, function(err, txHistory) {
+ $scope.updatingTxHistory = false;
+ if (err) {
+ $scope.txHistory = null;
+ $scope.updateTxHistoryError = true;
+ return;
+ }
+
+ applyCurrencyAliases(txHistory);
+
+ var config = configService.getSync();
+ var fiatCode = config.wallet.settings.alternativeIsoCode;
+ lodash.each(txHistory, function(t) {
+ var r = rateService.toFiat(t.amount, fiatCode, $scope.wallet.coin);
+ t.alternativeAmountStr = r.toFixed(2) + ' ' + fiatCode;
+ });
+
+ $scope.completeTxHistory = txHistory;
+
+ $scope.showHistory();
+ $timeout(function() {
+ $scope.$apply();
+ });
+ return cb();
+ });
+ });
+ };
+
function applyCurrencyAliases(txHistory) {
var defaults = configService.getDefaults();
var configCache = configService.getSync();
- lodash.each(txHistory, function onTx(tx) {
- tx.amountUnitStr = $scope.wallet.coin == 'btc'
+ lodash.each(txHistory, function(t) {
+ t.amountUnitStr = $scope.wallet.coin == 'btc'
? (configCache.bitcoinAlias || defaults.bitcoinAlias)
: (configCache.bitcoinCashAlias || defaults.bitcoinCashAlias);
- tx.amountUnitStr = tx.amountUnitStr.toUpperCase();
+ t.amountUnitStr = t.amountUnitStr.toUpperCase();
});
}
- function formatTxHistoryForDisplay(txHistory) {
- applyCurrencyAliases(txHistory);
-
- var config = configService.getSync();
- var fiatCode = config.wallet.settings.alternativeIsoCode;
- lodash.each(txHistory, function(t) {
- var r = rateService.toFiat(t.amount, fiatCode, $scope.wallet.coin);
- t.alternativeAmountStr = r.toFixed(2) + ' ' + fiatCode;
- });
- }
-
-
- function updateTxHistoryFromCachedData() {
- $scope.vm.gettingCachedHistory = true;
- walletHistoryService.getCachedTxHistory($scope.wallet.id, function onGetCachedTxHistory(err, txHistory){
- $scope.vm.gettingCachedHistory = false;
- if (err) {
- // Don't display an error because we are also requesting the history.
- $log.error('Error getting cached tx history.', err);
- return;
- }
-
- if (!txHistory) {
- $log.debug('No cached tx history.');
- return;
- }
-
- formatTxHistoryForDisplay(txHistory);
-
- completeTxHistory = txHistory;
- showHistory(false);
- $scope.$apply();
- });
- }
-
- function fetchAndShowTxHistory(getLatest, flushCacheOnNew) {
- $scope.vm.updatingTxHistory = true;
-
- walletHistoryService.updateLocalTxHistoryByPage($scope.wallet, getLatest, flushCacheOnNew, function onUpdateLocalTxHistoryByPage(err, txHistory, fetchedAllTransactions) {
- $scope.vm.gettingInitialHistory = false;
- $scope.vm.updatingTxHistory = false;
- $scope.$broadcast('scroll.infiniteScrollComplete');
-
- if (err) {
- console.error('pagination Failed to get history.', err);
- $scope.vm.updateTxHistoryFailed = true;
- return;
- }
-
- if (fetchedAllTransactions) {
- $scope.vm.fetchedAllTxHistory = true;
- }
-
- formatTxHistoryForDisplay(txHistory);
-
- completeTxHistory = txHistory;
- showHistory(true);
- $scope.$apply();
- });
- }
-
-
- function showHistory(showAll) {
- if (completeTxHistory) {
- $scope.txHistory = showAll ? completeTxHistory : completeTxHistory.slice(0, (currentTxHistoryDisplayPage + 1) * DISPLAY_PAGE_SIZE);
- $scope.vm.allowInfiniteScroll = !$scope.vm.fetchedAllTxHistory && !(completeTxHistory.length === $scope.txHistory.length && $scope.vm.gettingInitialHistory);
- } else {
- $scope.vm.allowInfiniteScroll = false;
+ $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);
@@ -299,35 +249,24 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
return !tx.confirmations || tx.confirmations === 0;
};
- // on-infinite="showMore()"
$scope.showMore = function() {
- // Check if we have more than we are displaying
- if (completeTxHistory.length > $scope.txHistory.length) {
- currentTxHistoryDisplayPage++;
- showHistory(false);
+ $timeout(function() {
+ currentTxHistoryPage++;
+ $scope.showHistory();
$scope.$broadcast('scroll.infiniteScrollComplete');
- return;
- }
-
- if ($scope.vm.updatingTxHistory) {
- return;
- }
-
- fetchAndShowTxHistory(false, false);
+ }, 100);
};
- // on-refresh="onRefresh()"
$scope.onRefresh = function() {
$timeout(function() {
$scope.$broadcast('scroll.refreshComplete');
}, 300);
- $scope.updateAll(true, false);
+ $scope.updateAll(true);
};
- $scope.updateAll = function(forceStatusUpdate, flushTxCacheOnNew) {
- updateStatus(forceStatusUpdate);
- //updateTxHistory(cb);
- fetchAndShowTxHistory(true, flushTxCacheOnNew);
+ $scope.updateAll = function(force, cb) {
+ updateStatus(force);
+ updateTxHistory(cb);
};
$scope.hideToggle = function() {
@@ -337,36 +276,97 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
};
var prevPos;
- $scope.txHistoryPaddingBottom = 0;
+
function getScrollPosition() {
var scrollPosition = $ionicScrollDelegate.getScrollPosition();
-
- $timeout(function() {
- getScrollPosition();
- }, 200);
-
if (!scrollPosition) {
+ $window.requestAnimationFrame(function() {
+ getScrollPosition();
+ });
return;
}
var pos = scrollPosition.top;
- if (pos > 0) {
- $scope.txHistoryPaddingBottom = "200px";
- }
if (pos === prevPos) {
+ $window.requestAnimationFrame(function() {
+ getScrollPosition();
+ });
return;
}
prevPos = pos;
- $scope.scrollPosition = 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) {
+
configService.whenAvailable(function (config) {
$scope.selectedPriceDisplay = config.wallet.settings.priceDisplay;
@@ -380,7 +380,7 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
if (!$scope.wallet) return;
$scope.requiresMultipleSignatures = $scope.wallet.credentials.m > 1;
- $scope.vm.gettingInitialHistory = true;
+ $scope.updatingTxHistory = true;
addressbookService.list(function(err, ab) {
if (err) $log.error(err);
@@ -390,31 +390,28 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
listeners = [
$rootScope.$on('bwsEvent', function(e, walletId) {
if (walletId == $scope.wallet.id && e.type != 'NewAddress')
- $scope.updateAll(false, false);
+ $scope.updateAll();
}),
$rootScope.$on('Local/TxAction', function(e, walletId) {
if (walletId == $scope.wallet.id)
- $scope.updateAll(false, false);
+ $scope.updateAll();
}),
];
});
var refreshInterval;
- $scope.$on("$ionicView.afterEnter", function onAfterEnter(event, data) {
- updateTxHistoryFromCachedData();
- $scope.updateAll(true, true);
- // refreshAmountSection();
+ $scope.$on("$ionicView.afterEnter", function(event, data) {
+ $scope.updateAll();
+ refreshAmountSection();
refreshInterval = $interval($scope.onRefresh, 10 * 1000);
- $timeout(function() {
- getScrollPosition();
- }, 1000);
});
$scope.$on("$ionicView.afterLeave", function(event, data) {
$interval.cancel(refreshInterval);
if ($window.StatusBar) {
- $window.StatusBar.backgroundColorByHexString('#000000');
+ var statusBarColor = appConfigService.name == 'copay' ? '#192c3a' : '#1e3186';
+ $window.StatusBar.backgroundColorByHexString(statusBarColor);
}
});
@@ -466,30 +463,4 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
function rgbToHex(r, g, b) {
return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
-
- $scope.goToSend = function() {
- sendFlowService.start({
- fromWalletId: $scope.wallet.id
- });
-
- };
- $scope.goToReceive = function() {
- $state.go('tabs.home', {
- walletId: $scope.wallet.id
- }).then(function () {
- $ionicHistory.clearHistory();
- $state.go('tabs.receive', {
- walletId: $scope.wallet.id
- });
- });
- };
-
- $scope.goToBuy = function() {
- $state.go('tabs.home', {
- walletId: $scope.wallet.id
- }).then(function () {
- $ionicHistory.clearHistory();
- $state.go('tabs.buyandsell');
- });
- };
});
diff --git a/src/js/decorators/displayLogDebug.js b/src/js/decorators/displayLogDebug.js
deleted file mode 100644
index 4eacf34b3..000000000
--- a/src/js/decorators/displayLogDebug.js
+++ /dev/null
@@ -1,15 +0,0 @@
- angular.module('copayApp')
- .config(['$provide', '$logProvider', function($provide, $logProvider) {
- // expose a provider to reach debugEnabled in $log
- $provide.value('$logProvider', $logProvider);
-}])
-.decorator('$log', ['$logProvider', '$delegate', function($logProvider, $delegate) {
- // override $log.debug to display in Chrome
- $delegate.debug = function () {
- if ($logProvider.debugEnabled()) {
- $delegate.info.apply($delegate, arguments);
- }
- };
-
- return $delegate;
-}]);
\ No newline at end of file
diff --git a/src/js/directives/copyToClipboard.js b/src/js/directives/copyToClipboard.js
index c81e0bd60..5de40f23e 100644
--- a/src/js/directives/copyToClipboard.js
+++ b/src/js/directives/copyToClipboard.js
@@ -1,26 +1,38 @@
'use strict';
angular.module('copayApp.directives')
- .directive('copyToClipboard', function(clipboardService, ionicToast, gettextCatalog) {
+ .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;
- clipboardService.copyToClipboard(data);
+ if (!data) return;
- var msg = gettextCatalog.getString('Copied to clipboard');
- scope.$apply(function () {
+ 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/formattedAmount.js b/src/js/directives/formattedAmount.js
deleted file mode 100644
index 5ee9be050..000000000
--- a/src/js/directives/formattedAmount.js
+++ /dev/null
@@ -1,198 +0,0 @@
-'use strict';
-
-(function(){
-/**
- * @desc amount directive that can be used to display formatted financial values
- * size-equal attribute is optional, defaults to false.
- * @example fee = {
- * value: 12.49382901,
- * currency: 'BCH'
- * }
- * @example
- * @example
- */
- angular
- .module('bitcoincom.directives')
- .directive('formattedAmount', function() {
- return {
- restrict: 'E',
- scope: {
- value: '@',
- currency: '@',
- sizeEqual: '@'
- },
- templateUrl: 'views/includes/formatted-amount.html',
- controller: formattedAmountController
- }
- });
-
- function formattedAmountController($scope, uxLanguage) {
- $scope.vm = {};
- var vm = $scope.vm;
-
- vm.currency = '';
- vm.value = '';
-
- $scope.canShow = false
- $scope.displaySizeEqual = !!$scope.sizeEqual;
-
- var decimalPlaces = {
- '0': ['BIF', 'CLP', 'DJF', 'GNF', 'ILS', 'JPY', 'KMF', 'KRW', 'MGA', 'PYG', 'RWF', 'UGX', 'VND', 'VUV', 'XAF', 'XOF', 'XPF'],
- '3': ['BHD', 'IQD', 'JOD', 'KWD', 'OMR', 'TND'],
- '8': ['BCH', 'BTC']
- };
-
- $scope.$watch('value', function onFormattedAmountWatch() {
- formatNumbers();
- });
-
- function buildAmount(start, middle, end) {
- $scope.start = start;
- $scope.middle = middle;
- $scope.end = end;
- };
-
- /**
- * On Android 4.4, toLocaleString() only returns 3 fractional digits when 8 is specified.
- */
- function ensureEnoughFractionDigits(localizedString, number, desiredFractionDigits) {
- if (desiredFractionDigits === 0) {
- // Assume it is OK
- return localizedString;
- }
- var fractionalRe = /^-*(\d*\D)(\d+)$/;
- var match = fractionalRe.exec(localizedString);
- if (!match || match.length !== 3) {
- // Don't know what's happening, just return what we have
- return localizedString;
- }
-
- var decimals = match[2];
- var decimalCount = decimals.length;
- if (decimalCount >= desiredFractionDigits) {
- // Everything is OK.
- return localizedString;
- }
-
- if (typeof number !== 'number') {
- number = parseFloat(number);
- }
-
- var fixed = number.toFixed(desiredFractionDigits);
- var fixedMatch = fractionalRe.exec(fixed);
- if (!fixedMatch || fixedMatch.length !== 3) {
- // Don't know what's happening, just return what we have
- return localizedString;
- }
-
- // Keeps locale decimal separator.
- var enough = match[1] + fixedMatch[2];
- return enough;
- }
-
- function formatNumbers() {
- // Might get "< 0.01 USD" being passed in.
- // During watch, may be changed from having a separate currency value,
- // to both being in value. Don't want to use previous currency value.
- // Try to extract currency from value..
- if (!$scope.currency || $scope.currency.length === 0) {
- var currencySplit = $scope.value.split(" ");
- if (currencySplit.length >= 2) {
- vm.currency = currencySplit[currencySplit.length - 1];
- }
- } else {
- vm.currency = $scope.currency;
- }
-
- // Redo this when we have proper formatting for low fees
- if ($scope.value.indexOf("<") === 0) {
- buildAmount($scope.value, '', '');
- vm.currency = '';
- $scope.canShow = true;
- return;
- }
-
- // Remove thousands separators for parseFloat()
- $scope.value = $scope.value.replace(',', '');
-
- var parsed = parseFloat($scope.value);
- var valueFormatted = '';
- var valueProcessing = '';
- switch (getDecimalPlaces(vm.currency)) {
- case '0':
- if (isNaN(parsed)) {
- buildAmount('-', '', '');
- } else {
- valueFormatted = localizeNumbers(Math.round(parsed), 0);
- buildAmount(valueFormatted, '', '');
- }
- break;
-
- case '3':
- if (isNaN(parsed)) {
- buildAmount('-' + getDecimalSeparator() + '---', '', '');
- } else {
- valueProcessing = parsed.toFixed(3);
- valueFormatted = localizeNumbers(valueProcessing, 3);
- buildAmount(valueFormatted, '', '');
- }
- break;
-
- case '8':
- if (isNaN(parsed)) {
- buildAmount('-' + getDecimalSeparator() + '---', '', '');
- } else if (parsed === 0) {
- buildAmount('0', '', '');
- } else {
- valueFormatted = parsed.toFixed(8);
- valueFormatted = localizeNumbers(valueFormatted, 8);
- var start = valueFormatted.slice(0, -5);
- var middle = valueFormatted.slice(-5, -2);
- var end = valueFormatted.substr(valueFormatted.length - 2);
- buildAmount(start, middle, end);
-
- }
- break;
-
- default: // 2
- if (isNaN(parsed)) {
- buildAmount('-' + getDecimalSeparator() + '--', '', '');
- } else {
- valueProcessing = parseFloat(parsed.toFixed(2));
- valueFormatted = localizeNumbers(valueProcessing, 2);
- buildAmount(valueFormatted, '', '');
- }
- break;
- }
- $scope.canShow = true;
- };
-
- function getDecimalPlaces(currency) {
- if (decimalPlaces['0'].indexOf(currency.toUpperCase()) > -1) return '0';
- if (decimalPlaces['3'].indexOf(currency.toUpperCase()) > -1) return '3';
- if (decimalPlaces['8'].indexOf(currency.toUpperCase()) > -1) return '8';
- return '2';
- };
-
- function getDecimalSeparator() {
- var testNum = 1.5;
- var testString = testNum.toLocaleString(uxLanguage.getCurrentLanguage());
- // Some environments let you set decimal separators that are more than one character
- var separator = /^1(.+)5$/.exec(testString)[1]
- return separator;
- };
-
- function localizeNumbers(x, minimumFractionDigits) {
- var parsed = parseFloat(x);
- var opts = {
- minimumFractionDigits: minimumFractionDigits,
- useGrouping: true
- };
- var lang = uxLanguage.getCurrentLanguage();
- var localized = parsed.toLocaleString(lang, opts);
- var corrected = ensureEnoughFractionDigits(localized, x, minimumFractionDigits);
- return corrected;
- };
- }
-
-})();
\ No newline at end of file
diff --git a/src/js/directives/gravatar.js b/src/js/directives/gravatar.js
index c96a63cfe..5f7931798 100644
--- a/src/js/directives/gravatar.js
+++ b/src/js/directives/gravatar.js
@@ -1,7 +1,7 @@
'use strict';
angular.module('copayApp.directives')
- .directive('gravatar', function(md5, $http) {
+ .directive('gravatar', function(md5) {
return {
restrict: 'AE',
replace: true,
@@ -9,24 +9,13 @@ angular.module('copayApp.directives')
name: '@',
height: '@',
width: '@',
- email: '@',
- url: '@'
+ email: '@'
},
link: function(scope, el, attr) {
if (typeof scope.email === "string") {
scope.emailHash = md5.createHash(scope.email.toLowerCase() || '');
- var req = {
- method: 'GET',
- url: 'https://secure.gravatar.com/'+scope.emailHash+'.json',
- };
- scope.url = 'img/contact-placeholder.svg';
- $http(req).then(function (response) {
- scope.url = 'https://secure.gravatar.com/avatar/'+scope.emailHash+'.jpg?s='+scope.width+'&d=mm';
- }, function (error) {
- scope.url = 'img/contact-placeholder.svg';
- });
}
},
- template: ' '
+ template: ' '
};
});
diff --git a/src/js/directives/incomingDataMenu.js b/src/js/directives/incomingDataMenu.js
index 78856e62f..21478102b 100644
--- a/src/js/directives/incomingDataMenu.js
+++ b/src/js/directives/incomingDataMenu.js
@@ -1,28 +1,23 @@
'use strict';
angular.module('copayApp.directives')
- .directive('incomingDataMenu', function($timeout, $rootScope, $state, externalLinkService, sendFlowService, bitcoinCashJsService) {
+ .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;
-
- if (scope.data.parsed.privateKey) {
- scope.type = "privateKey";
- } else if (scope.data.parsed.url) {
- scope.type = "url";
- } else if (scope.data.parsed.publicAddress) {
- scope.type = "bitcoinAddress";
- var prefix = scope.data.parsed.isTestnet ? 'bchtest:' : 'bitcoincash:';
- scope.data.toAddress = (prefix + scope.data.parsed.publicAddress.cashAddr) || scope.data.parsed.publicAddress.legacy || scope.data.parsed.publicAddress.bitpay;
- } else {
- scope.type = "text";
- }
-
+ 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() {
@@ -33,9 +28,18 @@ angular.module('copayApp.directives')
externalLinkService.open(url);
};
scope.sendPaymentToAddress = function(bitcoinAddress) {
+ var noPrefixInAddress = 0;
+ if (bitcoinAddress.toLowerCase().indexOf('bitcoin') < 0) {
+ noPrefixInAddress = 1;
+ }
scope.showMenu = false;
- sendFlowService.start({
- data: bitcoinAddress
+ $state.go('tabs.send').then(function() {
+ $timeout(function() {
+ $state.transitionTo('tabs.send.amount', {
+ toAddress: bitcoinAddress,
+ noPrefix: noPrefixInAddress
+ });
+ }, 50);
});
};
scope.addToAddressBook = function(bitcoinAddress) {
diff --git a/src/js/directives/shapeshiftCoinTrader.js b/src/js/directives/shapeshiftCoinTrader.js
index 793f380fb..d5c62f431 100644
--- a/src/js/directives/shapeshiftCoinTrader.js
+++ b/src/js/directives/shapeshiftCoinTrader.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.directives').directive('shapeshiftCoinTrader', function($interval, shapeshiftApiService, profileService, incomingDataService, ongoingProcess) {
+angular.module('copayApp.directives').directive('shapeshiftCoinTrader', function($interval, shapeshiftApiService, profileService, incomingData, ongoingProcess) {
return {
restrict: 'E',
transclude: true,
@@ -111,8 +111,7 @@ angular.module('copayApp.directives').directive('shapeshiftCoinTrader', function
orderId: $scope.depositInfo.orderId
};
- // How to handle this
- if (incomingDataService.redir(sendAddress, 'shapeshift', shapeshiftData)) {
+ if (incomingData.redir(sendAddress, shapeshiftData)) {
ongoingProcess.set('connectingShapeshift', false);
return;
}
diff --git a/src/js/directives/slideToAccept.js b/src/js/directives/slideToAccept.js
index 830bed677..3f4db0ef9 100644
--- a/src/js/directives/slideToAccept.js
+++ b/src/js/directives/slideToAccept.js
@@ -116,8 +116,7 @@ angular.module('copayApp.directives')
function getTransformStyle(translatePct) {
return {
- 'transform': 'translateX(' + translatePct + '%)',
- '-webkit-transform': 'translateX(' + translatePct + '%)'
+ 'transform': 'translateX(' + translatePct + '%)'
};
}
diff --git a/src/js/directives/slideToAcceptSuccess.js b/src/js/directives/slideToAcceptSuccess.js
index ec6321b95..fbd588bfe 100644
--- a/src/js/directives/slideToAcceptSuccess.js
+++ b/src/js/directives/slideToAcceptSuccess.js
@@ -9,12 +9,12 @@ angular.module('copayApp.directives')
scope: {
isShown: '=slideSuccessShow',
onConfirm: '&slideSuccessOnConfirm',
- hideOnConfirm: '=slideSuccessHideOnConfirm',
- onShare: '=slideSuccessOnShare',
+ hideOnConfirm: '=slideSuccessHideOnConfirm'
},
link: function(scope, element, attrs) {
- scope.isCordova = platformInfo.isCordova;
- scope.hasShareFunction = typeof scope.onShare === 'function';
+
+ scope.isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP;
+
var elm = element[0];
elm.style.display = 'none';
scope.$watch('isShown', function() {
@@ -32,9 +32,6 @@ angular.module('copayApp.directives')
elm.style.display = 'none';
}
};
- scope.onShareButtonClick = function() {
- scope.onShare();
- }
}
};
});
diff --git a/src/js/directives/wallet-balance.directive.js b/src/js/directives/wallet-balance.directive.js
deleted file mode 100644
index 4d8ca2875..000000000
--- a/src/js/directives/wallet-balance.directive.js
+++ /dev/null
@@ -1,131 +0,0 @@
-'use strict';
-
-(function(){
-
- angular
- .module('bitcoincom.directives')
- .directive('walletBalance', function() {
- return {
- restrict: 'E',
- scope: {
- displayAsFiat: '@',
- totalBalanceSat: '@',
- // The Wallet object is sometimes not stringify()-able, so not interpolatable,
- // so can't be passed to a directive.
- walletCoin: '@',
- walletStatus: '@',
- walletCachedBalance: '@',
- walletCachedBalanceUpdatedOn: '@',
- walletCachedStatus: '@'
- },
- templateUrl: 'views/includes/wallet-balance.html',
- controller: walletBalanceController
- }
- });
-
- function walletBalanceController($log, $scope, txFormatService) {
- var cryptoBalanceHasBeenDisplayed = false;
-
- formatBalance();
- $scope.$watchGroup(['displayAsFiat', 'totalBalanceSat'], function onWalletBalanceWatch() {
- formatBalance();
- });
-
- function displayCryptoBalance(walletStatus, walletCachedBalance, walletCachedBalanceUpdatedOn, walletCachedStatus) {
-
- if (walletStatus && walletStatus.isValid && walletStatus.totalBalanceStr) {
- setDisplay(walletStatus.totalBalanceStr, '');
- cryptoBalanceHasBeenDisplayed = true;
- return;
- }
-
- if (walletCachedBalance) {
- setDisplay(walletCachedBalance, walletCachedBalanceUpdatedOn);
- return;
- }
-
- if (walletCachedStatus && walletCachedStatus.isValid && walletCachedStatus.totalBalanceStr) {
- setDisplay(walletCachedStatus.totalBalanceStr, '');
- return;
- }
-
- setDisplay('', '');
- }
-
- function displayFiatBalance(walletStatus, walletCachedStatus, walletCoin) {
- var displayAmount = '';
- if (walletStatus && walletStatus.isValid && walletStatus.alternativeBalanceAvailable) {
- displayAmount = walletStatus.totalBalanceAlternative + ' ' + walletStatus.alternativeIsoCode;
- setDisplay(displayAmount, '');
- return;
- }
-
- if (walletCachedStatus && walletCachedStatus.isValid && walletCachedStatus.alternativeBalanceAvailable) {
- displayAmount = walletCachedStatus.totalBalanceAlternative + ' ' + walletCachedStatus.alternativeIsoCode;
- setDisplay(displayAmount, '');
- return;
- }
-
- getFiatBalance(walletStatus, walletCachedStatus, walletCoin);
- }
-
- function formatBalance() {
- var displayAsFiat = $scope.displayAsFiat === 'true';
-
- var walletStatusObj = null;
- var walletCachedBalance = null;
- var walletCachedBalanceUpdatedOn = null;
- var walletCachedStatusObj = null;
-
- try {
- walletStatusObj = JSON.parse($scope.walletStatus);
- } catch (e) {
- $log.warn('Failed to parse walletStatus.', e);
- }
-
- try {
- walletCachedStatusObj = JSON.parse($scope.walletCachedStatus);
- } catch (e) {
- $log.warn('Failed to parse walletCachedStatus.', e);
- }
-
- if (!displayAsFiat || displayAsFiat && !cryptoBalanceHasBeenDisplayed) {
- displayCryptoBalance(walletStatusObj, walletCachedBalance, walletCachedBalanceUpdatedOn, walletCachedStatusObj);
- }
-
- if (displayAsFiat) {
- displayFiatBalance(walletStatusObj, walletCachedStatusObj, $scope.walletCoin);
- }
- }
-
- function getFiatBalance(walletStatus, walletCachedStatus, walletCoin) {
- var totalBalanceSat = null;
-
- if (walletStatus && walletStatus.isValid) {
- totalBalanceSat = walletStatus.totalBalanceSat
- } else if (walletCachedStatus && walletCachedStatus.isValid) {
- totalBalanceSat = walletCachedStatus.totalBalanceSat
- }
-
- // 0 is valid
- if (totalBalanceSat === null) {
- $log.warn('Abandoning call to get fiat balance, because no valid wallet status (cached or otherwise).');
- return;
- }
-
- txFormatService.formatAlternativeStr(walletCoin, totalBalanceSat, function onFormatAlernativeStr(formatted) {
- if (formatted) {
- setDisplay(formatted, '');
- } else {
- $log.error('Failed to format fiat balance of wallet.');
- }
- });
- }
-
- function setDisplay(amount, cachedBalanceUpdatedOn) {
- $scope.displayAmount = amount;
- $scope.cachedBalanceUpdatedOn = cachedBalanceUpdatedOn;
- }
- }
-})();
-
diff --git a/src/js/directives/walletSelector.js b/src/js/directives/walletSelector.js
index 8a96a0805..578d298ce 100644
--- a/src/js/directives/walletSelector.js
+++ b/src/js/directives/walletSelector.js
@@ -8,21 +8,16 @@ angular.module('copayApp.directives')
transclude: true,
scope: {
title: '=walletSelectorTitle',
- forceTitle: '=walletSelectorForceTitle',
show: '=walletSelectorShow',
wallets: '=walletSelectorWallets',
selectedWallet: '=walletSelectorSelectedWallet',
onSelect: '=walletSelectorOnSelect',
- onHide: '=walletSelectorOnHide',
- displayBalanceAsFiat : '=walletSelectorDisplayBalanceAsFiat'
+ alwaysDisplayBitcoinCore: '=walletSelectorAlwaysDisplayBitcoinCore'
},
link: function(scope, element, attrs) {
- console.log(scope, element, attrs);
+ scope.displayWallet = true;
scope.hide = function() {
scope.show = false;
- if (typeof scope.onHide === "function") {
- scope.onHide()
- }
};
scope.selectWallet = function(wallet) {
$timeout(function() {
@@ -33,6 +28,19 @@ angular.module('copayApp.directives')
scope.$watch('wallets', function(newValue, oldValue) {
scope.wallets = newValue;
});
+ scope.initDisplayBitcoinCoreConfig = function() {
+ configService.whenAvailable(function(config) {
+ scope.displayBitcoinCore = config.displayBitcoinCore.enabled;
+ scope.initWalletDisplay();
+ });
+ };
+ scope.initWalletDisplay = function() {
+ scope.displayWallet = scope.alwaysDisplayBitcoinCore ? true : scope.displayBitcoinCore;
+ };
+ scope.initDisplayBitcoinCoreConfig();
+ $rootScope.$on('Local/SettingsUpdated', function(e, walletId) {
+ scope.initDisplayBitcoinCoreConfig();
+ });
}
};
});
diff --git a/src/js/models/profile.js b/src/js/models/profile.js
index 7690d1c2d..74b0c33b9 100644
--- a/src/js/models/profile.js
+++ b/src/js/models/profile.js
@@ -9,12 +9,12 @@ function Profile() {
this.version = '1.0.0';
};
-Profile.create = function(appVersion) {
+Profile.create = function(opts) {
+ opts = opts || {};
var x = new Profile();
- x.appVersion = appVersion;
x.createdOn = Date.now();
- x.credentials = [];
+ x.credentials = opts.credentials || [];
x.disclaimerAccepted = true;
x.checked = {};
return x;
@@ -23,7 +23,6 @@ Profile.create = function(appVersion) {
Profile.fromObj = function(obj) {
var x = new Profile();
- x.appVersion = obj.appVersion;
x.createdOn = obj.createdOn;
x.credentials = obj.credentials;
x.disclaimerAccepted = obj.disclaimerAccepted;
@@ -63,39 +62,6 @@ Profile.prototype.isDeviceChecked = function(ua) {
return this.checkedUA == ua;
};
-/**
- *
- * @param {Profile} other
- */
-Profile.prototype.merge = function(other) {
-
- var newCredentials = [];
- var otherCredentialsLength = other.credentials.length;
- var thisProfile = this;
-
- other.credentials.forEach(function(otherCredential) {
- var credentialExists = false;
- thisProfile.credentials.forEach(function(thisCredential) {
- if (otherCredential.walletId === thisCredential.walletId) {
- credentialExists = true;
- }
- });
- if (!credentialExists) {
- newCredentials.push(otherCredential);
- }
- });
-
- Array.prototype.push.apply(this.credentials, newCredentials);
-};
-
-/**
- * It's a simple operation, but it means that all the profile logic stays
- * in this file.
- * @param {string} appVersion - ie "4.11.0"
- */
-Profile.prototype.setAppVersion = function(appVersion) {
- this.appVersion = appVersion;
-}
Profile.prototype.setChecked = function(ua, walletId) {
if (this.checkedUA != ua) {
diff --git a/src/js/routes.js b/src/js/routes.js
index d2b78aac3..337363fcc 100644
--- a/src/js/routes.js
+++ b/src/js/routes.js
@@ -236,7 +236,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
}
})
.state('tabs.receive', {
- url: '/receive/:walletId',
+ url: '/receive',
views: {
'tab-receive': {
controller: 'tabReceiveController',
@@ -287,44 +287,16 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
*/
.state('tabs.send.amount', {
- url: '/amount',
+ url: '/amount/:recipientType/:toAddress/:toName/:toEmail/:toColor/:coin/:fixedUnit/:fromWalletId/:minShapeshiftAmount/:maxShapeshiftAmount/:shapeshiftOrderId/:displayAddress/:noPrefix',
views: {
'tab-send@tabs': {
controller: 'amountController',
- controllerAs: 'vm',
templateUrl: 'views/amount.html'
}
}
})
- .state('tabs.send.wallet-to-wallet', {
- url: '/wallet-to-wallet',
- views: {
- 'tab-send@tabs': {
- controller: 'walletSelectorController',
- templateUrl: 'views/walletSelector.html'
- }
- }
- })
- .state('tabs.send.origin', {
- url: '/origin',
- views: {
- 'tab-send@tabs': {
- controller: 'walletSelectorController',
- templateUrl: 'views/walletSelector.html',
- }
- }
- })
- .state('tabs.send.destination', {
- url: '/destination',
- views: {
- 'tab-send@tabs': {
- controller: 'walletSelectorController',
- templateUrl: 'views/walletSelector.html',
- }
- }
- })
.state('tabs.send.confirm', {
- url: '/confirm',
+ url: '/confirm/:recipientType/:toAddress/:toName/:toAmount/:toEmail/:toColor/:description/:coin/:useSendMax/:fromWalletId/:displayAddress/:requiredFeeRate',
views: {
'tab-send@tabs': {
controller: 'confirmController',
@@ -344,19 +316,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
}
}
})
- .state('tabs.send.review', {
- url: '/review/:thirdParty/:amount/:fromWalletId/:sendMax/:toAddress/:toWalletId',
- views: {
- 'tab-send@tabs': {
- controller: 'reviewController',
- controllerAs: 'vm',
- templateUrl: 'views/review.html'
- }
- },
- params: {
- paypro: null
- }
- })
/*
*
@@ -736,17 +695,16 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
})
.state('tabs.paymentRequest.amount', {
- url: '/amount/:toWalletId',
+ url: '/amount/:coin',
views: {
'tab-receive@tabs': {
controller: 'amountController',
- controllerAs: 'vm',
templateUrl: 'views/amount.html'
}
}
})
.state('tabs.paymentRequest.confirm', {
- url: '/confirm/:amount/:toWalletId',
+ url: '/confirm/:amount/:currency/:coin',
views: {
'tab-receive@tabs': {
controller: 'customAmountController',
@@ -837,15 +795,63 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
fromOnboarding: null
},
})
- .state('tabs.shareApp', {
- url: '/shareApp',
+
+ /*
+ *
+ * Feedback
+ *
+ */
+
+ .state('tabs.feedback', {
+ url: '/feedback',
views: {
'tab-settings@tabs': {
- controller: 'shareAppController',
- templateUrl: 'views/shareApp.html'
+ 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
@@ -887,7 +893,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
views: {
'tab-home@tabs': {
controller: 'amountController',
- controllerAs: 'vm',
templateUrl: 'views/amount.html'
}
}
@@ -953,7 +958,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
views: {
'tab-home@tabs': {
controller: 'amountController',
- controllerAs: 'vm',
templateUrl: 'views/amount.html'
}
}
@@ -1012,7 +1016,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
/* Shapeshift */
.state('tabs.shapeshift', {
- url: '/shapeshift/:fromWalletId/:toWalletId',
+ url: '/shapeshift',
views: {
'tab-home@tabs': {
controller: 'shapeshiftController',
@@ -1073,7 +1077,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
views: {
'tab-home@tabs': {
controller: 'amountController',
- controllerAs: 'vm',
templateUrl: 'views/amount.html'
}
},
@@ -1126,7 +1129,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
views: {
'tab-home@tabs': {
controller: 'amountController',
- controllerAs: 'vm',
templateUrl: 'views/amount.html'
}
},
@@ -1183,7 +1185,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
views: {
'tab-home@tabs': {
controller: 'amountController',
- controllerAs: 'vm',
templateUrl: 'views/amount.html'
}
}
@@ -1207,82 +1208,9 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
}
});
})
- .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 => */ buydotbitcoindotcomService, pushNotificationsService, glideraService, amazonService, bitpayCardService, applicationService, mercadoLibreService, rateService) {
+ .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 => */ buydotbitcoindotcomService, glideraService, amazonService, bitpayCardService, applicationService, mercadoLibreService, rateService) {
$ionicPlatform.ready(function() {
-
- // Init BitAnalytics
- var os = platformInfo.isAndroid ? 'android' : platformInfo.isIOS ? 'ios' : 'desktop';
- window.BitAnalytics.initialize(os, $window.fullVersion, {"firebase": {},
- "ga": {
- "trackingId": "UA-59964190-23",
- "eventLabels": ["id", "icon-off"]
- },
- "adjust": {
- "token": "au1onbhgg5q8",
- "environment" : "production",
- "eventTypes": {
- "banner_click": "sc5i8u",
- "buy_bitcoin_click": "t1vcdz",
- "transfer_success": "f68evo",
- "wallet_created": "nd3dg5",
- "wallet_opened": "4n39l7"
- }
- }
- });
-
- configService.whenAvailable(function(config) {
- pushNotificationsService.init();
- });
- //firebaseEventsService.init();
-
- var channel = "ga";
- if (platformInfo.isCordova) {
- channel = "firebase";
- }
-
- // Send a log to test
- var log = new window.BitAnalytics.LogEvent("wallet_opened", [], [channel, "adjust"]);
- window.BitAnalytics.LogEventHandlers.postEvent(log);
-
- var actionBanner = new window.BitAnalytics.ActionFactory.createAction('click', {
- name: 'banner_click',
- class: 'track_banner_click',
- params: ['href-banner', 'id'],
- channels: [channel, 'adjust']
- });
- window.BitAnalytics.ActionHandlers.trackAction(actionBanner);
-
- var actionBuyBitcoin = new window.BitAnalytics.ActionFactory.createAction('click', {
- name: 'buy_bitcoin_click',
- class: 'track_buy_bitcoin_click',
- params: ['href', 'id'],
- channels: [channel, 'adjust']
- });
- window.BitAnalytics.ActionHandlers.trackAction(actionBuyBitcoin);
-
- var actionLinkClickOut = new window.BitAnalytics.ActionFactory.createAction('click', {
- name: 'link_click_out',
- class: 'track_link_click_out',
- params: ['href', 'id'],
- channels: [channel]
- });
- window.BitAnalytics.ActionHandlers.trackAction(actionLinkClickOut);
-
- var actionTabOpen = new window.BitAnalytics.ActionFactory.createAction('click', {
- name: 'tab_open',
- class: 'track_tab_open',
- params: ['href', 'title', 'icon-off'],
- channels: [channel]
- });
- window.BitAnalytics.ActionHandlers.trackAction(actionTabOpen);
-
- var actionShapeShiftStart = new window.BitAnalytics.ActionFactory.createAction('click', {
- name: 'shapeshift_start_click',
- class: 'track_shapeshift_start_click',
- channels: [channel]
- });
- window.BitAnalytics.ActionHandlers.trackAction(actionShapeShiftStart);
// Init language
uxLanguage.init(function (lang) {
@@ -1323,10 +1251,6 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
if (screen.width < 768 && platformInfo.isCordova)
screen.lockOrientation('portrait');
- if (ionic.Platform.isAndroid() && platformInfo.isCordova && StatusBar) {
- StatusBar.backgroundColorByHexString('#000000');
- }
-
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard && !platformInfo.isWP) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(false);
cordova.plugins.Keyboard.disableScroll(true);
@@ -1453,13 +1377,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
}
win.menu = nativeMenuBar;
}
-
- $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
- if (document.body.classList.contains('keyboard-open')) {
- document.body.classList.remove('keyboard-open');
- $log.debug('Prevented keyboard open bug..');
- }
+ $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/bannerService.js b/src/js/services/bannerService.js
deleted file mode 100644
index d48d8861e..000000000
--- a/src/js/services/bannerService.js
+++ /dev/null
@@ -1,78 +0,0 @@
-'use strict';
-angular.module('copayApp.services').factory('bannerService', function ($http, $log) {
- // Export
- var root = {};
-
- // Constant
- var API_URL = 'https://bwscash.bitcoin.com/bws/api/v1/marketing';
-
- // Variable
- var hasFetched = false;
- var banners = [];
- var defaultBanner = {
- id: 'default-banner',
- imageURL: 'img/banner-store.png',
- url: 'https://store.bitcoin.com/',
- isLocal: true
- };
-
- // Private methods
- var fetchSettings = function (cb) {
- var req = {
- method: 'GET',
- url: API_URL+'/settings',
- headers: {
- 'Content-Type': 'application/json',
- 'Accept': 'application/json'
- }
- };
- $http(req).then(function (response) {
- $log.info('Get banner settings: SUCCESS');
- banners = response.data;
- return cb(true);
- }, function (error) {
- $log.error('Get banner settings: ERROR ' + error.statusText);
- return cb(false);
- });
- };
-
- root.getBanner = function (cb) {
-
- // If not fetch get the banner
- if (!hasFetched) {
- hasFetched = true;
-
- // If never fetch, lets fetch
- fetchSettings(function (isSuccess) {
- root.getBanner(cb);
- });
-
- // If fetch, and got banners, lets have a look
- } else if (banners.length > 0) {
- var selectedBanners = [];
- for(var i in banners) {
- var banner = banners[i];
-
- // Generate the URL for the banner
- var fileName = banner.image.substring(0, banner.image.lastIndexOf('.'));
- var extension = banner.image.substring(banner.image.lastIndexOf('.')+1);
- banner.imageURL = API_URL +'/banners/'+fileName+"/"+extension;
-
- // Add the banner
- selectedBanners.push(banners[i]);
- }
-
- // If no banner activated, return the default one
- if (selectedBanners.length == 0) {
- return cb(defaultBanner);
- } else {
- return cb(selectedBanners[Math.floor(Math.random()*banners.length)]);
- }
-
- } else {
- return cb(defaultBanner);
- }
- };
-
- return root;
-});
\ No newline at end of file
diff --git a/src/js/services/bitcoin-uri.service.js b/src/js/services/bitcoin-uri.service.js
deleted file mode 100644
index 3da84f3da..000000000
--- a/src/js/services/bitcoin-uri.service.js
+++ /dev/null
@@ -1,416 +0,0 @@
-'use strict';
-
-// https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki
-// https://github.com/bitcoin/bips/blob/master/bip-0072.mediawiki
-
-(function(){
-
- angular
- .module('bitcoincom.services')
- .factory('bitcoinUriService', bitcoinUriService);
-
- function bitcoinUriService(bitcoinCashJsService, bwcService, $log) {
- var bch = bitcoinCashJsService.getBitcoinCashJs();
- var bitcore = bwcService.getBitcore();
-
- var service = {
- parse: parse
- };
-
- return service;
-
- function bitpayAddrOnMainnet(address) {
- var Address = bch.Address;
- var BitpayFormat = Address.BitpayFormat;
-
- var mainnet = bch.Networks.mainnet;
-
- var result = null;
- if (address[0] == 'C') {
- try {
- result = Address.fromString(address, mainnet, 'pubkeyhash', BitpayFormat);
- } catch (e) {};
-
- } else if (address[0] == 'H') {
- try {
- result = Address.fromString(address, mainnet, 'scripthash', BitpayFormat);
- } catch (e) {};
-
- }
- return result;
- }
-
- function cashAddrOnMainnet(address) {
- var Address = bch.Address;
- var CashAddrFormat = Address.CashAddrFormat;
-
- var mainnet = bch.Networks.mainnet;
-
- var prefixed = 'bitcoincash:' + address;
- var result = null;
- if (address[0] == 'q') {
- try {
- result = Address.fromString(prefixed, mainnet, 'pubkeyhash', CashAddrFormat);
- } catch (e) {};
-
- } else if (address[0] == 'p') {
- try {
- result = Address.fromString(prefixed, mainnet, 'scripthash', CashAddrFormat);
- } catch (e) {};
-
- }
- return result;
- }
-
- function cashAddrOnTestnet(address) {
- var Address = bch.Address;
- var CashAddrFormat = Address.CashAddrFormat;
-
- var testnet = bch.Networks.testnet;
-
- var prefixed = 'bchtest:' + address;
- var result = null;
- if (address[0] == 'q') {
- try {
- result = Address.fromString(prefixed, testnet, 'pubkeyhash', CashAddrFormat);
- } catch (e) {};
-
- } else if (address[0] == 'p') {
- try {
- result = Address.fromString(prefixed, testnet, 'scripthash', CashAddrFormat);
- } catch (e) {};
-
- }
- return result;
- }
-
- function infoFromWalletImportText(data) {
- var split = data.split('|');
- // Copay seems to use extra parameter for coin.
- if (split.length < 5 || split.length > 6) {
- return null;
- }
-
- var type = parseInt(split[0], 10);
- if (isNaN(type)) {
- return null;
- }
-
- var data = split[1];
- var network = split[2];
- if (!(network === 'livenet' || network === 'testnet')) {
- return null;
- }
- var isTestnet = network === 'testnet';
-
- var derivationPath = split[3];
- if (!/^m\/\d+'\/\d+'\/\d+'$/.test(derivationPath)) {
- return null;
- }
-
- var hasPassphraseText = split[4];
- if (!(hasPassphraseText === 'true' || hasPassphraseText === 'false')) {
- return null;
- }
- var hasPassphrase = hasPassphraseText === 'true';
-
- var coin; // Intentionally undefined as may not be present
- if (split.length > 5) {
- var coinText = split[5];
- if (!(coinText === 'bch' || coinText === 'btc')) {
- return null;
- }
- coin = coinText;
- }
-
- return {
- type: type,
- data: data,
- isTestnet: isTestnet,
- derivationPath: derivationPath,
- hasPassphrase: hasPassphrase,
- coin: coin
- };
- }
-
- /*
- For parsing:
- BIP21
- BIP72
-
- returns:
- {
- amount: '',
- amountInSatoshis: 0,
- bareUrl: '',
- coin: '',
- copayInvitation: '',
- import: { // testnet info in root, coin info in root if available
- data: '',
- derivationPath: '',
- hasPassphrase: false,
- type: 1,
- },
- isValid: false,
- label: '',
- message: '',
- other: {
- somethingIDontUnderstand: 'Its value'
- },
- privateKey: {
- encrypted: '',
- wif: ''
- }'',
- publicAddress: {
- bitpay: '',
- cashAddr: '',
- legacy: '',
- },
- req: {
- "req-param0": '',
- "req-param1": ''
- },
- testnet: false,
- url: '' // For BIP70
- }
-
- Only fields that are present in the data are defined in the returned object. Both privateKey and publicAddress only have 1 field defined, if they exist at all.
- The exception to this is the coin property, which is determined from other data, such as the prefix or address type.
-
- */
-
- function parse(data) {
- var parsed = {
- isValid: false
- };
-
- if (typeof data !== 'string') {
- return parsed;
- }
-
- // Identify prefix
- var trimmed = data.trim();
- var colonSplit = /^([\w-]*):?(.*)$/.exec(trimmed);
- if (!colonSplit) {
- return parsed;
- }
-
- var addressAndParams = '';
- var preColonLower = colonSplit[1].toLowerCase();
- if (preColonLower === 'bitcoin') {
- parsed.coin = 'btc';
- addressAndParams = colonSplit[2].trim();
- console.log('Is btc');
-
- } else if (/^(?:bitcoincash)|(?:bitcoin-cash)$/.test(preColonLower)) {
- parsed.coin = 'bch';
- parsed.test = false;
- addressAndParams = colonSplit[2].trim();
- console.log('Is bch');
-
- } else if (/^(?:bchtest)$/.test(preColonLower)) {
- parsed.coin = 'bch';
- parsed.isTestnet = true;
- addressAndParams = colonSplit[2].trim();
- console.log('Is bch');
-
- } else if (colonSplit[2] === '') {
- // No colon and no coin specifier.
- addressAndParams = colonSplit[1].trim();
- console.log('No prefix.');
-
- } else if (/^https?$/.test(colonSplit[1])) { // Plain URL
- addressAndParams = trimmed;
-
- } else if (colonSplit[2].indexOf('|') == 0) { // Import
- addressAndParams = trimmed
- } else {
- // Something we don't recognise
- return parsed;
- }
-
- // Remove erroneous leading slashes
- //var leadingSlashes = /^\/*([^\/]+(?:.*))$/.exec(addressAndParams);
- var leadingSlashes = /^\/*(.*)$/.exec(addressAndParams);
- if (!leadingSlashes) {
- return parsed;
- }
- addressAndParams = leadingSlashes[1];
-
- var questionMarkSplit = /^([^\?]*)\??([^\?]*)$/.exec(addressAndParams);
- if (!questionMarkSplit) {
- return parsed;
- }
-
- var address = questionMarkSplit[1];
- var params = questionMarkSplit[2];
-
- if (params.length > 0) {
- var paramsSplit = params.split('&');
- var others;
- var req;
- var paramCount = paramsSplit.length;
- for(var i = 0; i < paramCount; i++) {
- var param = paramsSplit[i];
- var valueSplit = param.split('=');
- if (valueSplit.length !== 2) {
- return parsed;
- }
-
- var key = valueSplit[0];
- var value = valueSplit[1];
- var decodedValue = decodeURIComponent(value);
- switch(key) {
- case 'amount':
- var amount = parseFloat(decodedValue);
- if (amount) { // Checking for NaN, or no numbers at all etc. & convert to satoshi
- parsed.amount = decodedValue; // Need to check if a currency is precised
- parsed.amountInSatoshis = amount * 100000000
- } else {
- return parsed;
- }
- break;
-
- case 'label':
- parsed.label = decodedValue;
- break;
-
- case 'message':
- parsed.message = decodedValue;
- break;
-
- case 'r':
- // Could use a more comprehesive regex to test URL validity, but then how would we know
- // which part of the validation it failed?
- if (decodedValue.startsWith('https://')) {
- parsed.url = decodedValue;
- } else {
- return parsed;
- }
- break;
-
- default:
- if (key.startsWith('req-')) {
- req = req || {};
- req[key] = decodedValue;
- } else {
- others = others || {};
- others[key] = decodedValue;
- }
- }
-
- };
- }
-
- parsed.others = others;
- parsed.req = req;
-
-
- if (address) {
- var addressLowerCase = address.toLowerCase();
- var copayInvitationRe = /^[0-9A-HJ-NP-Za-km-z]{70,80}$/;
- //var legacyRe = /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$/;
- //var legacyTestnetRe = /^[mn][a-km-zA-HJ-NP-Z1-9]{25,34}$/;
- var privateKeyEncryptedRe = /^6P[1-9A-HJ-NP-Za-km-z]{56}$/;
- var privateKeyForUncompressedPublicKeyRe = /^5[1-9A-HJ-NP-Za-km-z]{50}$/;
- var privateKeyForUncompressedPublicKeyTestnetRe = /^9[1-9A-HJ-NP-Za-km-z]{50}$/;
- var privateKeyForCompressedPublicKeyRe = /^[KL][1-9A-HJ-NP-Za-km-z]{51}$/;
- var privateKeyForCompressedPublicKeyTestnetRe = /^[c][1-9A-HJ-NP-Za-km-z]{51}$/;
- var urlRe = /^https?:\/\/.+/;
-
- var bitpayAddrMainnet = bitpayAddrOnMainnet(address);
- var cashAddrTestnet = cashAddrOnTestnet(addressLowerCase);
- var cashAddrMainnet = cashAddrOnMainnet(addressLowerCase);
- var importInfo = infoFromWalletImportText(address);
- var privateKey = '';
-
- if (parsed.isTestnet && cashAddrTestnet) {
- parsed.address = addressLowerCase;
- parsed.coin = 'bch';
- parsed.publicAddress = {
- cashAddr: addressLowerCase
- };
- parsed.isValid = true;
-
- } else if (cashAddrMainnet) {
- parsed.coin = 'bch';
- parsed.publicAddress = {
- cashAddr: addressLowerCase
- };
- parsed.isTestnet = false;
- parsed.isValid = true;
-
- } else if (bitcore.Address.isValid(address, 'livenet')) {
- parsed.publicAddress = {
- legacy: address
- };
- parsed.isTestnet = false;
- parsed.isValid = true;
-
- } else if (bitcore.Address.isValid(address, 'testnet')) {
- parsed.publicAddress = {
- legacy: address
- };
- parsed.isTestnet = true;
- parsed.isValid = true;
-
- } else if (bitpayAddrMainnet) {
- parsed.coin = 'bch';
- parsed.publicAddress = {
- bitpay: address
- };
- parsed.isTestnet = false;
- parsed.isValid = true;
-
- } else if (copayInvitationRe.test(address) ) {
- parsed.copayInvitation = address;
- parsed.isValid = true;
-
- } else if (privateKeyForUncompressedPublicKeyRe.test(address) || privateKeyForCompressedPublicKeyRe.test(address)) {
- privateKey = address;
- try {
- new bitcore.PrivateKey(privateKey, 'livenet');
- parsed.privateKey = { wif: privateKey };
- parsed.isTestnet = false;
- parsed.isValid = true;
- } catch (e) {}
-
- } else if (privateKeyForUncompressedPublicKeyTestnetRe.test(address) || privateKeyForCompressedPublicKeyTestnetRe.test(address)) {
- privateKey = address;
- try {
- new bitcore.PrivateKey(privateKey, 'testnet');
- parsed.privateKey = { wif: privateKey };
- parsed.isTestnet = true;
- parsed.isValid = true;
- } catch (e) {}
-
- } else if (privateKeyEncryptedRe.test(address)) {
- parsed.privateKey = { encrypted: address };
- parsed.isValid = true;
-
- } else if (urlRe.test(address)) {
- parsed.bareUrl = trimmed;
- parsed.isValid = true;
-
- } else if (importInfo) {
- parsed.import = {
- type: importInfo.type,
- data: importInfo.data,
- derivationPath: importInfo.derivationPath,
- hasPassphrase: importInfo.hasPassphrase
- };
- parsed.coin = importInfo.coin;
- parsed.isTestnet = importInfo.isTestnet;
- parsed.isValid = true;
- }
-
- } else {
- parsed.isValid = !!parsed.url; // BIP72
- }
-
- return parsed;
- }
-
- }
-
-})();
diff --git a/src/js/services/bitcoin-uri.service.spec.js b/src/js/services/bitcoin-uri.service.spec.js
deleted file mode 100644
index 2ddbd0d2e..000000000
--- a/src/js/services/bitcoin-uri.service.spec.js
+++ /dev/null
@@ -1,429 +0,0 @@
-describe('bitcoinUriService', function() {
- var bitcoinUriService;
-
- beforeEach(function() {
- module('bitcoinCashJsModule');
- module('bitcoincom.services');
- module('bwcModule');
-
- inject(function($injector){
- bitcoinUriService = $injector.get('bitcoinUriService');
- });
- });
-
-
- it('Bitcoin BIP72', function() {
-
- var parsed = bitcoinUriService.parse('bitcoin:?r=https://bitpay.com/i/CwzbKP3k3JNgXJBfuoerDr');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('btc');
- expect(parsed.isTestnet).toBeUndefined();
- expect(parsed.publicAddress).toBeUndefined();
- expect(parsed.url).toBe('https://bitpay.com/i/CwzbKP3k3JNgXJBfuoerDr');
- });
-
- it('Bitcoin Cash BIP72', function() {
-
- var parsed = bitcoinUriService.parse('bitcoincash:?r=https://bitpay.com/i/SmHdie5dvBnG5kouZzEPzu');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress).toBeUndefined();
- expect(parsed.isTestnet).toBeUndefined();
- expect(parsed.url).toBe('https://bitpay.com/i/SmHdie5dvBnG5kouZzEPzu');
- });
-
- it('Bitcoin Cash prefix with legacy address', function() {
-
- var parsed = bitcoinUriService.parse('bitcoincash:1G9FA9fFnHfTYxvmXeAbBD9FwzPAVMbd3j');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.legacy).toBe('1G9FA9fFnHfTYxvmXeAbBD9FwzPAVMbd3j');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('Bitcoin Cash prefix with legacy address on testnet', function() {
-
- var parsed = bitcoinUriService.parse('bitcoincash:mkDQrKfSFD441JxrD1iPBsJFExgkvrPGQn');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.legacy).toBe('mkDQrKfSFD441JxrD1iPBsJFExgkvrPGQn');
- expect(parsed.isTestnet).toBe(true);
- });
-
- it('Bitcoin Cash uri with extended params', function() {
-
- var parsed = bitcoinUriService.parse('bitcoincash:qr8v2vqnzntykakht43rqmxq8cdjzjp795fc3vsjgc?unknown=something&mystery=Melton%20probang&req-one=ichi&req-beta=Ni%20san');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.others.mystery).toBe('Melton probang');
- expect(parsed.others.unknown).toBe('something');
- expect(parsed.publicAddress.cashAddr).toBe('qr8v2vqnzntykakht43rqmxq8cdjzjp795fc3vsjgc');
- expect(parsed.req['req-beta']).toBe('Ni san');
- expect(parsed.req['req-one']).toBe('ichi');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('Bitcoin Cash uri with invalid amount', function() {
-
- var parsed = bitcoinUriService.parse('bitcoincash:qq0knhwj4d5zy3kdph24w6etq58vwzua6sm7lhcmuk?amount=three');
-
- expect(parsed.isValid).toBe(false);
- });
-
-
- it('Bitcoin testnet address', function() {
-
- var parsed = bitcoinUriService.parse('mtWcoToWhbtPoCby5fvs8xdBujT5GGenD4');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBeUndefined();
- expect(parsed.publicAddress.legacy).toBe('mtWcoToWhbtPoCby5fvs8xdBujT5GGenD4');
- expect(parsed.isTestnet).toBe(true);
- });
-
- it('Bitcoin uri', function() {
-
- var parsed = bitcoinUriService.parse('bitcoin:15yCdKWVKRvfXMJpPYZBqMhiGKwjKzZdLN');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('btc');
- expect(parsed.publicAddress.legacy).toBe('15yCdKWVKRvfXMJpPYZBqMhiGKwjKzZdLN');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('Bitcoin uri with encoded label', function() {
-
- var parsed = bitcoinUriService.parse('bitcoin:1MxudKDEBWZ1yjizUSf6htacenNtb3DWbT?label=Mr.%20Smith');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('btc');
- expect(parsed.label).toBe('Mr. Smith');
- expect(parsed.publicAddress.legacy).toBe('1MxudKDEBWZ1yjizUSf6htacenNtb3DWbT');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('Bitcoin uri with params', function() {
-
- var parsed = bitcoinUriService.parse('bitcoin:12nCRhMDfxVnuF3uYMXv2fNxBohNmacfWu?amount=20.3&label=Luke-Jr&message=Donation%20for%20project%20xyz');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.amount).toBe('20.3');
- expect(parsed.amountInSatoshis).toBe(2030000000);
- expect(parsed.coin).toBe('btc');
- expect(parsed.label).toBe('Luke-Jr');
- expect(parsed.publicAddress.legacy).toBe('12nCRhMDfxVnuF3uYMXv2fNxBohNmacfWu');
- expect(parsed.message).toBe('Donation for project xyz');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('Bitcoin uri with slash', function() {
-
- var parsed = bitcoinUriService.parse('bitcoin:/1GhpYmbRaf73AZRxDwAGr6653iZBGzdgeA');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('btc');
- expect(parsed.publicAddress.legacy).toBe('1GhpYmbRaf73AZRxDwAGr6653iZBGzdgeA');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('Bitcoin uri with slashes', function() {
-
- var parsed = bitcoinUriService.parse('bitcoin://18PCPhgZJjLxe9g3Q1BXLpL5aVut1fW3aX');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('btc');
- expect(parsed.publicAddress.legacy).toBe('18PCPhgZJjLxe9g3Q1BXLpL5aVut1fW3aX');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('Bitcoin uri with space', function() {
-
- var parsed = bitcoinUriService.parse('bitcoin: 19cPoKU5ZazY8NkLEsxK7drBqJnpGkax3d');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('btc');
- expect(parsed.publicAddress.legacy).toBe('19cPoKU5ZazY8NkLEsxK7drBqJnpGkax3d');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('Bitpay without prefix', function() {
-
- var parsed = bitcoinUriService.parse('CJoRov8TirekvajiimQpb5Hk95evA7H2Yz');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.bitpay).toBe('CJoRov8TirekvajiimQpb5Hk95evA7H2Yz');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('legacy address', function() {
-
- var parsed = bitcoinUriService.parse('1JXeGEu7bNEAYu6URT6dU6g1Ys6ffSAWYW');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBeUndefined();
- expect(parsed.publicAddress.legacy).toBe('1JXeGEu7bNEAYu6URT6dU6g1Ys6ffSAWYW');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('cashAddr testnet with prefix', function() {
-
- var parsed = bitcoinUriService.parse('bchtest:qpcz6pmurq9ctg5848trzz9zmuuygj4q5qam7ph3gt');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.cashAddr).toBe('qpcz6pmurq9ctg5848trzz9zmuuygj4q5qam7ph3gt');
- expect(parsed.isTestnet).toBe(true);
- });
-
- it('cashAddr uppercase', function() {
-
- var parsed = bitcoinUriService.parse('BITCOINCASH:QZZG9NMC5VX8GAP6XFATX3TWNSDN2YRMCSSULSMY44');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.cashAddr).toBe('qzzg9nmc5vx8gap6xfatx3twnsdn2yrmcssulsmy44');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('cashAddr with dash', function() {
-
- var parsed = bitcoinUriService.parse('bitcoin-cash:qpshfu3dk5s3e7zdcgdcun6xgxtra6uyxs7g580js0');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.cashAddr).toBe('qpshfu3dk5s3e7zdcgdcun6xgxtra6uyxs7g580js0');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('cashAddr with prefix', function() {
-
- var parsed = bitcoinUriService.parse('bitcoincash:qrq9p82a247lecv08ldk5p5h6ahtnjzpqcnh8yhq92');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.cashAddr).toBe('qrq9p82a247lecv08ldk5p5h6ahtnjzpqcnh8yhq92');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('cashAddr with slash', function() {
-
- var parsed = bitcoinUriService.parse('bitcoincash:/qzdectfmuw0xxztfx7mh045830dqcshj85hr44l35a');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.cashAddr).toBe('qzdectfmuw0xxztfx7mh045830dqcshj85hr44l35a');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('cashAddr with slashes', function() {
-
- var parsed = bitcoinUriService.parse('bitcoincash://qpj966w8utue75lqqq3rlgh20zkz3rmydqpq8syv9c');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.cashAddr).toBe('qpj966w8utue75lqqq3rlgh20zkz3rmydqpq8syv9c');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('cashAddr with space', function() {
-
- var parsed = bitcoinUriService.parse('bitcoincash: qpar9ldle8z6alcwgclejdhc24ha2xrg0szs5802ce');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.cashAddr).toBe('qpar9ldle8z6alcwgclejdhc24ha2xrg0szs5802ce');
- expect(parsed.isTestnet).toBe(false);
- });
-
-
- it('cashAddr with space on testnet', function() {
-
- var parsed = bitcoinUriService.parse('bchtest: qqjxkmtaxk4nv6w9h5ht2fjcj9c7ruh0fu7cnxsx5j');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.cashAddr).toBe('qqjxkmtaxk4nv6w9h5ht2fjcj9c7ruh0fu7cnxsx5j');
- expect(parsed.isTestnet).toBe(true);
- });
-
- it('cashAddr without prefix', function() {
-
- var parsed = bitcoinUriService.parse('qqen2y3l28dpk0dzsag8w027ds96u7z4pc0uxtl0nq');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.coin).toBe('bch');
- expect(parsed.publicAddress.cashAddr).toBe('qqen2y3l28dpk0dzsag8w027ds96u7z4pc0uxtl0nq');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('copay invitation', function() {
-
- var parsed = bitcoinUriService.parse('PD5B7rEEj72st9d5nFszyuKxJP6FAGS7idVC2SMqiMxUcWVd8JifZDJw1UgjUctxefUFE3Sz6qLbch');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.copayInvitation).toBe('PD5B7rEEj72st9d5nFszyuKxJP6FAGS7idVC2SMqiMxUcWVd8JifZDJw1UgjUctxefUFE3Sz6qLbch');
- });
-
-
- it ('import BCH wallet no password', function() {
- var parsed = bitcoinUriService.parse("1|suggest route obvious broccoli good position hidden tone history around final lobster|livenet|m/44'/0'/0'|false");
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.import.type).toBe(1);
- expect(parsed.import.data).toBe('suggest route obvious broccoli good position hidden tone history around final lobster');
- expect(parsed.isTestnet).toBe(false);
- expect(parsed.import.derivationPath).toBe("m/44'/0'/0'");
- expect(parsed.import.hasPassphrase).toBe(false);
- });
-
- it ('import BCH wallet with passphrase', function() {
- var parsed = bitcoinUriService.parse("1|fringe hazard all hobby trap myth fire stand sock empty soon east|livenet|m/44'/0'/0'|true");
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.import.type).toBe(1);
- expect(parsed.import.data).toBe('fringe hazard all hobby trap myth fire stand sock empty soon east');
- expect(parsed.isTestnet).toBe(false);
- expect(parsed.import.derivationPath).toBe("m/44'/0'/0'");
- expect(parsed.import.hasPassphrase).toBe(true);
- });
-
- it ('import BTC wallet testnet', function() {
- // From copay
- var parsed = bitcoinUriService.parse("1|cat wealth column firm wet sauce tornado era feature monster click eyebrow|testnet|m/44'/1'/0'|false|btc");
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.import.type).toBe(1);
- expect(parsed.import.data).toBe('cat wealth column firm wet sauce tornado era feature monster click eyebrow');
- expect(parsed.isTestnet).toBe(true);
- expect(parsed.import.derivationPath).toBe("m/44'/1'/0'");
- expect(parsed.import.hasPassphrase).toBe(false);
- });
-
- // Invalid addresses from https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md
- it('invalid cashAddr style 1', function() {
- var parsed = bitcoinUriService.parse('prefix:x64nx6hz');
- expect(parsed.isValid).toBe(false);
- });
-
- it('invalid cashAddr style 2', function() {
- var parsed = bitcoinUriService.parse('p:gpf8m4h7');
- expect(parsed.isValid).toBe(false);
- });
-
- it('invalid cashAddr style 3', function() {
- var parsed = bitcoinUriService.parse('bitcoincash:qpzry9x8gf2tvdw0s3jn54khce6mua7lcw20ayyn');
- expect(parsed.isValid).toBe(false);
- });
-
- it('invalid cashAddr style 4', function() {
- var parsed = bitcoinUriService.parse('bchtest:testnetaddress4d6njnut');
- expect(parsed.isValid).toBe(false);
- });
-
- it('invalid cashAddr style 5', function() {
- var parsed = bitcoinUriService.parse('bchreg:555555555555555555555555555555555555555555555udxmlmrz');
- expect(parsed.isValid).toBe(false);
- });
-
- it('non-string', function() {
-
- var parsed = bitcoinUriService.parse([1, 2, 3, 4]);
-
- expect(parsed.isValid).toBe(false);
- });
-
- it('private key encrypted with BIP38', function() {
-
- var parsed = bitcoinUriService.parse('6PRN5nEDmX842gsBzJryPu8Tw5kcsaQq1GPLcjVQPcEStvbFAtz11JX9pX');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.privateKey.encrypted).toBe('6PRN5nEDmX842gsBzJryPu8Tw5kcsaQq1GPLcjVQPcEStvbFAtz11JX9pX');
- });
-
- it('private key for compressed pubkey mainnet', function() {
-
- var parsed = bitcoinUriService.parse('5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.privateKey.wif).toBe('5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('private key for compressed pubkey mainnet with wrong checksum', function() {
-
- var parsed = bitcoinUriService.parse('5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTu');
-
- expect(parsed.isValid).toBe(false);
- });
-
- it('private key for compressed pubkey testnet', function() {
-
- var parsed = bitcoinUriService.parse('cNJFgo1driFnPcBdBX8BrJrpxchBWXwXCvNH5SoSkdcF6JXXwHMm');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.privateKey.wif).toBe('cNJFgo1driFnPcBdBX8BrJrpxchBWXwXCvNH5SoSkdcF6JXXwHMm');
- expect(parsed.isTestnet).toBe(true);
- });
-
- it('private key for compressed pubkey testnet with wrong checksum', function() {
-
- var parsed = bitcoinUriService.parse('cNJFgo1driFnPcBdBX8BrJrpxchBWXwXCvNH5SoSkdcF6JXXwHMM');
-
- expect(parsed.isValid).toBe(false);
- });
-
- it('private key for uncompressed pubkey mainnet', function() {
-
- var parsed = bitcoinUriService.parse('L18V3rAhCKEioPnJ4BHLCCsaYa8eSNFrMjNQ2EdwgeAdmBSnTMwx');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.privateKey.wif).toBe('L18V3rAhCKEioPnJ4BHLCCsaYa8eSNFrMjNQ2EdwgeAdmBSnTMwx');
- expect(parsed.isTestnet).toBe(false);
- });
-
- it('private key for uncompressed pubkey mainnet with wrong checksum', function() {
-
- var parsed = bitcoinUriService.parse('L18V3rAhCKEioPnJ4BHLCCsaYa8eSNFrMjNQ2EdwgeAdmBSnTTwx');
-
- expect(parsed.isValid).toBe(false);
- });
-
- it('private key for uncompressed pubkey testnet', function() {
-
- var parsed = bitcoinUriService.parse('92Pg46rUhgTT7romnV7iGW6W1gbGdeezqdbJCzShkCsYNzyyNcc');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.privateKey.wif).toBe('92Pg46rUhgTT7romnV7iGW6W1gbGdeezqdbJCzShkCsYNzyyNcc');
- expect(parsed.isTestnet).toBe(true);
- });
-
- it('private key for uncompressed pubkey testnet with wrong checksum', function() {
-
- var parsed = bitcoinUriService.parse('92Pg46rUhgTT7romnV7iGW6W1gbGdeezqdbJCzShkCsYNzyyNcC');
-
- expect(parsed.isValid).toBe(false);
- });
-
- it('URL only, http', function() {
-
- var parsed = bitcoinUriService.parse('http://paperwallet.bitcoin.com');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.bareUrl).toBe('http://paperwallet.bitcoin.com');
- });
-
- it('URL only, https with query', function() {
-
- var parsed = bitcoinUriService.parse('https://purse.io/?one=two&three=four');
-
- expect(parsed.isValid).toBe(true);
- expect(parsed.bareUrl).toBe('https://purse.io/?one=two&three=four');
- });
-
-});
\ No newline at end of file
diff --git a/src/js/services/bitcoincomService.js b/src/js/services/bitcoincomService.js
index 62a75b4d1..07e0d8aa4 100644
--- a/src/js/services/bitcoincomService.js
+++ b/src/js/services/bitcoincomService.js
@@ -1,13 +1,12 @@
'use strict';
-angular.module('copayApp.services').factory('bitcoincomService', function(gettextCatalog, nextStepsService, platformInfo) {
+angular.module('copayApp.services').factory('bitcoincomService', function($http, $log, lodash, moment, storageService, configService, platformInfo, nextStepsService, homeIntegrationsService) {
var root = {};
var credentials = {};
/*
* Development: 'testnet'
* Production: 'livenet'
- */
- var os = platformInfo.isAndroid ? 'android' : platformInfo.isIOS ? 'ios' : 'desktop';
+ */
credentials.NETWORK = 'livenet';
//credentials.NETWORK = 'testnet';
@@ -19,44 +18,30 @@ angular.module('copayApp.services').factory('bitcoincomService', function(gettex
var cashGamesItem = {
name: 'games',
- title: gettextCatalog.getString('Bitcoin Cash Games'),
+ title: 'Bitcoin Cash Games',
icon: 'icon-games',
- href: 'https://cashgames.bitcoin.com'
+ href: 'http://cashgames.bitcoin.com'
};
var newsItem = {
name: 'news',
- title: gettextCatalog.getString('News'),
+ title: 'News',
icon: 'icon-news',
- href: 'https://news.bitcoin.com/?utm_source=WalletApp&utm_medium=' + os + '&utm_campaign=News'
+ href: 'http://news.bitcoin.com'
};
var poolItem = {
name: 'pool',
- title: gettextCatalog.getString('Mining Pool'),
+ title: 'Mining Pool',
icon: 'icon-mining',
- href: 'https://pool.bitcoin.com/?utm_source=WalletApp&utm_medium=' + os + '&utm_campaign=Pool'
+ href: 'http://pool.bitcoin.com'
};
var toolsItem = {
name: 'tools',
- title: gettextCatalog.getString('Tools'),
+ title: 'Tools',
icon: 'icon-tools',
- href: 'https://tools.bitcoin.com/?utm_source=WalletApp&utm_medium=' + os + '&utm_campaign=Tools'
- };
-
- var priceChartItem = {
- name: 'pricechart',
- title: gettextCatalog.getString('Bitcoin Price Charts'),
- icon: 'icon-chart',
- sref: 'tabs.pricechart',
- };
-
- var faucetItem = {
- name: 'faucet',
- title: gettextCatalog.getString('Free Bitcoin Cash'),
- icon: 'icon-faucet',
- href: 'https://free.bitcoin.com/?utm_source=WalletApp&utm_medium=' + os + '&utm_campaign=Faucet'
+ href: 'http://tools.bitcoin.com'
};
var _getBitPay = function(endpoint) {
@@ -85,14 +70,10 @@ angular.module('copayApp.services').factory('bitcoincomService', function(gettex
};
var register = function() {
- if (!platformInfo.isAndroid) { // To comply with Google Play policies
- nextStepsService.register(cashGamesItem);
- }
+ nextStepsService.register(cashGamesItem);
nextStepsService.register(newsItem);
nextStepsService.register(poolItem);
nextStepsService.register(toolsItem);
- nextStepsService.register(priceChartItem);
- nextStepsService.register(faucetItem);
};
register();
diff --git a/src/js/services/buyAndSellService.js b/src/js/services/buyAndSellService.js
index e35403131..65a9a93c7 100644
--- a/src/js/services/buyAndSellService.js
+++ b/src/js/services/buyAndSellService.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.services').factory('buyAndSellService', function(gettextCatalog, $log, servicesService, lodash, $ionicScrollDelegate, $timeout) {
+angular.module('copayApp.services').factory('buyAndSellService', function($log, servicesService, lodash, $ionicScrollDelegate, $timeout) {
var root = {};
var services = [];
var linkedServices = [];
@@ -23,7 +23,7 @@ angular.module('copayApp.services').factory('buyAndSellService', function(gettex
if (linkedServices.length == 0) {
servicesService.register({
- title: gettextCatalog.getString('Buy Bitcoin'),
+ title: 'Buy Bitcoin',
name: 'buyandsell',
icon: 'icon-buy-bitcoin2',
sref: 'tabs.buyandsell',
diff --git a/src/js/services/clipboardService.js b/src/js/services/clipboardService.js
deleted file mode 100644
index 9b1a61fbe..000000000
--- a/src/js/services/clipboardService.js
+++ /dev/null
@@ -1,51 +0,0 @@
-'use strict';
-
-angular.module('copayApp.services').factory('clipboardService', function ($http, $log, $timeout, platformInfo, nodeWebkitService, gettextCatalog, ionicToast, clipboard) {
- var root = {};
-
- root.copyToClipboard = function (data) {
- if (!data) return;
-
- $log.debug("Copy '"+data+"' to clipboard");
- if (platformInfo.isCordova) {
- cordova.plugins.clipboard.copy(data);
- } else if (platformInfo.isNW) {
- nodeWebkitService.writeToClipboard(data);
- } else if (navigator && navigator.clipboard) {
- $log.debug("Use navigator clipboard.")
- navigator.clipboard.writeText(data).catch(function onClipboardError(err) {
- $log.debug("Clipboard writing is not supported in your browser..");
- });
- } else if (clipboard.supported) {
- clipboard.copyText(data);
- } else {
- // Not supported
- return;
- }
- };
-
- root.readFromClipboard = function (cb) {
- $log.debug("Read from clipboard");
- if (platformInfo.isCordova) {
- cordova.plugins.clipboard.paste(function(text) {
- cb(text);
- })
- } else if (platformInfo.isNW) {
- $timeout(function() {
- cb(nodeWebkitService.readFromClipboard());
- },0);
- } else {
- navigator.clipboard.readText()
- .then(function (text) {
- cb(text);
- })
- .catch(function (err) {
- $log.debug("Clipboard reading is not supported in browser..");
- });
-
- return;
- }
- };
-
- return root;
-});
\ No newline at end of file
diff --git a/src/js/services/communityService.js b/src/js/services/communityService.js
index 93a4afe5e..85e4b155f 100644
--- a/src/js/services/communityService.js
+++ b/src/js/services/communityService.js
@@ -1,5 +1,5 @@
'use strict'
-angular.module('copayApp.services').factory('communityService', function(configService, gettextCatalog, $log, lodash) {
+angular.module('copayApp.services').factory('communityService', function(configService, $log, lodash) {
var root = {};
var services = [];
@@ -37,15 +37,15 @@ angular.module('copayApp.services').factory('communityService', function(configS
var bchRedditItem = {
name: 'bchreddit',
- title: gettextCatalog.getString('Bitcoin Cash Reddit'),
- icon: 'icon-reddit-white',
+ title: 'Bitcoin Cash Reddit',
+ icon: 'icon-reddit',
href: 'http://reddit.com/r/btc'
};
var bitcoincomTwitterItem = {
name: 'bitcoincomTwitter',
- title: gettextCatalog.getString('Bitcoin.com Twitter'),
- icon: 'icon-twitter-white',
+ title: 'Bitcoin.com Twitter',
+ icon: 'icon-twitter',
href: 'https://twitter.com/BTCTN'
};
diff --git a/src/js/services/configService.js b/src/js/services/configService.js
index 6f2c0ec67..fcf496775 100644
--- a/src/js/services/configService.js
+++ b/src/js/services/configService.js
@@ -18,7 +18,7 @@ angular.module('copayApp.services').factory('configService', function(storageSer
},
bwscash: {
- url: 'https://bws.freepages.dk/bws/api'
+ url: 'https://bwscash.bitcoin.com/bws/api'
},
download: {
@@ -85,6 +85,10 @@ angular.module('copayApp.services').factory('configService', function(storageSer
enabled: true,
},
+ displayBitcoinCore: {
+ enabled: false,
+ },
+
hideNextSteps: {
enabled: isWindowsPhoneApp ? true : false,
},
@@ -107,7 +111,7 @@ angular.module('copayApp.services').factory('configService', function(storageSer
enabled: false,
},
- soundsEnabled: true,
+ soundsEnabled: false,
log: {
filter: 'debug',
@@ -115,8 +119,8 @@ angular.module('copayApp.services').factory('configService', function(storageSer
bitcoinAlias: 'btc',
bitcoinCashAlias: 'bch',
- bitcoinWalletColor: '#535353', // Dark Grey
- bitcoinCashWalletColor: '#eeb640', // Observatory
+ bitcoinWalletColor: '#fab915', // Observatory
+ bitcoinCashWalletColor: '#26B03C', // Dollar Green
homeSectionIsHidden: {
services: false
diff --git a/src/js/services/desktopSecureStorageService.js b/src/js/services/desktopSecureStorageService.js
deleted file mode 100644
index 6e148da2c..000000000
--- a/src/js/services/desktopSecureStorageService.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict';
-
-angular.module('copayApp.services').factory('desktopSecureStorageService', function($log) {
- // Placeholder
- return {};
-});
\ No newline at end of file
diff --git a/src/js/services/feeService.js b/src/js/services/feeService.js
index 5189527b2..bba972b81 100644
--- a/src/js/services/feeService.js
+++ b/src/js/services/feeService.js
@@ -12,7 +12,6 @@ angular.module('copayApp.services').factory('feeService', function($log, $timeou
normal: gettext('Normal'),
economy: gettext('Economy'),
superEconomy: gettext('Super Economy'),
-// free: gettext('No fee (works only for BCH)'),
custom: gettext('Custom')
};
@@ -32,7 +31,6 @@ angular.module('copayApp.services').factory('feeService', function($log, $timeou
root.getFeeRate = function(coin, network, feeLevel, cb) {
if (feeLevel == 'custom') return cb();
-// if (feeLevel == 'free') return cb(null, 0);
network = network || 'livenet';
@@ -50,8 +48,8 @@ angular.module('copayApp.services').factory('feeService', function($log, $timeou
})
});
}
- var feeRate = feeLevelRate.feePerKb;
+ var feeRate = feeLevelRate.feePerKb;
if (!fromCache) $log.debug('Dynamic fee: ' + feeLevel + '/' + network + ' ' + (feeLevelRate.feePerKb / 1000).toFixed() + ' SAT/B');
diff --git a/src/js/services/feedbackService.js b/src/js/services/feedbackService.js
new file mode 100644
index 000000000..ae4711d27
--- /dev/null
+++ b/src/js/services/feedbackService.js
@@ -0,0 +1,59 @@
+'use strict';
+angular.module('copayApp.services').factory('feedbackService', function($http, $log, $httpParamSerializer, configService) {
+ var root = {};
+// var URL = "https://script.google.com/macros/s/1pWGRxVSUX9CxPqNAKZTppWHtDvyVtZv9HteY_TRQbWc/exec";
+ var URL = "https://wallet-data.bitcoin.com/feedback.php";
+
+ 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/firebaseEventsService.js b/src/js/services/firebaseEventsService.js
index d6ce6f1cc..d81e682d7 100644
--- a/src/js/services/firebaseEventsService.js
+++ b/src/js/services/firebaseEventsService.js
@@ -1,5 +1,5 @@
'use strict';
-angular.module('copayApp.services').factory('firebaseEventsService', function firebaseEventsService($log, platformInfo) {
+angular.module('copayApp.services').factory('firebaseEventsService', function firebaseEventsService($log, $state, $ionicHistory, sjcl, platformInfo, lodash, appConfigService, profileService, configService) {
var root = {};
var useEvents = platformInfo.isCordova && !platformInfo.isWP;
diff --git a/src/js/services/incoming-data.service.js b/src/js/services/incoming-data.service.js
deleted file mode 100644
index eece6d17c..000000000
--- a/src/js/services/incoming-data.service.js
+++ /dev/null
@@ -1,79 +0,0 @@
-'use strict';
-
-/**
- * incomingDataService is an intermediate to redirect either to the sendFlow
- * or to import/join a wallet.
- */
-angular.module('copayApp.services').factory('incomingDataService', function(bitcoinUriService, $log, $state, $rootScope, scannerService, sendFlowService, gettextCatalog) {
-
- var root = {};
-
- root.showMenu = function(data) {
- $rootScope.$broadcast('incomingDataMenu.showMenu', data);
- };
-
- root.redir = function(data, cbError) {
- var parsed = bitcoinUriService.parse(data);
-
- console.log(parsed);
- $log.debug(parsed);
-
-
- if (parsed.isValid) {
- if (parsed.isTestnet) {
- if (cbError) {
- var errorMessage = gettextCatalog.getString('Testnet is not supported.');
- cbError(new Error(errorMessage));
- }
- } else {
- scannerService.pausePreview();
-
- /**
- * Strategy for the action
- */
- if (parsed.copayInvitation) {
- $state.go('tabs.home').then(function() {
- $state.transitionTo('tabs.add.join', {
- url: data
- });
- });
- } else if (parsed.import) {
- $state.go('tabs.home').then(function() {
- $state.transitionTo('tabs.add.import', {
- code: data
- });
- });
- } else if (
- !parsed.isValid
- || parsed.privateKey
- || (sendFlowService.state.isEmpty() && !parsed.url && !parsed.amount)
- ) {
- root.showMenu({
- original: data,
- parsed: parsed
- });
- } else {
- var state = sendFlowService.state.getClone();
- state.data = data;
-
- sendFlowService.start(state, function onError(err) {
- /**
- * OnError, open the menu (link not validated)
- */
- root.showMenu({
- original: data,
- parsed: parsed
- });
- });
- }
- }
- } else {
- if (cbError) {
- var errorMessage = gettextCatalog.getString('Data not recognised.');
- cbError(new Error(errorMessage));
- }
- }
- };
-
- return root;
-});
diff --git a/src/js/services/incomingData.js b/src/js/services/incomingData.js
new file mode 100644
index 000000000..b912c3233
--- /dev/null
+++ b/src/js/services/incomingData.js
@@ -0,0 +1,432 @@
+'use strict';
+
+angular.module('copayApp.services').factory('incomingData', function($log, $state, $timeout, $ionicHistory, bitcore, bitcoreCash, $rootScope, payproService, scannerService, appConfigService, popupService, gettextCatalog, bitcoinCashJsService) {
+
+ var root = {};
+
+ root.showMenu = function(data) {
+ $rootScope.$broadcast('incomingDataMenu.showMenu', data);
+ };
+
+ root.redir = function(data, shapeshiftData) {
+ var originalAddress = null;
+ var noPrefixInAddress = 0;
+
+ if (data.toLowerCase().indexOf('bitcoin') < 0) {
+ noPrefixInAddress = 1;
+ }
+
+ if (typeof(data) == 'string' && !(/^bitcoin(cash)?:\?r=[\w+]/).exec(data) && (data.toLowerCase().indexOf('bitcoincash:') >= 0 || data[0] == 'q' || data[0] == 'p' || data[0] == 'C' || data[0] == 'H')) {
+ try {
+ noPrefixInAddress = 0;
+
+ if (data[0] == 'p' || data[0] == 'q') {
+ data = 'bitcoincash:' + data;
+ }
+ var paramString = '';
+ if (data.indexOf('?') >= 0) {
+ paramString = data.substring(data.indexOf('?'));
+ data = data.substring(0, data.indexOf('?'));
+ }
+
+ if (data.indexOf('BITCOINCASH:') >= 0) {
+ data = data.toLowerCase();
+ }
+ originalAddress = data.replace('bitcoincash:', '');
+ var legacyAddress = bitcoinCashJsService.readAddress(data).legacy;
+ data = 'bitcoincash:' + legacyAddress + paramString;
+ } catch (ex) {}
+ }
+
+ $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, coin, shapeshiftData) {
+ $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,
+ displayAddress: originalAddress ? originalAddress : addr,
+ description: message,
+ coin: coin
+ });
+ } else {
+ var params = {
+ toAddress: addr,
+ coin: coin,
+ displayAddress: originalAddress ? originalAddress : addr,
+ noPrefix: noPrefixInAddress
+ };
+ if (shapeshiftData) {
+ params['fromWalletId'] = shapeshiftData.fromWalletId;
+ params['minShapeshiftAmount'] = shapeshiftData.minAmount;
+ params['maxShapeshiftAmount'] = shapeshiftData.maxAmount;
+ params['shapeshiftOrderId'] = shapeshiftData.orderId;
+ }
+ $state.transitionTo('tabs.send.amount', params);
+ }
+ }, 100);
+ }
+ // data extensions for Payment Protocol with non-backwards-compatible request
+ if ((/^bitcoin(cash)?:\?r=[\w+]/).exec(data)) {
+ var coin = data.indexOf('bitcoincash') >= 0 ? 'bch' : 'btc';
+ data = decodeURIComponent(data.replace(/bitcoin(cash)?:\?r=/, ''));
+ if (coin == 'bch') {
+ payproService.getPayProDetailsViaHttp(data, function(err, details) {
+ if (err) {
+ popupService.showAlert(gettextCatalog.getString('Error'), err)
+ } else {
+ handlePayPro(createBchPayProObject(details), coin);
+ }
+ });
+ } else {
+ payproService.getPayProDetails(data, coin, function(err, details) {
+ if (err) {
+ popupService.showAlert(gettextCatalog.getString('Error'), err);
+ } else {
+ handlePayPro(details, coin);
+ }
+ });
+ }
+ return true;
+ }
+
+ data = sanitizeUri(data);
+
+ // Bitcoin URL
+ if (bitcore.URI.isValid(data)) {
+ var coin = 'btc';
+ 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, coin, function(err, details) {
+ if (err) {
+ if (addr && amount) goSend(addr, amount, message, coin, shapeshiftData);
+ else popupService.showAlert(gettextCatalog.getString('Error'), err);
+ } else handlePayPro(details, coin);
+ });
+ } else {
+ goSend(addr, amount, message, coin, shapeshiftData);
+ }
+ return true;
+ // Cash URI
+ } else if (bitcoreCash.URI.isValid(data)) {
+ var coin = 'bch';
+ var parsed = new bitcoreCash.URI(data);
+
+ var addr = parsed.address ? parsed.address.toString() : '';
+ var message = parsed.message;
+
+ var amount = parsed.amount ? parsed.amount : '';
+
+ // paypro not yet supported on cash
+ if (parsed.r) {
+ payproService.getPayProDetails(parsed.r, coin, function(err, details) {
+ if (err) {
+ if (addr && amount)
+ goSend(addr, amount, message, coin, shapeshiftData);
+ else
+ popupService.showAlert(gettextCatalog.getString('Error'), err);
+ }
+ handlePayPro(details, coin);
+ });
+ } else {
+ goSend(addr, amount, message, coin, shapeshiftData);
+ }
+ return true;
+
+ // Cash URI with bitcoin (btc) address version number?
+ } else if (bitcore.URI.isValid(data.replace(/^bitcoincash:/,'bitcoin:'))) {
+ $log.debug('Handling bitcoincash URI with legacy address');
+ var coin = 'bch';
+ var parsed = new bitcore.URI(data.replace(/^bitcoincash:/,'bitcoin:'));
+
+ var oldAddr = parsed.address ? parsed.address.toString() : '';
+ if (!oldAddr) return false;
+
+ var addr = '';
+
+ var a = bitcore.Address(oldAddr).toObject();
+ addr = bitcoreCash.Address.fromObject(a).toString();
+
+ // Translate address
+ $log.debug('address transalated to:' + addr);
+ popupService.showConfirm(
+ gettextCatalog.getString('Bitcoin cash Payment'),
+ gettextCatalog.getString('Payment address was translated to new Bitcoin Cash address format: ' + addr),
+ gettextCatalog.getString('OK'),
+ gettextCatalog.getString('Cancel'),
+ function(ret) {
+ if (!ret) return false;
+
+ var message = parsed.message;
+ var amount = parsed.amount ? parsed.amount : '';
+
+ // paypro not yet supported on cash
+ if (parsed.r) {
+ payproService.getPayProDetails(parsed.r, coin, function(err, details) {
+ if (err) {
+ if (addr && amount)
+ goSend(addr, amount, message, coin, shapeshiftData);
+ else
+ popupService.showAlert(gettextCatalog.getString('Error'), err);
+ }
+ handlePayPro(details, coin);
+ });
+ } else {
+ goSend(addr, amount, message, coin, shapeshiftData);
+ }
+ }
+ );
+ return true;
+ // Plain URL
+ } else if (/^https?:\/\//.test(data)) {
+ payproService.getPayProDetails(data, coin, 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 (bitcoreCash.Address.isValid(data, 'livenet')) {
+ if ($state.includes('tabs.scan')) {
+ root.showMenu({
+ data: data,
+ type: 'bitcoinAddress',
+ coin: 'bch',
+ });
+ } else {
+ goToAmountPage(data, 'bch');
+ }
+ } 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, coin) {
+ $state.go('tabs.send', {}, {
+ 'reload': true,
+ 'notify': $state.current.name == 'tabs.send' ? false : true
+ });
+ $timeout(function() {
+ $state.transitionTo('tabs.send.amount', {
+ toAddress: toAddress,
+ coin: coin,
+ noPrefix: 1
+ });
+ }, 100);
+ }
+
+ function createBchPayProObject(payProData) {
+ var displayAddr = payProData.outputs[0].address;
+ var toAddr = bitcoinCashJsService.readAddress('bitcoincash:' + displayAddr).legacy;
+ return {
+ amount: payProData.outputs[0].amount,
+ caTrusted: true,
+ domain: 'bitpay.com',
+ expires: Math.floor(new Date(payProData.expires).getTime() / 1000),
+ memo: payProData.memo,
+ network: 'livenet',
+ requiredFeeRate: payProData.requiredFeeRate,
+ selfSigned: 0,
+ time: Math.ceil(new Date(payProData.time).getTime() / 1000),
+ displayAddress: displayAddr,
+ toAddress: toAddr,
+ url: payProData.paymentUrl,
+ verified: true
+ };
+ }
+
+ function handlePayPro(payProDetails, coin) {
+ var stateParams = {
+ toAmount: payProDetails.amount,
+ toAddress: payProDetails.toAddress,
+ description: payProDetails.memo,
+ paypro: payProDetails,
+ coin: coin,
+ };
+
+ // fee
+ if (payProDetails.requiredFeeRate) {
+ stateParams.requiredFeeRate = payProDetails.requiredFeeRate * 1024;
+ }
+
+ 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/latest-release.service.js b/src/js/services/latest-release.service.js
deleted file mode 100644
index 85c50bb03..000000000
--- a/src/js/services/latest-release.service.js
+++ /dev/null
@@ -1,180 +0,0 @@
-'use strict';
-
-(function() {
-
- angular
- .module('bitcoincom.services')
- .factory('latestReleaseService', latestReleaseService);
-
- function latestReleaseService($log, $http, $ionicPopup, configService, externalLinkService, gettextCatalog, platformInfo) {
-
- var service = {
- // Functions
- checkLatestRelease: checkLatestRelease,
- requestLatestRelease: requestLatestRelease,
- showUpdatePopup: showUpdatePopup
- };
-
- return service;
-
- function checkLatestRelease(cb) {
- var releaseURL = configService.getDefaults().release.url;
-
- requestLatestRelease(releaseURL, function (err, releaseData) {
- if (err) return cb(err);
- var currentVersion = window.version;
- var latestVersion = releaseData.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);
- }
-
- var releaseSearchTerm = "";
- if (platformInfo.isNW) { // XX SP: DESKTOP: Check if the latest release is already available for current OS
- var platform = process.platform;
- if (platform === "darwin") {
- releaseSearchTerm = "osx";
- } else if (platform === "win32") {
- releaseSearchTerm = "win";
- } else if (platform === "linux") {
- releaseSearchTerm = "linux";
- }
- var foundNewVersion = false;
- for (var i in releaseData.assets) {
- if (releaseData.assets[i].name.indexOf(releaseSearchTerm) !== -1) {
- foundNewVersion = true;
- break;
- }
- }
- }
-
- $log.debug('A new version is available: ' + latestVersion);
-
- var releaseNotes = false;
- if (releaseData.body) {
- var releaseLines = releaseData.body.split('\n');
- for (var lineNum in releaseLines) {
- if (releaseLines[lineNum].substring(0, 2) === "# ") {
- releaseLines[lineNum] = "" + releaseLines[lineNum].substring(2) + " ";
- } else if (releaseLines[lineNum].substring(0, 2) === "- ") {
- releaseLines[lineNum] = "• " + releaseLines[lineNum].substring(2);
- }
- }
- releaseNotes = releaseLines.join('\n');
- }
-
- return cb(null, {latestVersion: latestVersion, releaseNotes: releaseNotes});
- });
-
- function verifyTagFormat(tag) {
- var regex = /^v?\d+\.\d+(\.\d+)?(-rc\d)?$/i;
- return regex.exec(tag);
- }
-
- function formatTagNumber(tag) {
- var label = false;
- if (tag.split("-")[1]) { // Move postfixes like "-rc2" to a variable
- label = tag.split("-")[1];
- tag = tag.split("-")[0];
- }
-
- var formattedNumber = tag.replace(/^v/i, '').split('.');
- return {
- major: +(formattedNumber[0] ? +formattedNumber[0] : 0),
- minor: +(formattedNumber[1] ? +formattedNumber[1] : 0),
- patch: +(formattedNumber[2] ? +formattedNumber[2] : 0),
- label: label /* XX SP: Maybe we can use this in a later stage (with for example 1.0.0-rc2 the value will be "rc2" and false if there is no label) */
- };
- }
- }
-
- function requestLatestRelease(releaseURL, cb) {
- $log.debug('Retrieving latest release 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.data);
- }, function (err) {
- return cb('Cannot get the release information: ' + err);
- });
- }
-
- function showUpdatePopup() {
- var buttons = [];
-
- if (!platformInfo.isIOS) { // There is no GitHub-release for iPhone
- buttons.push({
- text: "GitHub",
- type: 'button-positive',
- onTap: function () {
- var url = 'https://github.com/Bitcoin-com/Wallet/releases/latest';
- externalLinkService.open(url, false);
- }
- });
- }
- if (platformInfo.isAndroid) {
- buttons.unshift({
- text: "Google Play Store",
- type: 'button-positive',
- onTap: function () {
- var url = 'https://play.google.com/store/apps/details?id=com.bitcoin.mwallet';
- externalLinkService.open(url, false);
- }
- });
- }
- if (platformInfo.isIOS) {
- buttons.unshift({
- text: "App Store",
- type: 'button-positive',
- onTap: function () {
- var url = 'https://itunes.apple.com/app/id1252903728';
- externalLinkService.open(url, false);
- }
- });
- } else if (platformInfo.isNW) {
- if (process.platform === 'darwin') {
- buttons.unshift({
- text: "Mac App Store",
- type: 'button-positive',
- onTap: function () {
- var url = 'https://itunes.apple.com/app/bitcoin-com-wallet/id1383072453';
- externalLinkService.open(url, false);
- }
- });
- }
- }
-
- if (buttons.length === 1) { // There is only one source to download (probably on desktop, so open GitHub release page..)
- buttons[0].onTap();
- } else {
- buttons.push({
- text: gettextCatalog.getString('Go Back'),
- type: 'button-positive',
- onTap: function () {
- return true;
- }
- });
- $ionicPopup.show({
- title: gettextCatalog.getString('Update Available'),
- subTitle: gettextCatalog.getString('An update to this app is available. For your security, please update to the latest version.'),
- cssClass: 'popup-update',
- buttons: buttons
- });
- }
- }
- }
-})();
\ No newline at end of file
diff --git a/src/js/services/latestReleaseService.js b/src/js/services/latestReleaseService.js
new file mode 100644
index 000000000..87aace87f
--- /dev/null
+++ b/src/js/services/latestReleaseService.js
@@ -0,0 +1,63 @@
+'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/localStorage.js b/src/js/services/localStorage.js
index ba0db231b..c772b7eef 100644
--- a/src/js/services/localStorage.js
+++ b/src/js/services/localStorage.js
@@ -20,7 +20,8 @@ angular.module('copayApp.services')
if (isChromeApp || isNW) {
chrome.storage.local.get(k,
function(data) {
- return cb(chrome.runtime.lastError, data[k]);
+ //TODO check for errors
+ return cb(null, data[k]);
});
} else {
return cb(null, ls.getItem(k));
@@ -55,24 +56,16 @@ angular.module('copayApp.services')
obj[k] = v;
- chrome.storage.local.set(obj, function(){
- cb(chrome.runtime.lastError);
- });
+ chrome.storage.local.set(obj, cb);
} else {
- try {
- ls.setItem(k, v);
- } catch (e) {
- return cb(e);
- }
+ ls.setItem(k, v);
return cb();
}
};
root.remove = function(k, cb) {
if (isChromeApp || isNW) {
- chrome.storage.local.remove(k, function(){
- cb(chrome.runtime.lastError);
- });
+ chrome.storage.local.remove(k, cb);
} else {
ls.removeItem(k);
return cb();
diff --git a/src/js/services/mobileSecureStorageService.js b/src/js/services/mobileSecureStorageService.js
deleted file mode 100644
index f9994fdf8..000000000
--- a/src/js/services/mobileSecureStorageService.js
+++ /dev/null
@@ -1,88 +0,0 @@
-'use strict';
-
-angular.module('copayApp.services').factory('mobileSecureStorageService', function($log, appConfigService, platformInfo) {
- var root = {};
-
- var isReady = false;
- var initialisationFailed = false;
- var pending = [];
-
- var storage = null;
-
- if (platformInfo.isCordova) {
- storage = new cordova.plugins.SecureStorage(
- function () {
- isReady = true;
- for (var i = 0; i < pending.length; i++) {
- pending[i]();
- }
- pending = [];
- },
- function (error) {
- initialisationFailed = true;
- },
- appConfigService.packageNameId);
- }
-
- root.get = function(key, cb) {
-
- if (!platformInfo.isMobile) {
- cb(new Error('mobileSecureStorageService is only available on mobile.'));
- return;
- }
-
- if (!isReady) {
- if (initialisationFailed) {
- cb(new Error('mobileSecureStorageService initialisation failed.'));
- } else {
- pending.push(function(){ root.get(key, cb); });
- }
- return;
- }
-
- storage.get(
- function (value) {
- cb(null, value);
- },
- function (error) {
- $log.debug('mss get failed. ' + error);
- if (error.message === 'Failure in SecureStorage.get() - The specified item could not be found in the keychain' || // iOS
- error.message === 'Key [_SS_profile] not found.') { // Android
- // The callback expects no error, but also no value, if it cannot be found.
- cb(null, null);
- } else {
- cb(new Error(error));
- }
- },
- key);
- };
-
- root.set = function(key, value, cb) {
-
- if (!platformInfo.isMobile) {
- cb(new Error('mobileSecureStorageService is only available on mobile.'));
- }
-
- if (!isReady) {
- if (initialisationFailed) {
- cb(new Error('mobileSecureStorageService initialisation failed.'));
- } else {
- pending.push(function(){ root.set(key, value, cb); });
- }
- return;
- }
-
- storage.set(
- function (value) {
- cb();
- },
- function (error) {
- cb(new Error(error));
- },
- key, value);
-
- };
-
- return root;
-});
-
diff --git a/src/js/services/onGoingProcess.js b/src/js/services/onGoingProcess.js
index 422be070f..147985dbb 100644
--- a/src/js/services/onGoingProcess.js
+++ b/src/js/services/onGoingProcess.js
@@ -52,7 +52,11 @@ angular.module('copayApp.services').factory('ongoingProcess', function($log, $ti
root.clear = function() {
ongoingProcess = {};
- $ionicLoading.hide();
+ if (isCordova && !isWindowsPhoneApp) {
+ window.plugins.spinnerDialog.hide();
+ } else {
+ $ionicLoading.hide();
+ }
};
root.get = function(processName) {
@@ -74,21 +78,28 @@ angular.module('copayApp.services').factory('ongoingProcess', function($log, $ti
root.onGoingProcessName = name;
var showName = $filter('translate')(processNames[name] || name);
-
- if (root.onGoingProcessName) {
- var tmpl;
- if (isWindowsPhoneApp) tmpl = '' + showName + '
';
- else tmpl = '' + showName + '
';
- $ionicLoading.show({
- template: tmpl,
- });
- } else {
- $ionicLoading.hide();
- }
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
index 2cf8d95a5..0f4d6c666 100644
--- a/src/js/services/openURL.js
+++ b/src/js/services/openURL.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.services').factory('openURLService', function($rootScope, $ionicHistory, $document, $log, $state, platformInfo, lodash, profileService, incomingDataService, appConfigService) {
+angular.module('copayApp.services').factory('openURLService', function($rootScope, $ionicHistory, $document, $log, $state, platformInfo, lodash, profileService, incomingData, appConfigService) {
var root = {};
var handleOpenURL = function(args) {
@@ -23,12 +23,9 @@ angular.module('copayApp.services').factory('openURLService', function($rootScop
document.addEventListener('handleopenurl', handleOpenURL, false);
- incomingDataService.redir(url, function onError(err) {
- if (err) {
- $log.warn('Unknown URL! : ' + url);
- popupService.showAlert(gettextCatalog.getString('Error'), err.message);
- }
- });
+ if (!incomingData.redir(url)) {
+ $log.warn('Unknown URL! : ' + url);
+ }
};
var handleResume = function() {
diff --git a/src/js/services/paypro.service.js b/src/js/services/paypro.service.js
deleted file mode 100644
index 8f8db5f5b..000000000
--- a/src/js/services/paypro.service.js
+++ /dev/null
@@ -1,78 +0,0 @@
-'use strict';
-
-// For BIP70 Payment Protocol
-
-angular
- .module('copayApp.services')
- .factory('payproService', payproService);
-
-function payproService(gettextCatalog, $http, $log, ongoingProcess, platformInfo, profileService) {
-
- var service = {
- getPayProDetails: getPayProDetails,
- getPayProDetailsViaHttp: getPayProDetailsViaHttp,
- broadcastBchTx: broadcastBchTx
- };
-
- return service;
-
- function getPayProDetails(uri, coin, cb, disableLoader) {
- if (!cb) cb = function() {};
-
- var wallet = profileService.getWallets({
- onlyComplete: true,
- coin: coin
- })[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(gettextCatalog.getString('Could Not Fetch Payment: Check if it is still valid'));
- else if (!paypro.verified) {
- $log.warn('Failed to verify payment protocol signatures');
- return cb(gettextCatalog.getString('Payment Protocol Invalid'));
- }
- return cb(null, paypro);
- });
- }
-
- function getPayProDetailsViaHttp(uri, cb) {
- var config = {
- headers: {'Accept': 'application/payment-request'}
- };
- $http.get(uri, config).then(function onGetPayProDetailsSuccess(response) {
- return cb(null, response.data);
- }, function onGetPayProDetailsError(error) {
- return cb(error, null);
- });
- }
-
- function broadcastBchTx(signedTxp, cb) {
- var config = {
- headers: {'Content-Type': 'application/payment'}
- };
-
- var data = {
- currency: 'BCH',
- transactions: [signedTxp.raw]
- };
-
- $http.post(signedTxp.payProUrl, data, config).then(function(response) {
- signedTxp.response = response.data;
- return cb(null, signedTxp);
- }, function(error) {
- return cb(error.data, null);
- });
- }
-}
diff --git a/src/js/services/payproService.js b/src/js/services/payproService.js
new file mode 100644
index 000000000..f0814cc0f
--- /dev/null
+++ b/src/js/services/payproService.js
@@ -0,0 +1,69 @@
+'use strict';
+
+angular.module('copayApp.services').factory('payproService',
+ function(profileService, platformInfo, gettextCatalog, ongoingProcess, $log, $http) {
+
+ var ret = {};
+
+ ret.getPayProDetails = function(uri, coin, cb, disableLoader) {
+ if (!cb) cb = function() {};
+
+ var wallet = profileService.getWallets({
+ onlyComplete: true,
+ coin: coin
+ })[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(gettextCatalog.getString('Could Not Fetch Payment: Check if it is still valid'));
+ else if (!paypro.verified) {
+ $log.warn('Failed to verify payment protocol signatures');
+ return cb(gettextCatalog.getString('Payment Protocol Invalid'));
+ }
+ return cb(null, paypro);
+ });
+ };
+
+ ret.getPayProDetailsViaHttp = function(uri, cb) {
+ var config = {
+ headers: {'Accept': 'application/payment-request'}
+ };
+ $http.get(uri, config).then(function(response) {
+ return cb(null, response.data);
+ }, function(error) {
+ return cb(error, null);
+ });
+ }
+
+ ret.broadcastBchTx = function(signedTxp, cb) {
+ var config = {
+ headers: {'Content-Type': 'application/payment'}
+ };
+
+ var data = {
+ currency: 'BCH',
+ transactions: [signedTxp.raw]
+ };
+
+ $http.post(signedTxp.payProUrl, data, config).then(function(response) {
+ signedTxp.response = response.data;
+ return cb(null, signedTxp);
+ }, function(error) {
+ return cb(error.data, null);
+ });
+ }
+
+ return ret;
+ });
diff --git a/src/js/services/pricechartService.js b/src/js/services/pricechartService.js
index 7e4f27457..becb62ad5 100644
--- a/src/js/services/pricechartService.js
+++ b/src/js/services/pricechartService.js
@@ -3,5 +3,17 @@ angular.module('copayApp.services').factory('pricechartService', function($http,
var root = {};
var credentials = {};
+ var nextStepItem = {
+ name: 'pricechart',
+ title: 'Bitcoin Price Charts',
+ icon: 'icon-chart',
+ sref: 'tabs.pricechart',
+ };
+
+ var register = function() {
+ nextStepsService.register(nextStepItem);
+ };
+
+ register();
return root;
});
diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js
index 113289104..09ba746f4 100644
--- a/src/js/services/profileService.js
+++ b/src/js/services/profileService.js
@@ -427,15 +427,6 @@ angular.module('copayApp.services')
}, function(err, secret) {
if (err) return bwcError.cb(err, gettextCatalog.getString('Error creating wallet'), cb);
- var channel = "ga";
- if (platformInfo.isCordova) {
- channel = "firebase";
- }
- var log = new window.BitAnalytics.LogEvent("wallet_created", [{
- "coin": opts.coin
- }], [channel]);
- window.BitAnalytics.LogEventHandlers.postEvent(log);
-
return cb(null, walletClient, secret);
});
});
@@ -715,7 +706,7 @@ angular.module('copayApp.services')
configService.get(function(err) {
if (err) $log.debug(err);
- var p = Profile.create(appConfigService.version);
+ var p = Profile.create();
storageService.storeNewProfile(p, function(err) {
if (err) return cb(err);
root.bindProfile(p, function(err) {
@@ -847,13 +838,6 @@ angular.module('copayApp.services')
});
}
- if (opts.hasNoFunds) {
- ret = lodash.filter(ret, function(w) {
- if (!w.status) return;
- return (w.status.availableBalanceSat === 0);
- });
- }
-
if (opts.minAmount) {
ret = lodash.filter(ret, function(w) {
if (!w.status) return;
@@ -948,17 +932,8 @@ angular.module('copayApp.services')
x.txid = x.data ? x.data.txid : null;
x.types = [x.type];
- if (x.data && x.data.amount) {
- // Default to showing amount in crypto because we have that now
+ if (x.data && x.data.amount)
x.amountStr = txFormatService.formatAmountStr(x.wallet.coin, x.data.amount);
- configService.whenAvailable(function(config) {
- if (config.wallet.settings.priceDisplay === "fiat") {
- txFormatService.formatAlternativeStr(x.wallet.coin, x.data.amount, function(formattedString) {
- x.amountStr = formattedString;
- });
- }
- });
- }
x.action = function() {
// TODO?
@@ -1062,6 +1037,39 @@ angular.module('copayApp.services')
return cb(null, txps, n);
};
+ // Displays Bitcoin Core Wallets if BTC balance is more than 0
+ root.initBitcoinCoreDisplay = function() {
+ storageService.checkIfFlagIsSet('displayBitcoinCoreFlag')
+ .then(function(result) {
+ // Perform checks for flags which are even set to true once more, set the new flag value to 1
+ if (result === false || result === true) {
+ root.checkBtcBalanceAndInitDisplay(1);
+ }
+ });
+ };
+
+ root.checkBtcBalanceAndInitDisplay = function(flagValue) {
+ var walletsBtc = root.getWallets({coin: 'btc'});
+ if (walletsBtc.length > 0) {
+ // Do not trust cachedBalance as it is added asynchronously. Using a new promise-based function.
+ root.getWalletsBalance(walletsBtc)
+ .then(function(totalBalance) {
+ var enableDisplayBitcoinCore = totalBalance > 0 ? true : false;
+
+ var opts = {
+ displayBitcoinCore: {
+ enabled: enableDisplayBitcoinCore
+ }
+ };
+ configService.set(opts, function(err) {
+ if (err) $log.debug(err);
+ });
+
+ storageService.activateDisplayBitcoinCoreFlag(flagValue);
+ });
+ }
+ }
+
// Calculate wallets total balance (Promise). Attempts to fix asynchronous issue with cachedBalance not being available when it's needed
root.getWalletsBalance = function(wallets) {
return new Promise(function(resolve, reject) {
diff --git a/src/js/services/rateService.spec.js b/src/js/services/rateService.spec.js
deleted file mode 100644
index 35397eb7f..000000000
--- a/src/js/services/rateService.spec.js
+++ /dev/null
@@ -1,53 +0,0 @@
-describe('rateService', function() {
- var $httpBackend, rateService, requestHandler;
-
- beforeEach(function() {
- module('ngLodash');
- module('copayApp.services');
-
- inject(function($injector){
- $httpBackend = $injector.get('$httpBackend');
-
- requestHandler = $httpBackend.when('GET', 'https://www.bitcoin.com/special/rates.json')
- .respond([
- {
- "code": "BTC",
- "name": "Bitcoin",
- "rate": 1
- },
- {
- "code": "BCH_BTC",
- "name": "Bitcoin Cash",
- "rate": 6.739397
- },
- {
- "code": "USD",
- "name": "US Dollar",
- "rate": 7602.04
- }
- ]);
-
- rateService = $injector.get('rateService');
-
- $httpBackend.flush();
- });
- });
-
- afterEach(function() {
- $httpBackend.verifyNoOutstandingExpectation();
- $httpBackend.verifyNoOutstandingRequest();
- });
-
- it('get rates', function() {
-
- $httpBackend.expectGET('https://www.bitcoin.com/special/rates.json');
-
- rateService.updateRates();
-
- $httpBackend.flush();
-
- var usdRate = rateService.getRate('USD');
-
- expect(usdRate).toEqual(7602.04);
- });
-});
\ No newline at end of file
diff --git a/src/js/services/scannerService.js b/src/js/services/scannerService.js
index e09662396..ddf62895d 100644
--- a/src/js/services/scannerService.js
+++ b/src/js/services/scannerService.js
@@ -103,7 +103,6 @@ angular.module('copayApp.services').service('scannerService', function($log, $ti
_completeInitialization(status, callback);
});
} else {
- isAvailable = true; // XX SP: Availability can change after permissions are granted after being denied.
_completeInitialization(status, callback);
}
});
diff --git a/src/js/services/secureStorageService.js b/src/js/services/secureStorageService.js
deleted file mode 100644
index c066109c2..000000000
--- a/src/js/services/secureStorageService.js
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict';
-
-angular.module('copayApp.services').factory('secureStorageService', function(desktopSecureStorageService, localStorageService, $log, mobileSecureStorageService, platformInfo) {
- var root = {};
-
- // To make wrong code look wrong
- function alteredKeyIndicatingDesireForSecureStorage(key) {
- return key + ":desiredSecure";
- }
-
- root.get = function(k, cb) {
- if (platformInfo.isMobile) {
- mobileSecureStorageService.get(k, cb);
- } else if (platformInfo.isNW) {
- desktopSecureStorageService.get(k, cb);
- } else { // Browser
- localStorageService.get(alteredKeyIndicatingDesireForSecureStorage(k), cb);
- }
- }
-
- root.set = function(k, v, cb) {
- if (platformInfo.isMobile) {
- mobileSecureStorageService.set(k, v, cb);
- } else if (platformInfo.isNW) {
- desktopSecureStorageService.set(k, v, cb);
- } else { // Browser
- localStorageService.set(alteredKeyIndicatingDesireForSecureStorage(k), v, cb);
- }
- }
-
- return root;
-});
\ No newline at end of file
diff --git a/src/js/services/secureStorageService.spec.js b/src/js/services/secureStorageService.spec.js
deleted file mode 100644
index 8d2842a6a..000000000
--- a/src/js/services/secureStorageService.spec.js
+++ /dev/null
@@ -1,308 +0,0 @@
-xdescribe('secureStorageService in browser', function(){
- var localStorage,
- sss;
-
- beforeEach(function(){
- module('ngLodash');
- module('copayApp.services');
-
- localStorage = {
- get: jasmine.createSpy(),
- set: jasmine.createSpy()
- };
-
- platformInfoStub = {
- };
-
- module(function($provide) {
- $provide.value('localStorageService', localStorage);
- $provide.value('platformInfo', platformInfoStub);
- });
-
- inject(function($injector){
- sss = $injector.get('secureStorageService');
- });
-
- });
-
- it('get fails', function() {
- var error, key, result;
-
- localStorage.get.and.callFake(function(k, cb){
- key = k;
- cb(new Error('Get error.'), null);
- });
-
- sss.get('a1234', function(e, res) {
- error = e;
- result = res;
- });
-
- expect(error.message).toBe('Get error.');
- expect(result).toBeFalsy();
- expect(key).toBe('a1234:desiredSecure');
- });
-
- it('get succeeds', function() {
- var error, key, result;
-
- localStorage.get.and.callFake(function(k, cb){
- key = k;
- cb(null, 'The result 1.');
- });
-
- sss.get('a123', function(e, res) {
- error = e;
- result = res;
- });
-
- expect(error).toBeFalsy();
- expect(result).toBe('The result 1.');
- expect(key).toBe('a123:desiredSecure');
- });
-
- it('set fails', function() {
- var error, key, value;
-
- localStorage.set.and.callFake(function(k, v, cb){
- key = k;
- value = v;
- cb(new Error('Set error.'));
- });
-
- sss.set('a12345', 'The value 1.', function(e) {
- error = e;
- });
-
- expect(error.message).toBe('Set error.');
- expect(key).toBe('a12345:desiredSecure');
- expect(value).toBe('The value 1.');
- });
-
- it('set succeeds', function() {
- var error, key, value;
-
- localStorage.set.and.callFake(function(k, v, cb){
- key = k;
- value = v;
- cb(null);
- });
-
- sss.set('ab123', 'The value 2.', function(e) {
- error = e;
- });
-
- expect(error).toBeFalsy();
- expect(key).toBe('ab123:desiredSecure');
- expect(value).toBe('The value 2.')
- });
-
-});
-
-
-xdescribe('secureStorageService on desktop', function(){
- var desktopSss,
- sss;
-
- beforeEach(function(){
- module('ngLodash');
- module('copayApp.services');
-
- desktopSss = {
- get: jasmine.createSpy(),
- set: jasmine.createSpy()
- };
-
- platformInfoStub = {
- isNW: true
- };
-
- module(function($provide) {
- $provide.value('desktopSecureStorageService', desktopSss);
- $provide.value('platformInfo', platformInfoStub);
- });
-
- inject(function($injector){
- sss = $injector.get('secureStorageService');
- });
-
- });
-
- it('get fails', function() {
- var error, key, result;
-
- desktopSss.get.and.callFake(function(k, cb){
- key = k;
- cb(new Error('Get error.'), null);
- });
-
- sss.get('a1234', function(e, res) {
- error = e;
- result = res;
- });
-
- expect(error.message).toBe('Get error.');
- expect(result).toBeFalsy();
- expect(key).toBe('a1234');
- });
-
- it('get succeeds', function() {
- var error, key, result;
-
- desktopSss.get.and.callFake(function(k, cb){
- key = k;
- cb(null, 'The result 1.');
- });
-
- sss.get('a123', function(e, res) {
- error = e;
- result = res;
- });
-
- expect(error).toBeFalsy();
- expect(result).toBe('The result 1.');
- expect(key).toBe('a123');
- });
-
- it('set fails', function() {
- var error, key, value;
-
- desktopSss.set.and.callFake(function(k, v, cb){
- key = k;
- value = v;
- cb(new Error('Set error.'));
- });
-
- sss.set('a12345', 'The value 1.', function(e) {
- error = e;
- });
-
- expect(error.message).toBe('Set error.');
- expect(key).toBe('a12345');
- expect(value).toBe('The value 1.');
- });
-
- it('set succeeds', function() {
- var error, key, value;
-
- desktopSss.set.and.callFake(function(k, v, cb){
- key = k;
- value = v;
- cb(null);
- });
-
- sss.set('ab123', 'The value 2.', function(e) {
- error = e;
- });
-
- expect(error).toBeFalsy();
- expect(key).toBe('ab123');
- expect(value).toBe('The value 2.')
- });
-
-});
-
-xdescribe('secureStorageService on mobile', function(){
- var mobileSss,
- sss;
-
- beforeEach(function(){
- module('ngLodash');
- module('copayApp.services');
-
- mobileSss = {
- get: jasmine.createSpy(),
- set: jasmine.createSpy()
- };
-
- platformInfoStub = {
- isMobile: true
- };
-
- module(function($provide) {
- $provide.value('mobileSecureStorageService', mobileSss);
- $provide.value('platformInfo', platformInfoStub);
- });
-
- inject(function($injector){
- sss = $injector.get('secureStorageService');
- });
-
- });
-
- it('get fails', function() {
- var error, key, result;
-
- mobileSss.get.and.callFake(function(k, cb){
- key = k;
- cb(new Error('Get error.'), null);
- });
-
- sss.get('a1234', function(e, res) {
- error = e;
- result = res;
- });
-
- expect(error.message).toBe('Get error.');
- expect(result).toBeFalsy();
- expect(key).toBe('a1234');
- });
-
- it('get succeeds', function() {
- var error, key, result;
-
- mobileSss.get.and.callFake(function(k, cb){
- key = k;
- cb(null, 'The result 1.');
- });
-
- sss.get('a123', function(e, res) {
- error = e;
- result = res;
- });
-
- expect(error).toBeFalsy();
- expect(result).toBe('The result 1.');
- expect(key).toBe('a123');
- });
-
- it('set fails', function() {
- var error, key, value;
-
- mobileSss.set.and.callFake(function(k, v, cb){
- key = k;
- value = v;
- cb(new Error('Set error.'));
- });
-
- sss.set('a12345', 'The value 1.', function(e) {
- error = e;
- });
-
- expect(error.message).toBe('Set error.');
- expect(key).toBe('a12345');
- expect(value).toBe('The value 1.');
- });
-
- it('set succeeds', function() {
- var error, key, value;
-
- mobileSss.set.and.callFake(function(k, v, cb){
- key = k;
- value = v;
- cb(null);
- });
-
- sss.set('ab123', 'The value 2.', function(e) {
- error = e;
- });
-
- expect(error).toBeFalsy();
- expect(key).toBe('ab123');
- expect(value).toBe('The value 2.')
- });
-
-});
-
-
-
\ No newline at end of file
diff --git a/src/js/services/send-flow-router.service.js b/src/js/services/send-flow-router.service.js
deleted file mode 100644
index 32aa8420b..000000000
--- a/src/js/services/send-flow-router.service.js
+++ /dev/null
@@ -1,85 +0,0 @@
-'use strict';
-
-(function(){
-
-angular
- .module('bitcoincom.services')
- .factory('sendFlowRouterService', sendFlowRouterService);
-
- function sendFlowRouterService(
- sendFlowStateService
- , $state, $ionicHistory, $timeout
- ) {
-
- var service = {
- // Functions
- start: start,
- goNext: goNext,
- goBack: goBack,
- };
-
- return service;
-
- /**
- * Start new send flow
- */
- function start() {
- var state = sendFlowStateService.state;
-
- if (state.isRequestAmount) {
- $state.go('tabs.paymentRequest.amount');
- } else {
- if ($state.current.name != 'tabs.send') {
- $state.go('tabs.home').then(function () {
- $ionicHistory.clearHistory();
- $state.go('tabs.send').then(function () {
- $timeout(function () {
- goNext();
- }, 60);
- });
- });
- } else {
- goNext();
- }
- }
- }
-
- /**
- * Go to the next page
- * Routing strategy : https://bitcoindotcom.atlassian.net/wiki/x/BQDWKQ
- */
- function goNext() {
- var state = sendFlowStateService.state;
-
- var needsDestination = !state.toWalletId && !state.toAddress;
- var needsOrigin = !state.fromWalletId;
- var needsAmount = !state.amount && !state.sendMax;
-
- if (needsDestination) {
- if (!state.isWalletTransfer && !state.thirdParty) {
- $state.go('tabs.send');
- return;
- } else if (!needsOrigin) {
- $state.go('tabs.send.destination');
- return;
- }
- }
-
- if (needsOrigin) {
- $state.go('tabs.send.origin');
- } else if (needsAmount) {
- $state.go('tabs.send.amount');
- } else {
- $state.go('tabs.send.review');
- }
- }
-
- /**
- * Go to the previous page
- */
- function goBack() {
- $ionicHistory.goBack();
- }
- };
-
-})();
\ No newline at end of file
diff --git a/src/js/services/send-flow-state.service.js b/src/js/services/send-flow-state.service.js
deleted file mode 100644
index 960e6f306..000000000
--- a/src/js/services/send-flow-state.service.js
+++ /dev/null
@@ -1,142 +0,0 @@
-'use strict';
-
-(function(){
-
-angular
- .module('bitcoincom.services')
- .factory('sendFlowStateService', sendFlowStateService);
-
- function sendFlowStateService($log) {
-
- var service = {
- // Variables
- state: {
- amount: 0,
- displayAddress: null,
- fromWalletId: '',
- sendMax: false,
- thirdParty: null,
- toAddress: '',
- toWalletId: '',
- coin: '',
- isRequestAmount: false,
- isWalletTransfer: false
- },
- previousStates: [],
-
- // Functions
- init: init,
- clear: clear,
- getClone: getClone,
- map: map,
- pop: pop,
- push: push,
- isEmpty: isEmpty
- };
-
- return service;
-
- /**
- * Init state & stack
- * @param {Object} params
- */
- function init(params) {
- $log.debug("send-flow-state init()");
-
- clear();
-
- if (params) {
- push(params);
- }
- }
-
- /**
- * Clear a state & stack
- */
- function clear() {
- $log.debug("send-flow-state clear()");
-
- clearCurrent();
- service.previousStates = [];
- }
-
- /**
- * Clear current state only
- */
- function clearCurrent() {
- $log.debug("send-flow-state clearCurrent()");
-
- service.state = {
- amount: 0,
- displayAddress: null,
- fromWalletId: '',
- sendMax: false,
- thirdParty: null,
- toAddress: '',
- toWalletId: '',
- coin: '',
- isRequestAmount: false,
- isWalletTransfer: false
- }
- }
-
- /**
- * Get a clone of the current state
- */
- function getClone() {
- var currentState = {};
- Object.keys(service.state).forEach(function forCurrentParam(key) {
- if (typeof service.state[key] !== 'function' && key !== 'previousStates') {
- currentState[key] = service.state[key];
- }
- });
- return currentState;
- }
-
- /**
- * Fill in the current state from the params
- * @param {Object} params
- */
- function map(params) {
- Object.keys(params).forEach(function forNewParam(key) {
- service.state[key] = params[key];
- });
- }
-
- /**
- * Pop state
- */
- function pop() {
- $log.debug('send-flow-state pop');
-
- if (service.previousStates.length) {
- var params = service.previousStates.pop();
- clearCurrent();
- map(params);
- } else {
- clear();
- }
- }
-
- /**
- * Push state
- * @param {Object} params
- */
- function push(params) {
- $log.debug('send-flow-state push');
-
- var currentParams = getClone();
- service.previousStates.push(currentParams);
- clearCurrent();
- map(params);
- }
-
- /**
- * Is empty stack
- */
- function isEmpty() {
- return service.previousStates.length == 0;
- }
- };
-
-})();
\ No newline at end of file
diff --git a/src/js/services/send-flow.service.js b/src/js/services/send-flow.service.js
deleted file mode 100644
index e8be2e487..000000000
--- a/src/js/services/send-flow.service.js
+++ /dev/null
@@ -1,148 +0,0 @@
-'use strict';
-
-(function(){
-
-angular
- .module('bitcoincom.services')
- .factory('sendFlowService', sendFlowService);
-
- function sendFlowService(
- sendFlowStateService, sendFlowRouterService
- , bitcoinUriService, payproService, bitcoinCashJsService
- , popupService, gettextCatalog
- , $state, $log
- ) {
-
- var service = {
- // Variables
- state: sendFlowStateService,
- router: sendFlowRouterService,
-
- // Functions
- start: start,
- goNext: goNext,
- goBack: goBack
- };
-
- return service;
-
- /**
- * Start a new send flow
- * @param {Object} params
- * @param {Function} onError
- */
- function start(params, onError) {
- $log.debug('send-flow start()');
-
- if (params && params.data) {
- var res = bitcoinUriService.parse(params.data);
-
- if (res.isValid) {
-
- // If BIP70 (url)
- if (res.url) {
- var url = res.url;
- var coin = res.coin || '';
- payproService.getPayProDetails(url, coin, function onGetPayProDetails(err, payProData) {
- if (err) {
- popupService.showAlert(gettextCatalog.getString('Error'), err);
- } else {
- var name = payProData.domain;
-
- // Detect some merchant that we know
- if (payProData.memo.indexOf('eGifter') > -1) {
- name = 'eGifter'
- } else if (paymentUrl.indexOf('https://bitpay.com') > -1) {
- name = 'BitPay';
- }
-
- // Init thirdParty
- var thirdPartyData = {
- id: 'bip70',
- caTrusted: true,
- name: name,
- domain: payProData.domain,
- expires: payProData.expires,
- memo: payProData.memo,
- network: 'livenet',
- requiredFeeRate: payProData.requiredFeeRate,
- selfSigned: 0,
- time: payProData.time,
- url: payProData.url,
- verified: true
- };
-
- // Fill in params
- params.amount = payProData.amount,
- params.toAddress = payProData.toAddress,
- params.coin = coin,
- params.thirdParty = thirdPartyData
- }
-
- // Resolve
- _next();
- });
- } else {
- if (res.coin) {
- params.coin = res.coin;
- }
-
- if (res.amountInSatoshis) {
- params.amount = res.amountInSatoshis;
- }
-
- if (res.publicAddress) {
- var prefix = res.isTestnet ? 'bchtest:' : 'bitcoincash:';
- params.displayAddress = res.publicAddress.cashAddr || res.publicAddress.legacy || res.publicAddress.bitpay;
- var formatAddress = res.publicAddress.cashAddr ? prefix + params.displayAddress : params.displayAddress;
- params.toAddress = bitcoinCashJsService.readAddress(formatAddress).legacy;
- }
-
- _next();
- }
- } else {
- if (onError) {
- onError();
- }
- }
- } else {
- _next();
- }
-
-
- // Next used for sync the async task
- function _next() {
- sendFlowStateService.init(params);
-
- // Routing strategy to -> send-flow-router.service
- sendFlowRouterService.start();
- }
- }
-
- /**
- * Go to the next step
- * @param {Object} state
- */
- function goNext(state) {
- $log.debug('send-flow goNext()');
-
- // Save the current route before leaving
- state.route = $state.current.name;
-
- // Save the state and redirect the user
- sendFlowStateService.push(state);
- sendFlowRouterService.goNext();
- }
-
- /**
- * Go to the previous step
- */
- function goBack() {
- $log.debug('send-flow goBack()');
-
- // Remove the state on top and redirect the user
- sendFlowStateService.pop();
- sendFlowRouterService.goBack();
- }
- }
-})();
\ No newline at end of file
diff --git a/src/js/services/servicesService.js b/src/js/services/servicesService.js
index ddd9db394..f2344dd01 100644
--- a/src/js/services/servicesService.js
+++ b/src/js/services/servicesService.js
@@ -1,12 +1,7 @@
'use strict'
angular.module('copayApp.services').factory('servicesService', function(configService, $log, lodash) {
var root = {};
- var services = [{
- name: 'shapeshift',
- title: 'Shapeshift',
- icon: 'icon-shapeshift',
- href: 'https://shapeshift.io/'
- }];
+ var services = [];
root.register = function(serviceInfo) {
$log.info('Adding Services entry:' + serviceInfo.name);
diff --git a/src/js/services/shapeShiftApiService.js b/src/js/services/shapeShiftApiService.js
index cc5fb0792..210ae0fbd 100644
--- a/src/js/services/shapeShiftApiService.js
+++ b/src/js/services/shapeShiftApiService.js
@@ -328,23 +328,18 @@ angular.module('copayApp.services').factory('shapeshiftApiService', function($q)
$scope.amount, $scope.withdrawalAddress,
$scope.coinIn, $scope.coinOut
);
- console.log('shapeshiftApiService.FixedAmountTx()');
console.log(fixedTx);
SSA.FixedAmountTx(fixedTx, function (data) {
- console.log(data);
- promise.resolve(data);
+ console.log(data)
+ return promise.resolve({ fixedTxData : data.success });
});
return promise.promise;
},
NormalTx : function($scope){
var promise = $q.defer();
var normalTx = SSA.CreateNormalTx($scope.withdrawalAddress, $scope.coinIn, $scope.coinOut);
-
- console.log('shapeshiftApiService.NormalTx()');
- console.log(normalTx);
SSA.NormalTx(normalTx, function (data) {
- console.log(data);
- promise.resolve(data);
+ promise.resolve({ normalTxData : data });
});
return promise.promise;
},
@@ -365,12 +360,11 @@ angular.module('copayApp.services').factory('shapeshiftApiService', function($q)
return promise.promise;
},
ValidateAddress : function(address, coin) {
- var promise = $q.defer();
- SSA.ValidateAdddress(address, coin, function onRequest(data){
- console.log(data);
- promise.resolve(data);
- });
- return promise.promise;
+ var promise = $q.defer();
+ SSA.ValidateAdddress(address, coin, function(data){
+ promise.resolve(data);
+ });
+ return promise.promise;
}
};
});
diff --git a/src/js/services/shapeshift.service.js b/src/js/services/shapeshift.service.js
deleted file mode 100644
index 73410e478..000000000
--- a/src/js/services/shapeshift.service.js
+++ /dev/null
@@ -1,112 +0,0 @@
-'use strict';
-
-(function(){
-
-angular
- .module('bitcoincom.services')
- .factory('shapeshiftService', shapeshiftService);
-
- function shapeshiftService(shapeshiftApiService, gettextCatalog) {
-
- var service = {
- // Variables
- coinIn: '',
- coinOut: '',
- withdrawalAddress: '',
- returnAddress: '',
- amount: '',
- marketData: {},
- coins: {
- 'BTC': {name: 'Bitcoin', symbol: 'BTC'},
- 'BCH': {name: 'Bitcoin Cash', symbol: 'BCH'}
- },
-
- // Functions
- getMarketData: getMarketData,
- shiftIt: shiftIt
- };
-
- return service;
-
- function handleError(response, defaultMessage, cb) {
- if (response && typeof response.error === "string") {
- cb(new Error(response.error));
- } else if (response && response.error && response.error.message) {
- cb(new Error(response.error.message));
- } else {
- cb(new Error(defaultMessage));
- }
- }
-
- function getMarketData(coinIn, coinOut, cb) {
- service.coinIn = coinIn;
- service.coinOut = coinOut;
- shapeshiftApiService
- .marketInfo(service.coinIn, service.coinOut)
- .then(function (response) {
- if (!response || response.error) {
- handleError(response, 'Invalid response from Shapeshift', cb);
- } else {
- service.marketData = response;
- service.rateString = service.marketData.rate.toString() + ' ' + coinOut.toUpperCase() + '/' + coinIn.toUpperCase();
- cb(null, response);
- }
- });
- }
-
- function shiftIt(coinIn, coinOut, withdrawalAddress, returnAddress, amount, cb) {
- // Test if the amount is correct depending on the min and max
- if (!amount || typeof amount !== 'number') {
- cb(new Error(gettextCatalog.getString('Amount is not defined')));
- } else if (amount < service.marketData.minimum) {
- cb(new Error(gettextCatalog.getString('Amount is below the minimun')));
- } else if (amount > service.marketData.maxLimit) {
- cb(new Error(gettextCatalog.getString('Amount is above the limit')));
- } else {
- // Init service data
- service.withdrawalAddress = withdrawalAddress;
- service.returnAddress = returnAddress;
- service.coinIn = coinIn;
- service.coinOut = coinOut;
- service.amount = amount;
-
- // Check the address
- shapeshiftApiService
- .ValidateAddress(withdrawalAddress, coinOut)
- .then(function onSuccess(response) {
- if (response && response.isvalid) {
- // Prepare the transaction shapeshift side
- shapeshiftApiService.NormalTx(service).then(function onResponse(response) {
- // If error, return it
- if (!response || response.error) {
- handleError(response, gettextCatalog.getString('Invalid response from Shapeshift'), cb);
- } else {
- var txData = response;
-
- // If the content is not that it was expected, get back an error
- if (!txData || !txData.orderId || !txData.deposit) {
- cb(new Error(gettextCatalog.getString('Invalid response from Shapeshift')));
- } else {
- // Get back the data
- service.depositInfo = txData;
- var shapeshiftData = {
- coinIn: coinIn,
- coinOut: coinOut,
- toWalletId: service.toWalletId,
- minAmount: service.marketData.minimum,
- maxAmount: service.marketData.maxLimit,
- orderId: txData.orderId,
- toAddress: txData.deposit
- };
- cb(null, shapeshiftData);
- }
- }
- });
- } else {
- cb(new Error(gettextCatalog.getString('Invalid address')));
- }
- });
- }
- }
- }
-})();
\ No newline at end of file
diff --git a/src/js/services/shapeshiftService.js b/src/js/services/shapeshiftService.js
new file mode 100644
index 000000000..8a9b8fcaa
--- /dev/null
+++ b/src/js/services/shapeshiftService.js
@@ -0,0 +1,19 @@
+'use strict';
+angular.module('copayApp.services').factory('shapeshiftService', function($http, $log, lodash, moment, storageService, configService, platformInfo, servicesService) {
+ var root = {};
+ var credentials = {};
+
+ var servicesItem = {
+ name: 'shapeshift',
+ title: 'Shapeshift',
+ icon: 'icon-shapeshift',
+ sref: 'tabs.shapeshift',
+ };
+
+ var register = function() {
+ servicesService.register(servicesItem);
+ };
+
+ register();
+ return root;
+});
diff --git a/src/js/services/soundService.js b/src/js/services/soundService.js
deleted file mode 100644
index 759789e21..000000000
--- a/src/js/services/soundService.js
+++ /dev/null
@@ -1,44 +0,0 @@
-'use strict';
-
-angular.module('copayApp.services').service('soundService', function($log, $timeout, platformInfo, configService) {
-
- var root = {};
-
- /**
- * Play a sound (when enabled in the configuration) using the Cordova Media-plugin (on Mobile) or html5-audio (on Desktop) relative to the www-root
- * Make sure there is a .ogg file as well for NW.js (desktop) implementation
- * @param soundFile
- */
- root.play = function(soundFile) {
- configService.whenAvailable(function(config) {
- if (config.soundsEnabled) {
- if (platformInfo.isCordova) {
-
- if (platformInfo.isAndroid) {
- var p = window.location.pathname;
- var device_path = p.substring(0, p.lastIndexOf('/'));
- soundFile = device_path + '/' + soundFile;
- }
-
- var audio = new Media(soundFile,
- function () {
- $log.debug("playAudio(bch_sent):Audio Success");
- },
- function (err) {
- $log.debug("playAudio():Audio Error: " + err);
- }
- );
- audio.play({playAudioWhenScreenIsLocked: false}); // XX SP: "Locked" is also the mute switch in iOS
- } else {
- if (platformInfo.isNW) {
- soundFile = soundFile.substring(0, soundFile.lastIndexOf('.')) + ".ogg";
- $log.debug("Playing .ogg file ("+soundFile+"), as NW.js has no mp3 support");
- }
- new Audio(soundFile).play();
- }
- }
- });
- };
-
- return root;
-});
\ No newline at end of file
diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js
index c979098ee..c2f8077be 100644
--- a/src/js/services/storageService.js
+++ b/src/js/services/storageService.js
@@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.services')
- .factory('storageService', function(appConfigService, logHeader, fileStorageService, localStorageService, sjcl, $log, lodash, platformInfo, $timeout) {
+ .factory('storageService', function(logHeader, fileStorageService, localStorageService, sjcl, $log, lodash, platformInfo, $timeout) {
var root = {};
var storage;
@@ -116,107 +116,44 @@ angular.module('copayApp.services')
};
root.storeNewProfile = function(profile, cb) {
- root.storeProfile(profile, cb);
+ storage.create('profile', profile.toObj(), cb);
};
root.storeProfile = function(profile, cb) {
- var profileString = profile.toObj();
- storage.set('profile', profileString, cb);
+ storage.set('profile', profile.toObj(), cb);
};
- /**
- * @callback getProfileCallback
- * @param {Error} error - falsy if profile not found.
- * @param {Profile} profile - falsy if error or profile not found.
- */
-
-
- /**
- * @param {Error} error
- * @param {String} profileStr - containing the profile
- * @param {getProfileCallback} cb
- */
- function _onOldProfileRetrieved(error, profileStr, cb) {
- if (error) {
- return cb(error, null);
- }
-
- if (!profileStr) {
- // No profiles found. No errors either.
- return cb(null, null);
- }
-
- decryptOnMobile(profileStr, function(decryptErr, decryptedStr) {
- if (decryptErr) return cb(decryptErr, null);
- var profile;
- try {
- profile = Profile.fromString(decryptedStr);
- } catch (e) {
- $log.debug('Could not read profile:', e);
- return(new Error('Could not read profile.'), null);
- }
- cb(null, profile)
- });
- }
-
-
-
- /**
- *
- * @param {Profile} oldProfile
- * @param {Profile} secureProfile - may be falsy if no secure profile found.
- * @param {getProfileCallback} cb
- */
- function _migrateProfiles(oldProfile, secureProfile, cb) {
- var newProfile;
-
- if (secureProfile) {
- secureProfile.merge(oldProfile);
- newProfile = secureProfile;
- } else {
- newProfile = oldProfile;
- newProfile.setAppVersion(appConfigService.version);
- }
-
- root.storeNewProfile(newProfile, function(storeErr) {
- if (storeErr) {
- cb(storeErr, null);
- return;
- }
-
- storage.remove('profile', function(removeErr){
- if (removeErr) {
- cb(removeErr, null);
- return;
- }
-
- cb(null, newProfile);
- });
-
- });
- };
-
- /**
- *
- * @param {getProfileCallback} cb
- */
root.getProfile = function(cb) {
- storage.get('profile', function(getErr, getStr) {
- if (getErr) {
- cb(getErr, null);
- return;
- }
+ storage.get('profile', function(err, str) {
+ if (err || !str)
+ return cb(err);
- if (!getStr) {
- cb(null, null);
- return;
- }
-
- var profile = Profile.fromString(getStr);
- cb(null, profile);
+ 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);
};
@@ -708,6 +645,13 @@ angular.module('copayApp.services')
});
});
}
-
+
+ root.activateDisplayBitcoinCoreFlag = function(value) {
+ var flag = {
+ initialized: value
+ };
+ storage.set('displayBitcoinCoreFlag', flag, function() { });
+ }
+
return root;
});
diff --git a/src/js/services/storageService.spec.js b/src/js/services/storageService.spec.js
deleted file mode 100644
index cc3ad285d..000000000
--- a/src/js/services/storageService.spec.js
+++ /dev/null
@@ -1,1119 +0,0 @@
-xdescribe('storageService on desktop', function(){
- var appConfig,
- expectedOldProfileSavedToSecure,
- expectedOldProfileMergedWithSecure,
- localStorageServiceMock,
- log,
- oldProfile,
- platformInfoStub,
- savedSecureProfile,
- secureStorageService,
- secureStorageServiceMock,
- storageService;
-
- expectedOldProfileMergedWithSecure = '{"version":"1.0.0","appVersion":"4.11.0","createdOn":1528363260283,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K4Mge6QumKYh1aSYLB26z6QhkDz8tJLuXdumCJy9PYBrHMrTW3boiaodkVNTciR7PcPAcLXZeUWSehMJc3GXJp1uR68x3Nh5","xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPrivKey":"8fde6c8da5cf59cc0b19e87ea102aef2799047b9062f3e08668a92ef4582e040","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2","copayerId":"81f52508c14d50cdde2ad527920f209cbf51162b0dbaa7ceac298ed6d34d1ff8","publicKeyRing":[{"xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2"}],"walletId":"9580929b-417d-4fce-bcbf-de8e16a51c25","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"54dd6773fec23b07eff5cda33fd0ad2591de31db356c67cd3e5dc67211d7c8ac","personalEncryptingKey":"r5Tpd+/YD6uGXKZeeqZBPg==","sharedEncryptingKey":"PptIrH74qd63DPMC1LQ/dQ==","copayerName":"me","mnemonic":"forget camera antique cement army ahead quantum leisure claim behind climb eight","entropySource":"fc2357f9d0176aa3a571bdfdea9e12cd16c27019e87b80ab0f08ddf15101d532","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K4Mge6QumKYh1aSYLB26z6QhkDz8tJLuXdumCJy9PYBrHMrTW3boiaodkVNTciR7PcPAcLXZeUWSehMJc3GXJp1uR68x3Nh5","xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPrivKey":"8fde6c8da5cf59cc0b19e87ea102aef2799047b9062f3e08668a92ef4582e040","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2","copayerId":"6f3c19e90d6eb9096a57199d53494fd6d62852ffaaa62fb5a5baef9f65753ce1","publicKeyRing":[{"xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2"}],"walletId":"ef78459e-52b1-418a-b89d-4df2ef1d27ea","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"2ac4835b2c883e095f4b187d712e53701781cb0d24e8813e736fd2d8a3219fec","personalEncryptingKey":"r5Tpd+/YD6uGXKZeeqZBPg==","sharedEncryptingKey":"WMcSMqfwZ+qfhP58S9l6OA==","copayerName":"me","mnemonic":"forget camera antique cement army ahead quantum leisure claim behind climb eight","entropySource":"fc2357f9d0176aa3a571bdfdea9e12cd16c27019e87b80ab0f08ddf15101d532","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"cc5667792d8378ad61dc30a65bafea3d03d9179c5615d9f183738b002d978659","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"a8ea9291-1369-4862-90a1-d80a5d4bcc20","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"8437d2824b17f31d548fc2855577e9092ac5a7f9c985e5329acab34a8e786fb8","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"ZhMBX+t9/0n2kCasR5KH0w==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"8430d4ca7a324ce0176e782c2d48f333666bd8f9b66fdd432a7f1ad1c80341ec","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"30df9228ff38258afe363a29cb02bff6d76f9f66ed36250de493717f4c941cc1","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"2wQyQJGV3vyRPE/uil9ZRA==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"9580929b-417d-4fce-bcbf-de8e16a51c25":true,"ef78459e-52b1-418a-b89d-4df2ef1d27ea":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- expectedOldProfileSavedToSecure = '{"version":"1.0.0","appVersion":"${appVersion}","createdOn":1528363022385,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"cc5667792d8378ad61dc30a65bafea3d03d9179c5615d9f183738b002d978659","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"a8ea9291-1369-4862-90a1-d80a5d4bcc20","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"8437d2824b17f31d548fc2855577e9092ac5a7f9c985e5329acab34a8e786fb8","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"ZhMBX+t9/0n2kCasR5KH0w==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"8430d4ca7a324ce0176e782c2d48f333666bd8f9b66fdd432a7f1ad1c80341ec","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"30df9228ff38258afe363a29cb02bff6d76f9f66ed36250de493717f4c941cc1","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"2wQyQJGV3vyRPE/uil9ZRA==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"a8ea9291-1369-4862-90a1-d80a5d4bcc20":true,"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- oldProfile = '{"version":"1.0.0","createdOn":1528363022385,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"cc5667792d8378ad61dc30a65bafea3d03d9179c5615d9f183738b002d978659","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"a8ea9291-1369-4862-90a1-d80a5d4bcc20","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"8437d2824b17f31d548fc2855577e9092ac5a7f9c985e5329acab34a8e786fb8","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"ZhMBX+t9/0n2kCasR5KH0w==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"8430d4ca7a324ce0176e782c2d48f333666bd8f9b66fdd432a7f1ad1c80341ec","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"30df9228ff38258afe363a29cb02bff6d76f9f66ed36250de493717f4c941cc1","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"2wQyQJGV3vyRPE/uil9ZRA==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"a8ea9291-1369-4862-90a1-d80a5d4bcc20":true,"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- secureProfile = '{"version":"1.0.0","appVersion":"4.11.0","createdOn":1528363260283,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K4Mge6QumKYh1aSYLB26z6QhkDz8tJLuXdumCJy9PYBrHMrTW3boiaodkVNTciR7PcPAcLXZeUWSehMJc3GXJp1uR68x3Nh5","xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPrivKey":"8fde6c8da5cf59cc0b19e87ea102aef2799047b9062f3e08668a92ef4582e040","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2","copayerId":"81f52508c14d50cdde2ad527920f209cbf51162b0dbaa7ceac298ed6d34d1ff8","publicKeyRing":[{"xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2"}],"walletId":"9580929b-417d-4fce-bcbf-de8e16a51c25","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"54dd6773fec23b07eff5cda33fd0ad2591de31db356c67cd3e5dc67211d7c8ac","personalEncryptingKey":"r5Tpd+/YD6uGXKZeeqZBPg==","sharedEncryptingKey":"PptIrH74qd63DPMC1LQ/dQ==","copayerName":"me","mnemonic":"forget camera antique cement army ahead quantum leisure claim behind climb eight","entropySource":"fc2357f9d0176aa3a571bdfdea9e12cd16c27019e87b80ab0f08ddf15101d532","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K4Mge6QumKYh1aSYLB26z6QhkDz8tJLuXdumCJy9PYBrHMrTW3boiaodkVNTciR7PcPAcLXZeUWSehMJc3GXJp1uR68x3Nh5","xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPrivKey":"8fde6c8da5cf59cc0b19e87ea102aef2799047b9062f3e08668a92ef4582e040","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2","copayerId":"6f3c19e90d6eb9096a57199d53494fd6d62852ffaaa62fb5a5baef9f65753ce1","publicKeyRing":[{"xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2"}],"walletId":"ef78459e-52b1-418a-b89d-4df2ef1d27ea","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"2ac4835b2c883e095f4b187d712e53701781cb0d24e8813e736fd2d8a3219fec","personalEncryptingKey":"r5Tpd+/YD6uGXKZeeqZBPg==","sharedEncryptingKey":"WMcSMqfwZ+qfhP58S9l6OA==","copayerName":"me","mnemonic":"forget camera antique cement army ahead quantum leisure claim behind climb eight","entropySource":"fc2357f9d0176aa3a571bdfdea9e12cd16c27019e87b80ab0f08ddf15101d532","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"9580929b-417d-4fce-bcbf-de8e16a51c25":true,"ef78459e-52b1-418a-b89d-4df2ef1d27ea":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- secureProfileFromOldOnly = '{"version":"1.0.0","appVersion":"${appVersion}","createdOn":1528363022385,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"cc5667792d8378ad61dc30a65bafea3d03d9179c5615d9f183738b002d978659","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"a8ea9291-1369-4862-90a1-d80a5d4bcc20","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"8437d2824b17f31d548fc2855577e9092ac5a7f9c985e5329acab34a8e786fb8","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"ZhMBX+t9/0n2kCasR5KH0w==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"8430d4ca7a324ce0176e782c2d48f333666bd8f9b66fdd432a7f1ad1c80341ec","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"30df9228ff38258afe363a29cb02bff6d76f9f66ed36250de493717f4c941cc1","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"2wQyQJGV3vyRPE/uil9ZRA==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"a8ea9291-1369-4862-90a1-d80a5d4bcc20":true,"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
-
- log = {
- debug: function(s){ console.log(s); },
- error: function(s){ console.log(s); },
- info: function(s){ console.log(s); }
- };
-
- beforeEach(function(){
- module('ngLodash');
- module('bwcModule');
- module('copayApp.services');
-
- localStorageServiceMock = {
- get: jasmine.createSpy(),
- remove: jasmine.createSpy()
- };
-
- platformInfoStub = {
- isCordova: false
- };
-
- secureStorageServiceMock = {
- get: jasmine.createSpy(),
- set: jasmine.createSpy()
- };
-
- module(function($provide) {
- $provide.value('localStorageService', localStorageServiceMock);
- //$provide.value('$log', log); // Handy for debugging test failures
- $provide.value('platformInfo', platformInfoStub);
- $provide.value('secureStorageService', secureStorageServiceMock);
- });
-
- inject(function($injector){
- appConfig = $injector.get('appConfigService');
- storageService = $injector.get('storageService');
- });
-
- secureProfileFromOldOnly = secureProfileFromOldOnly.replace('${appVersion}', appConfig.version);
- expectedOldProfileSavedToSecure = expectedOldProfileSavedToSecure.replace('${appVersion}', appConfig.version);
-
- });
-
- it('getProfile() from local storage.', function() {
- var error, keySecureGet, keyLocalGet, keySecureSet, keyLocalRemove, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, null);
- });
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(null);
- });
-
- localStorageServiceMock.remove.and.callFake(function(k, cb){
- keyLocalRemove = k;
- cb(null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error).toBeFalsy();
- expect(profile).toBeTruthy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyLocalGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
- expect(keyLocalRemove).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileSavedToSecure);
- expect(localStorageServiceMock.remove.calls.any()).toBe(true);
-
- expect(profile.appVersion).toBe(appConfig.version);
- expect(profile.createdOn).toBe(1528363022385);
-
- expect(profile.credentials[0].coin).toBe('bch');
- expect(profile.credentials[0].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[0].walletId).toBe('a8ea9291-1369-4862-90a1-d80a5d4bcc20');
-
- expect(profile.credentials[1].coin).toBe('btc');
- expect(profile.credentials[1].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[1].walletId).toBe('f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b');
- });
-
- it('getProfile() from local storage, remove fails.', function() {
- var error, keySecureGet, keyLocalGet, keySecureSet, keyLocalRemove, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, null);
- });
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(null);
- });
-
- localStorageServiceMock.remove.and.callFake(function(k, cb){
- keyLocalRemove = k;
- cb(new Error('Remove error.'));
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Remove error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyLocalGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
- expect(keyLocalRemove).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileSavedToSecure);
- });
-
- it('getProfile() from local storage, secure set fails, not removed.', function() {
- var error, keySecureGet, keyLocalGet, keySecureSet, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, null);
- });
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(new Error('Set error.'));
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Set error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyLocalGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileSavedToSecure);
-
- expect(localStorageServiceMock.remove.calls.any()).toBe(false);
- });
-
- it('getProfile(), secure get fails.', function() {
- var error, keySecureGet, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(new Error('Secure get error.'), null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Secure get error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
-
- expect(localStorageServiceMock.remove.calls.any()).toBe(false);
- });
-
- it('getProfile(), secure get succeeds, local storage get fails.', function() {
- var error, keySecureGet, keyLocalGet, profile, profile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(new Error('Local storage get error.'), null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Local storage get error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyLocalGet).toBe('profile');
-
- expect(localStorageServiceMock.remove.calls.any()).toBe(false);
- });
-
- it('getProfile() from secure storage.', function() {
- var error, keySecureGet, keyLocalGet, profile, profile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(null, null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error).toBeFalsy();
- expect(profile).toBeTruthy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyLocalGet).toBe('profile');
-
- expect(profile.appVersion).toBe('4.11.0');
- expect(profile.createdOn).toBe(1528363260283);
-
- expect(profile.credentials[0].coin).toBe('bch');
- expect(profile.credentials[0].mnemonic).toBe('forget camera antique cement army ahead quantum leisure claim behind climb eight');
- expect(profile.credentials[0].walletId).toBe('9580929b-417d-4fce-bcbf-de8e16a51c25');
-
- expect(profile.credentials[1].coin).toBe('btc');
- expect(profile.credentials[1].mnemonic).toBe('forget camera antique cement army ahead quantum leisure claim behind climb eight');
- expect(profile.credentials[1].walletId).toBe('ef78459e-52b1-418a-b89d-4df2ef1d27ea');
- });
-
- it('getProfile() merge from local and secure storage.', function() {
- var error, keySecureGet, keyLocalGet, keySecureSet, keyLocalRemove, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(null);
- });
-
- localStorageServiceMock.remove.and.callFake(function(k, cb){
- keyLocalRemove = k;
- cb(null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error).toBeFalsy();
- expect(profile).toBeTruthy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyLocalGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
- expect(keyLocalRemove).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileMergedWithSecure);
-
- expect(profile.appVersion).toBe('4.11.0');
- expect(profile.createdOn).toBe(1528363260283);
-
- // Existing secure
- expect(profile.credentials[0].coin).toBe('bch');
- expect(profile.credentials[0].mnemonic).toBe('forget camera antique cement army ahead quantum leisure claim behind climb eight');
- expect(profile.credentials[0].walletId).toBe('9580929b-417d-4fce-bcbf-de8e16a51c25');
-
- expect(profile.credentials[1].coin).toBe('btc');
- expect(profile.credentials[1].mnemonic).toBe('forget camera antique cement army ahead quantum leisure claim behind climb eight');
- expect(profile.credentials[1].walletId).toBe('ef78459e-52b1-418a-b89d-4df2ef1d27ea');
-
- // Old
- expect(profile.credentials[2].coin).toBe('bch');
- expect(profile.credentials[2].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[2].walletId).toBe('a8ea9291-1369-4862-90a1-d80a5d4bcc20');
-
- expect(profile.credentials[3].coin).toBe('btc');
- expect(profile.credentials[3].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[3].walletId).toBe('f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b');
-
- });
-
- it('getProfile() merge from local and secure storage, secure set fails, not removed from local.', function() {
- var error, keySecureGet, keyLocalGet, keySecureSet, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(new Error('Secure set error.'));
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Secure set error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyLocalGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileMergedWithSecure);
-
- expect(localStorageServiceMock.remove.calls.any()).toBe(false);
- });
-
- it('getProfile() merge from local and secure storage, remove from local fails.', function() {
- var error, keySecureGet, keyLocalGet, keySecureSet, keyLocalRemove, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k
- savedProfile = v;
- cb(null);
- });
-
- localStorageServiceMock.remove.and.callFake(function(k, cb){
- keyLocalRemove = k;
- cb(new Error('Remove error.'));
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Remove error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyLocalGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
- expect(keyLocalRemove).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileMergedWithSecure);
- });
-
-
-
-
-});
-
-xdescribe('storageService on desktop using local storage', function(){
- var appConfig,
- localStorageServiceMock,
- log,
- oldProfile,
- oldProfileString,
- platformInfoStub,
- secureStorageService,
- secureStorageServiceMock,
- storageService;
-
- oldProfileString = '{"version":"1.0.0","createdOn":1528363022385,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"cc5667792d8378ad61dc30a65bafea3d03d9179c5615d9f183738b002d978659","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"a8ea9291-1369-4862-90a1-d80a5d4bcc20","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"8437d2824b17f31d548fc2855577e9092ac5a7f9c985e5329acab34a8e786fb8","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"ZhMBX+t9/0n2kCasR5KH0w==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"8430d4ca7a324ce0176e782c2d48f333666bd8f9b66fdd432a7f1ad1c80341ec","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"30df9228ff38258afe363a29cb02bff6d76f9f66ed36250de493717f4c941cc1","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"2wQyQJGV3vyRPE/uil9ZRA==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"a8ea9291-1369-4862-90a1-d80a5d4bcc20":true,"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- oldProfile = Profile.fromString(oldProfileString);
-
- log = {
- debug: function(s){ console.log(s); },
- error: function(s){ console.log(s); },
- info: function(s){ console.log(s); }
- };
-
- beforeEach(function(){
- module('ngLodash');
- module('bwcModule');
- module('copayApp.services');
-
- localStorageServiceMock = {
- get: jasmine.createSpy(),
- remove: jasmine.createSpy(),
- set: jasmine.createSpy()
- };
-
- platformInfoStub = {
- isNW: true
- };
-
- secureStorageServiceMock = {
- get: jasmine.createSpy(),
- set: jasmine.createSpy()
- };
-
- module(function($provide) {
- $provide.value('localStorageService', localStorageServiceMock);
- //$provide.value('$log', log); // Handy for debugging test failures
- $provide.value('platformInfo', platformInfoStub);
- $provide.value('secureStorageService', secureStorageServiceMock);
- });
-
- inject(function($injector){
- appConfig = $injector.get('appConfigService');
- storageService = $injector.get('storageService');
- });
- });
-
- it('getProfile().', function() {
- var error, keyLocalGet, profile;
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(null, oldProfileString);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error).toBeFalsy();
- expect(profile).toBeTruthy();
-
- expect(keyLocalGet).toBe('profile');
-
- expect(localStorageServiceMock.remove.calls.any()).toBe(false);
- expect(secureStorageServiceMock.get.calls.any()).toBe(false);
- expect(secureStorageServiceMock.set.calls.any()).toBe(false);
-
- expect(profile.appVersion).toBeUndefined();
- expect(profile.createdOn).toBe(1528363022385);
-
- expect(profile.credentials[0].coin).toBe('bch');
- expect(profile.credentials[0].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[0].walletId).toBe('a8ea9291-1369-4862-90a1-d80a5d4bcc20');
-
- expect(profile.credentials[1].coin).toBe('btc');
- expect(profile.credentials[1].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[1].walletId).toBe('f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b');
- });
-
- it('getProfile(), get fails.', function() {
- var error, keyLocalGet, profile;
-
- localStorageServiceMock.get.and.callFake(function(k, cb){
- keyLocalGet = k;
- cb(new Error('Local get error.'), null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Local get error.');
- expect(profile).toBeFalsy();
-
- expect(keyLocalGet).toBe('profile');
-
- expect(localStorageServiceMock.remove.calls.any()).toBe(false);
- expect(secureStorageServiceMock.get.calls.any()).toBe(false);
- expect(secureStorageServiceMock.set.calls.any()).toBe(false);
- });
-
- it('storeNewProfile() to local storage.', function() {
- var error, keyLocalSet, savedProfileString;
-
- localStorageServiceMock.set.and.callFake(function(k, v, cb){
- keyLocalSet = k;
- savedProfileString = v;
- cb(null);
- });
-
- storageService.storeNewProfile(oldProfile, function(err){
- error = err;
- });
-
- expect(error).toBeFalsy();
- expect(savedProfileString).toBeTruthy();
-
- expect(keyLocalSet).toBe('profile');
-
- expect(savedProfileString).toBe(oldProfileString);
- expect(secureStorageServiceMock.set.calls.any()).toBe(false);
- });
-
- it('storeNewProfile() to local storage, set fails.', function() {
- var error, keyLocalSet, savedProfileString;
-
- localStorageServiceMock.set.and.callFake(function(k, v, cb){
- keyLocalSet = k;
- savedProfileString = v;
- cb(new Error('Local set failed.'));
- });
-
- storageService.storeNewProfile(oldProfile, function(err){
- error = err;
- });
-
- expect(error.message).toBe('Local set failed.');
- expect(savedProfileString).toBe(oldProfileString);
-
- expect(keyLocalSet).toBe('profile');
-
- expect(savedProfileString).toBe(oldProfileString);
- expect(secureStorageServiceMock.set.calls.any()).toBe(false);
- });
-
- it('storeProfile() to local storage.', function() {
- var error, keyLocalSet, savedProfileString;
-
- localStorageServiceMock.set.and.callFake(function(k, v, cb){
- keyLocalSet = k;
- savedProfileString = v;
- cb(null);
- });
-
- storageService.storeProfile(oldProfile, function(err){
- error = err;
- });
-
- expect(error).toBeFalsy();
- expect(savedProfileString).toBeTruthy();
-
- expect(keyLocalSet).toBe('profile');
-
- expect(savedProfileString).toBe(oldProfileString);
- expect(secureStorageServiceMock.set.calls.any()).toBe(false);
- });
-
- it('storeProfile() to local storage, set fails.', function() {
- var error, keyLocalSet, savedProfileString;
-
- localStorageServiceMock.set.and.callFake(function(k, v, cb){
- keyLocalSet = k;
- savedProfileString = v;
- cb(new Error('Local set failed.'));
- });
-
- storageService.storeProfile(oldProfile, function(err){
- error = err;
- });
-
- expect(error.message).toBe('Local set failed.');
- expect(savedProfileString).toBe(oldProfileString);
-
- expect(keyLocalSet).toBe('profile');
-
- expect(savedProfileString).toBe(oldProfileString);
- expect(secureStorageServiceMock.set.calls.any()).toBe(false);
- });
-
-});
-
-xdescribe('storageService on mobile', function(){
- var appConfig,
- expectedOldProfileSavedToSecure,
- expectedOldProfileMergedWithSecure,
- fileStorageServiceMock,
- log,
- oldProfile,
- platformInfoStub,
- savedSecureProfile,
- secureProfileObj,
- secureStorageService,
- secureStorageServiceMock,
- storageService;
-
- expectedOldProfileMergedWithSecure = '{"version":"1.0.0","appVersion":"4.11.0","createdOn":1528363260283,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K4Mge6QumKYh1aSYLB26z6QhkDz8tJLuXdumCJy9PYBrHMrTW3boiaodkVNTciR7PcPAcLXZeUWSehMJc3GXJp1uR68x3Nh5","xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPrivKey":"8fde6c8da5cf59cc0b19e87ea102aef2799047b9062f3e08668a92ef4582e040","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2","copayerId":"81f52508c14d50cdde2ad527920f209cbf51162b0dbaa7ceac298ed6d34d1ff8","publicKeyRing":[{"xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2"}],"walletId":"9580929b-417d-4fce-bcbf-de8e16a51c25","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"54dd6773fec23b07eff5cda33fd0ad2591de31db356c67cd3e5dc67211d7c8ac","personalEncryptingKey":"r5Tpd+/YD6uGXKZeeqZBPg==","sharedEncryptingKey":"PptIrH74qd63DPMC1LQ/dQ==","copayerName":"me","mnemonic":"forget camera antique cement army ahead quantum leisure claim behind climb eight","entropySource":"fc2357f9d0176aa3a571bdfdea9e12cd16c27019e87b80ab0f08ddf15101d532","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K4Mge6QumKYh1aSYLB26z6QhkDz8tJLuXdumCJy9PYBrHMrTW3boiaodkVNTciR7PcPAcLXZeUWSehMJc3GXJp1uR68x3Nh5","xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPrivKey":"8fde6c8da5cf59cc0b19e87ea102aef2799047b9062f3e08668a92ef4582e040","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2","copayerId":"6f3c19e90d6eb9096a57199d53494fd6d62852ffaaa62fb5a5baef9f65753ce1","publicKeyRing":[{"xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2"}],"walletId":"ef78459e-52b1-418a-b89d-4df2ef1d27ea","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"2ac4835b2c883e095f4b187d712e53701781cb0d24e8813e736fd2d8a3219fec","personalEncryptingKey":"r5Tpd+/YD6uGXKZeeqZBPg==","sharedEncryptingKey":"WMcSMqfwZ+qfhP58S9l6OA==","copayerName":"me","mnemonic":"forget camera antique cement army ahead quantum leisure claim behind climb eight","entropySource":"fc2357f9d0176aa3a571bdfdea9e12cd16c27019e87b80ab0f08ddf15101d532","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"cc5667792d8378ad61dc30a65bafea3d03d9179c5615d9f183738b002d978659","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"a8ea9291-1369-4862-90a1-d80a5d4bcc20","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"8437d2824b17f31d548fc2855577e9092ac5a7f9c985e5329acab34a8e786fb8","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"ZhMBX+t9/0n2kCasR5KH0w==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"8430d4ca7a324ce0176e782c2d48f333666bd8f9b66fdd432a7f1ad1c80341ec","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"30df9228ff38258afe363a29cb02bff6d76f9f66ed36250de493717f4c941cc1","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"2wQyQJGV3vyRPE/uil9ZRA==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"9580929b-417d-4fce-bcbf-de8e16a51c25":true,"ef78459e-52b1-418a-b89d-4df2ef1d27ea":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- expectedOldProfileSavedToSecure = '{"version":"1.0.0","appVersion":"${appVersion}","createdOn":1528363022385,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"cc5667792d8378ad61dc30a65bafea3d03d9179c5615d9f183738b002d978659","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"a8ea9291-1369-4862-90a1-d80a5d4bcc20","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"8437d2824b17f31d548fc2855577e9092ac5a7f9c985e5329acab34a8e786fb8","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"ZhMBX+t9/0n2kCasR5KH0w==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"8430d4ca7a324ce0176e782c2d48f333666bd8f9b66fdd432a7f1ad1c80341ec","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"30df9228ff38258afe363a29cb02bff6d76f9f66ed36250de493717f4c941cc1","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"2wQyQJGV3vyRPE/uil9ZRA==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"a8ea9291-1369-4862-90a1-d80a5d4bcc20":true,"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- oldProfile = '{"version":"1.0.0","createdOn":1528363022385,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"cc5667792d8378ad61dc30a65bafea3d03d9179c5615d9f183738b002d978659","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"a8ea9291-1369-4862-90a1-d80a5d4bcc20","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"8437d2824b17f31d548fc2855577e9092ac5a7f9c985e5329acab34a8e786fb8","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"ZhMBX+t9/0n2kCasR5KH0w==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"8430d4ca7a324ce0176e782c2d48f333666bd8f9b66fdd432a7f1ad1c80341ec","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"30df9228ff38258afe363a29cb02bff6d76f9f66ed36250de493717f4c941cc1","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"2wQyQJGV3vyRPE/uil9ZRA==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"a8ea9291-1369-4862-90a1-d80a5d4bcc20":true,"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- secureProfile = '{"version":"1.0.0","appVersion":"4.11.0","createdOn":1528363260283,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K4Mge6QumKYh1aSYLB26z6QhkDz8tJLuXdumCJy9PYBrHMrTW3boiaodkVNTciR7PcPAcLXZeUWSehMJc3GXJp1uR68x3Nh5","xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPrivKey":"8fde6c8da5cf59cc0b19e87ea102aef2799047b9062f3e08668a92ef4582e040","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2","copayerId":"81f52508c14d50cdde2ad527920f209cbf51162b0dbaa7ceac298ed6d34d1ff8","publicKeyRing":[{"xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2"}],"walletId":"9580929b-417d-4fce-bcbf-de8e16a51c25","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"54dd6773fec23b07eff5cda33fd0ad2591de31db356c67cd3e5dc67211d7c8ac","personalEncryptingKey":"r5Tpd+/YD6uGXKZeeqZBPg==","sharedEncryptingKey":"PptIrH74qd63DPMC1LQ/dQ==","copayerName":"me","mnemonic":"forget camera antique cement army ahead quantum leisure claim behind climb eight","entropySource":"fc2357f9d0176aa3a571bdfdea9e12cd16c27019e87b80ab0f08ddf15101d532","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K4Mge6QumKYh1aSYLB26z6QhkDz8tJLuXdumCJy9PYBrHMrTW3boiaodkVNTciR7PcPAcLXZeUWSehMJc3GXJp1uR68x3Nh5","xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPrivKey":"8fde6c8da5cf59cc0b19e87ea102aef2799047b9062f3e08668a92ef4582e040","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2","copayerId":"6f3c19e90d6eb9096a57199d53494fd6d62852ffaaa62fb5a5baef9f65753ce1","publicKeyRing":[{"xPubKey":"xpub6CGZNmTZ9KmHyxgbqZhfcJKwhrgN5EfHh2P7YppRXPGvUg6QkAuErmaQQa3cjyS9NMuFnvxm1eNUcbUEuiVikzUmZmVrtVcU7uvjWUNrRTG","requestPubKey":"0366db5dd83550ebefa8946d770e68ea8bb0e197076713bb681fb80d6fbc4278b2"}],"walletId":"ef78459e-52b1-418a-b89d-4df2ef1d27ea","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"2ac4835b2c883e095f4b187d712e53701781cb0d24e8813e736fd2d8a3219fec","personalEncryptingKey":"r5Tpd+/YD6uGXKZeeqZBPg==","sharedEncryptingKey":"WMcSMqfwZ+qfhP58S9l6OA==","copayerName":"me","mnemonic":"forget camera antique cement army ahead quantum leisure claim behind climb eight","entropySource":"fc2357f9d0176aa3a571bdfdea9e12cd16c27019e87b80ab0f08ddf15101d532","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"9580929b-417d-4fce-bcbf-de8e16a51c25":true,"ef78459e-52b1-418a-b89d-4df2ef1d27ea":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- secureProfileFromOldOnly = '{"version":"1.0.0","appVersion":"${appVersion}","createdOn":1528363022385,"credentials":[{"coin":"bch","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"cc5667792d8378ad61dc30a65bafea3d03d9179c5615d9f183738b002d978659","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"a8ea9291-1369-4862-90a1-d80a5d4bcc20","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"8437d2824b17f31d548fc2855577e9092ac5a7f9c985e5329acab34a8e786fb8","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"ZhMBX+t9/0n2kCasR5KH0w==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"},{"coin":"btc","network":"livenet","xPrivKey":"xprv9s21ZrQH143K2vd69iX1D5R2Acdjx6hzsSncBqnTri7UUad3SxSxFGukcjCUBKfWtZx3KGVjSd94ypEz4gB5RzATenxCEVPPZsgVJpoXkRq","xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPrivKey":"c1cac5328bf71c0f73f64ef868ddea66356ba797f87af4939390d58a7ff1aeda","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d","copayerId":"8430d4ca7a324ce0176e782c2d48f333666bd8f9b66fdd432a7f1ad1c80341ec","publicKeyRing":[{"xPubKey":"xpub6CZLbRhS7jEN2UT3ZhGeia6jPxr4guckZDa7ogncrrES2GyMj7Pq5U4oYLV2FhAMuuYA8qzxWV3TDXXDSkGTaqHstjRANCgCjrMDA1r7AN8","requestPubKey":"02b41c465aaf8f41192f2444a07c6e64d6147a080c5b82a6e73b3b232f11e1575d"}],"walletId":"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b","walletName":"Personal Wallet","m":1,"n":1,"walletPrivKey":"30df9228ff38258afe363a29cb02bff6d76f9f66ed36250de493717f4c941cc1","personalEncryptingKey":"qZmFZypS3TufwM5+WzvNJw==","sharedEncryptingKey":"2wQyQJGV3vyRPE/uil9ZRA==","copayerName":"me","mnemonic":"morning conduct milk catch victory smoke ship little dutch original legal gadget","entropySource":"3f88849ae9522574a2aaab870594b25a4e90b9dc632724ef3675fc3c49aa93b9","mnemonicHasPassphrase":false,"derivationStrategy":"BIP44","account":0,"compliantDerivation":true,"addressType":"P2PKH"}],"disclaimerAccepted":true,"checked":{"a8ea9291-1369-4862-90a1-d80a5d4bcc20":true,"f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b":true},"checkedUA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}';
- secureProfileObj = Profile.fromString(secureProfile);
-
- log = {
- debug: function(s){ console.log(s); },
- error: function(s){ console.log(s); },
- info: function(s){ console.log(s); }
- };
-
- beforeEach(function(){
- module('ngLodash');
- module('bwcModule');
- module('copayApp.services');
-
- fileStorageServiceMock = {
- get: jasmine.createSpy(),
- remove: jasmine.createSpy(),
- set: jasmine.createSpy()
- };
-
- platformInfoStub = {
- isCordova: true,
- isWP: false
- };
-
- secureStorageServiceMock = {
- get: jasmine.createSpy(),
- set: jasmine.createSpy()
- };
-
- module(function($provide) {
- $provide.value('fileStorageService', fileStorageServiceMock);
- $provide.value('platformInfo', platformInfoStub);
- $provide.value('secureStorageService', secureStorageServiceMock);
- });
-
- inject(function($injector){
- appConfig = $injector.get('appConfigService');
- storageService = $injector.get('storageService');
- });
-
- secureProfileFromOldOnly = secureProfileFromOldOnly.replace('${appVersion}', appConfig.version);
- expectedOldProfileSavedToSecure = expectedOldProfileSavedToSecure.replace('${appVersion}', appConfig.version);
-
- });
-
- it('getProfile() from file storage.', function() {
- var error, keySecureGet, keyFileGet, keySecureSet, keyFileRemove, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, null);
- });
-
- fileStorageServiceMock.get.and.callFake(function(k, cb){
- keyFileGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(null);
- });
-
- fileStorageServiceMock.remove.and.callFake(function(k, cb){
- keyFileRemove = k;
- cb(null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error).toBeFalsy();
- expect(profile).toBeTruthy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyFileGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
- expect(keyFileRemove).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileSavedToSecure);
- expect(fileStorageServiceMock.remove.calls.any()).toBe(true);
-
- expect(profile.appVersion).toBe(appConfig.version);
- expect(profile.createdOn).toBe(1528363022385);
-
- expect(profile.credentials[0].coin).toBe('bch');
- expect(profile.credentials[0].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[0].walletId).toBe('a8ea9291-1369-4862-90a1-d80a5d4bcc20');
-
- expect(profile.credentials[1].coin).toBe('btc');
- expect(profile.credentials[1].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[1].walletId).toBe('f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b');
- });
-
- it('getProfile() from file storage, remove fails.', function() {
- var error, keySecureGet, keyFileGet, keySecureSet, keyFileRemove, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, null);
- });
-
- fileStorageServiceMock.get.and.callFake(function(k, cb){
- keyFileGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(null);
- });
-
- fileStorageServiceMock.remove.and.callFake(function(k, cb){
- keyFileRemove = k;
- cb(new Error('Remove error.'));
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Remove error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyFileGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
- expect(keyFileRemove).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileSavedToSecure);
- });
-
- it('getProfile() from file storage, secure set fails, not removed.', function() {
- var error, keySecureGet, keyFileGet, keySecureSet, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, null);
- });
-
- fileStorageServiceMock.get.and.callFake(function(k, cb){
- keyFileGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(new Error('Set error.'));
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Set error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyFileGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileSavedToSecure);
-
- expect(fileStorageServiceMock.remove.calls.any()).toBe(false);
- });
-
- it('getProfile(), secure get fails.', function() {
- var error, keySecureGet, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(new Error('Secure get error.'), null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Secure get error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
-
- expect(fileStorageServiceMock.remove.calls.any()).toBe(false);
- });
-
- it('getProfile(), secure get succeeds, file storage get fails.', function() {
- var error, keySecureGet, keyFileGet, profile, profile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- fileStorageServiceMock.get.and.callFake(function(k, cb){
- keyFileGet = k;
- cb(new Error('File storage get error.'), null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('File storage get error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyFileGet).toBe('profile');
-
- expect(fileStorageServiceMock.remove.calls.any()).toBe(false);
- });
-
- it('getProfile() from secure storage.', function() {
- var error, keySecureGet, keyFileGet, profile, profile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- fileStorageServiceMock.get.and.callFake(function(k, cb){
- keyFileGet = k;
- cb(null, null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error).toBeFalsy();
- expect(profile).toBeTruthy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyFileGet).toBe('profile');
-
- expect(profile.appVersion).toBe('4.11.0');
- expect(profile.createdOn).toBe(1528363260283);
-
- expect(profile.credentials[0].coin).toBe('bch');
- expect(profile.credentials[0].mnemonic).toBe('forget camera antique cement army ahead quantum leisure claim behind climb eight');
- expect(profile.credentials[0].walletId).toBe('9580929b-417d-4fce-bcbf-de8e16a51c25');
-
- expect(profile.credentials[1].coin).toBe('btc');
- expect(profile.credentials[1].mnemonic).toBe('forget camera antique cement army ahead quantum leisure claim behind climb eight');
- expect(profile.credentials[1].walletId).toBe('ef78459e-52b1-418a-b89d-4df2ef1d27ea');
- });
-
- it('getProfile() merge from local and secure storage.', function() {
- var error, keySecureGet, keyFileGet, keySecureSet, keyFileRemove, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- fileStorageServiceMock.get.and.callFake(function(k, cb){
- keyFileGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(null);
- });
-
- fileStorageServiceMock.remove.and.callFake(function(k, cb){
- keyFileRemove = k;
- cb(null);
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error).toBeFalsy();
- expect(profile).toBeTruthy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyFileGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
- expect(keyFileRemove).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileMergedWithSecure);
-
- expect(profile.appVersion).toBe('4.11.0');
- expect(profile.createdOn).toBe(1528363260283);
-
- // Existing secure
- expect(profile.credentials[0].coin).toBe('bch');
- expect(profile.credentials[0].mnemonic).toBe('forget camera antique cement army ahead quantum leisure claim behind climb eight');
- expect(profile.credentials[0].walletId).toBe('9580929b-417d-4fce-bcbf-de8e16a51c25');
-
- expect(profile.credentials[1].coin).toBe('btc');
- expect(profile.credentials[1].mnemonic).toBe('forget camera antique cement army ahead quantum leisure claim behind climb eight');
- expect(profile.credentials[1].walletId).toBe('ef78459e-52b1-418a-b89d-4df2ef1d27ea');
-
- // Old
- expect(profile.credentials[2].coin).toBe('bch');
- expect(profile.credentials[2].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[2].walletId).toBe('a8ea9291-1369-4862-90a1-d80a5d4bcc20');
-
- expect(profile.credentials[3].coin).toBe('btc');
- expect(profile.credentials[3].mnemonic).toBe('morning conduct milk catch victory smoke ship little dutch original legal gadget');
- expect(profile.credentials[3].walletId).toBe('f4ff4629-ff53-4bc7-8c98-e7c8e0149d3b');
-
- });
-
- it('getProfile() merge from local and secure storage, secure set fails, not removed from local.', function() {
- var error, keySecureGet, keyFileGet, keySecureSet, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- fileStorageServiceMock.get.and.callFake(function(k, cb){
- keyFileGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfile = v;
- cb(new Error('Secure set error.'));
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Secure set error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyFileGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileMergedWithSecure);
-
- expect(fileStorageServiceMock.remove.calls.any()).toBe(false);
- });
-
- it('getProfile() merge from local and secure storage, remove from local fails.', function() {
- var error, keySecureGet, keyFileGet, keySecureSet, keyFileRemove, profile, profile, savedProfile;
-
- secureStorageServiceMock.get.and.callFake(function(k, cb){
- keySecureGet = k;
- cb(null, secureProfile);
- });
-
- fileStorageServiceMock.get.and.callFake(function(k, cb){
- keyFileGet = k;
- cb(null, oldProfile);
- });
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k
- savedProfile = v;
- cb(null);
- });
-
- fileStorageServiceMock.remove.and.callFake(function(k, cb){
- keyFileRemove = k;
- cb(new Error('Remove error.'));
- });
-
- storageService.getProfile(function(err, p){
- error = err;
- profile = p;
- });
-
- expect(error.message).toBe('Remove error.');
- expect(profile).toBeFalsy();
-
- expect(keySecureGet).toBe('profile');
- expect(keyFileGet).toBe('profile');
- expect(keySecureSet).toBe('profile');
- expect(keyFileRemove).toBe('profile');
-
- expect(savedProfile).toBe(expectedOldProfileMergedWithSecure);
- });
-
- it('storeNewProfile().', function() {
- var error, keySecureSet, savedProfileString;
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfileString = v;
- cb(null);
- });
-
- storageService.storeNewProfile(secureProfileObj, function(err){
- error = err;
- });
-
- expect(error).toBeFalsy();
- expect(savedProfileString).toBeTruthy();
-
- expect(keySecureSet).toBe('profile');
-
- expect(savedProfileString).toBe(secureProfile);
- expect(fileStorageServiceMock.set.calls.any()).toBe(false);
- });
-
- it('storeNewProfile(), secure set fails.', function() {
- var error, keySecureSet, savedProfileString;
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfileString = v;
- cb(new Error('Secure set failed.'));
- });
-
- storageService.storeNewProfile(secureProfileObj, function(err){
- error = err;
- });
-
- expect(error.message).toBe('Secure set failed.');
- expect(savedProfileString).toBeTruthy();
-
- expect(keySecureSet).toBe('profile');
-
- expect(savedProfileString).toBe(secureProfile);
- expect(fileStorageServiceMock.set.calls.any()).toBe(false);
- });
-
- it('storeProfile().', function() {
- var error, keySecureSet, savedProfileString;
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfileString = v;
- cb(null);
- });
-
- storageService.storeProfile(secureProfileObj, function(err){
- error = err;
- });
-
- expect(error).toBeFalsy();
- expect(savedProfileString).toBeTruthy();
-
- expect(keySecureSet).toBe('profile');
-
- expect(savedProfileString).toBe(secureProfile);
- expect(fileStorageServiceMock.set.calls.any()).toBe(false);
- });
-
- it('storeProfile(), secure set fails.', function() {
- var error, keySecureSet, savedProfileString;
-
- secureStorageServiceMock.set.and.callFake(function(k, v, cb){
- keySecureSet = k;
- savedProfileString = v;
- cb(new Error('Secure set failed.'));
- });
-
- storageService.storeProfile(secureProfileObj, function(err){
- error = err;
- });
-
- expect(error.message).toBe('Secure set failed.');
- expect(savedProfileString).toBeTruthy();
-
- expect(keySecureSet).toBe('profile');
-
- expect(savedProfileString).toBe(secureProfile);
- expect(fileStorageServiceMock.set.calls.any()).toBe(false);
- });
-
-});
\ No newline at end of file
diff --git a/src/js/services/txFormatService.js b/src/js/services/txFormatService.js
index 1932ebd2a..5817c1a27 100644
--- a/src/js/services/txFormatService.js
+++ b/src/js/services/txFormatService.js
@@ -72,19 +72,11 @@ angular.module('copayApp.services').factory('txFormatService', function($filter,
var config = configService.getSync().wallet.settings;
var val = function() {
- var fiatAmount = rateService.toFiat(satoshis, config.alternativeIsoCode, coin);
- var roundedStr = fiatAmount.toFixed(2);
- var roundedNum = parseFloat(roundedStr);
- var subcent = roundedNum === 0 && fiatAmount > 0;
- var lessThanPrefix = '';
- if (subcent) {
- roundedNum = 0.01;
- lessThanPrefix = '< ';
- }
- var v1 = $filter('formatFiatAmount')(roundedNum);
+ var v1 = parseFloat((rateService.toFiat(satoshis, config.alternativeIsoCode, coin)).toFixed(2));
+ v1 = $filter('formatFiatAmount')(v1);
if (!v1) return null;
- return lessThanPrefix + v1 + ' ' + config.alternativeIsoCode;
+ return v1 + ' ' + config.alternativeIsoCode;
};
// Async version
@@ -201,7 +193,7 @@ angular.module('copayApp.services').factory('txFormatService', function($filter,
var alternativeIsoCode = config.alternativeIsoCode;
// If fiat currency
- if (currency && currency.toUpperCase() != 'BCH' && currency.toUpperCase() != 'BTC' && currency != 'sat') {
+ if (currency != 'BCH' && currency != 'BTC' && currency != 'sat') {
amountUnitStr = $filter('formatFiatAmount')(amount) + ' ' + currency;
amountSat = rateService.fromFiat(amount, currency, coin).toFixed(0);
} else if (currency == 'sat') {
diff --git a/src/js/services/txFormatService.spec.js b/src/js/services/txFormatService.spec.js
deleted file mode 100644
index c67e86f21..000000000
--- a/src/js/services/txFormatService.spec.js
+++ /dev/null
@@ -1,68 +0,0 @@
-describe('txFormatService', function(){
- var configServiceMock,
- rateServiceMock,
- txFormatService;
-
- beforeEach(function(){
- module('ngLodash');
- module('bwcModule');
- module('copayApp.filters');
- module('copayApp.services');
-
- configServiceMock = {
- getSync: jasmine.createSpy()
- };
-
- rateServiceMock = {
- isAvailable: jasmine.createSpy(),
- toFiat: jasmine.createSpy()
- };
-
- module(function($provide) {
- $provide.value('configService', configServiceMock);
- $provide.value('rateService', rateServiceMock);
- });
-
- inject(function($injector){
- txFormatService = $injector.get('txFormatService');
- });
-
- });
-
- it('formatAlternativeStr 0.49 cents.', function() {
-
- configServiceMock.getSync.and.returnValue({
- wallet: {
- settings: {
- alternativeIsoCode: 'USD'
- }
- }
- });
-
- rateServiceMock.isAvailable.and.returnValue(true);
- rateServiceMock.toFiat.and.returnValue(0.00499);
-
- var formatted = txFormatService.formatAlternativeStr('bch', 123);
-
- expect(formatted).toBe('< 0.01 USD');
- });
-
- it('formatAlternativeStr 0.5 cents.', function() {
-
- configServiceMock.getSync.and.returnValue({
- wallet: {
- settings: {
- alternativeIsoCode: 'USD'
- }
- }
- });
-
- rateServiceMock.isAvailable.and.returnValue(true);
- rateServiceMock.toFiat.and.returnValue(0.005);
-
- var formatted = txFormatService.formatAlternativeStr('bch', 123);
-
- expect(formatted).toBe('0.01 USD');
- });
-
-});
\ No newline at end of file
diff --git a/src/js/services/uxLanguage.js b/src/js/services/uxLanguage.js
index b8e7c3b09..ef64b7158 100644
--- a/src/js/services/uxLanguage.js
+++ b/src/js/services/uxLanguage.js
@@ -9,18 +9,6 @@ angular.module('copayApp.services')
name: 'English',
isoCode: 'en',
rateCode: 'USD'
- }, {
- name: 'Català',
- isoCode: 'ca',
- rateCode: 'EUR'
- },{
- name: 'Čeština',
- isoCode: 'cs',
- rateCode: 'EUR'
- }, {
- name: 'Deutsch',
- isoCode: 'de',
- rateCode: 'EUR'
}, {
name: 'Español',
isoCode: 'es',
@@ -41,6 +29,10 @@ angular.module('copayApp.services')
name: 'Polski',
isoCode: 'pl',
rateCode: 'EUR'
+ }, {
+ name: 'Deutsch',
+ isoCode: 'de',
+ rateCode: 'EUR'
}, {
name: '日本語',
isoCode: 'ja',
@@ -63,12 +55,13 @@ angular.module('copayApp.services')
name: '한국어',
isoCode: 'ko',
rateCode: 'KRW'
- }, {
- name: 'فارسی',
- isoCode: 'fa',
- rateCode: 'IRR'
}];
+ // }, {
+ // name: 'Český',
+ // isoCode: 'cs',
+ // }
+
root._detect = function(cb) {
var userLang, androidLang;
if (navigator && navigator.globalization) {
diff --git a/src/js/services/wallet-history.service.js b/src/js/services/wallet-history.service.js
deleted file mode 100644
index 512a2d8b1..000000000
--- a/src/js/services/wallet-history.service.js
+++ /dev/null
@@ -1,275 +0,0 @@
-'use strict';
-
-(function(){
-
- angular
- .module('bitcoincom.services')
- .factory('walletHistoryService', walletHistoryService);
-
- function walletHistoryService(configService, storageService, lodash, $log, txFormatService) {
- //var PAGE_SIZE = 50;
- var PAGE_SIZE = 20; // For dev only
- // How much to overlap on each end of the page, for mitigating inconsistent sort order.
- var PAGE_OVERLAP_FRACTION = 0.2;
- var PAGE_OVERLAP = Math.floor(PAGE_SIZE * PAGE_OVERLAP_FRACTION);
- // The fraction of transactions in the new overlapping resultset that we already know about.
- // If we know about at least this many, then there are probably no gaps.
- var MIN_KNOWN_TX_OVERLAP_FRACTION = 0.5;
-
- var SAFE_CONFIRMATIONS = 6;
-
- var allTransactionsFetched = false;
- var service = {
- getCachedTxHistory: getCachedTxHistory,
- updateLocalTxHistoryByPage: updateLocalTxHistoryByPage,
- };
- return service;
-
- function addEarlyTransactions(walletId, cachedTxs, newTxs) {
-
- var cachedTxIndexFromId = {};
- cachedTxs.forEach(function forCachedTx(tx){
- cachedTxIndexFromId[tx.txid] = true;
- });
-
- var confirmationsUpdated = false;
- var someTransactionsWereNew = false;
- var overlappingTxsCount = 0;
-
- newTxs.forEach(function forNewTx(tx){
- if (typeof cachedTxIndexFromId[tx.txid] === "undefined") {
- someTransactionsWereNew = true;
- cachedTxs.push(tx);
- } else {
- var txUpdated = updateCachedTx(cachedTxs, cachedTxIndexFromId, tx);
- confirmationsUpdated = confirmationsUpdated || txUpdated;
- overlappingTxsCount++;
- }
- });
-
- var overlappingTxFraction = overlappingTxsCount / Math.min(cachedTxs.length, PAGE_OVERLAP);
- console.log('overlappingTxFraction:', overlappingTxFraction);
-
- if (overlappingTxFraction >= MIN_KNOWN_TX_OVERLAP_FRACTION) { // We are good
- if (someTransactionsWereNew) {
- saveTxHistory(walletId, cachedTxs);
- } else if (confirmationsUpdated) {
- saveTxHistory(walletId, cachedTxs);
- } else if (overlappingTxsCount === newTxs.length) {
- allTransactionsFetched = true;
- }
- return cachedTxs;
- } else {
- // We might be missing some txs.
- console.error('We might be missing some txs in the history.');
- // Our history is wrong, so remove it - we could instead, try to fetch data that was not so early.
- storageService.removeTxHistory(walletId, function onRemoveTxHistory(){});
- return [];
- }
-
- }
-
- function addLatestTransactions(walletId, cachedTxs, newTxs) {
- var cachedTxIndexFromId = {};
- cachedTxs.forEach(function forCachedTx(tx, txIndex){
- cachedTxIndexFromId[tx.txid] = txIndex;
- });
-
- var someTransactionsWereNew = false;
- var confirmationsUpdated = false;
- var overlappingTxsCount = 0;
- var uniqueNewTxs = [];
-
- newTxs.forEach(function forNewTx(tx){
- if (typeof cachedTxIndexFromId[tx.txid] === "undefined") {
- someTransactionsWereNew = true;
- uniqueNewTxs.push(tx);
- } else {
- var txUpdated = updateCachedTx(cachedTxs, cachedTxIndexFromId, tx);
- confirmationsUpdated = confirmationsUpdated || txUpdated;
- overlappingTxsCount++;
- }
- });
-
- var overlappingTxFraction = overlappingTxsCount / Math.min(cachedTxs.length, PAGE_OVERLAP);
-
- if (overlappingTxFraction >= MIN_KNOWN_TX_OVERLAP_FRACTION) { // We are good
- if (someTransactionsWereNew) {
- var allTxs = uniqueNewTxs.concat(cachedTxs);
- saveTxHistory(walletId, allTxs);
- return allTxs;
- } else {
- if (confirmationsUpdated) {
- saveTxHistory(walletId, cachedTxs);
- }
- return cachedTxs;
- }
- } else {
- // We might be missing some txs.
- // Our history is wrong, so just include the latest ones
- saveTxHistory(walletId, newTxs);
- return newTxs;
- }
-
- }
-
- // Only clear the cache once we have received new transactions from the server.
- /**
- * @param wallet
- * @param start
- * @param {function(err, txs)} cb - transactions is always an array, may be empty
- */
- function fetchTxHistoryByPage(wallet, start, cb) {
- var skip = Math.max(0, start - PAGE_OVERLAP);
- var limit = PAGE_SIZE;
-
- var opts = {
- skip: skip,
- limit: limit
- };
- wallet.getTxHistory(opts, function onTxHistory(err, txsFromServer) {
- if (err) {
- return cb(err, []);
- }
-
- if (txsFromServer.length === 0) {
- return cb(null, []);
- }
-
- var processedTxs = processNewTxs(wallet, txsFromServer);
-
- return cb(null, processedTxs);
- });
- }
-
- /**
- * @param {string} walletId
- * @param {function(error, txs)} cb - txs is always an array, may be empty
- */
- function getCachedTxHistory(walletId, cb) {
- console.log('txhistory updateLocalTxHistoryByPage()');
- storageService.getTxHistory(walletId, function onGetTxHistory(err, txHistoryString){
- if (err) {
- return cb(err, []);
- }
-
- if (!txHistoryString) {
- return cb(null, []);
- }
-
- try {
- var txHistory = JSON.parse(txHistoryString);
- return cb(null, txHistory);
- } catch (e) {
- $log.error('Failed to parse tx history.', e);
- return cb(e, []);
- }
- });
- }
-
- function processNewTxs(wallet, txs) {
- var now = Math.floor(Date.now() / 1000);
- var txHistoryUnique = {};
- var processedTxs = [];
- wallet.hasUnsafeConfirmed = false;
-
- lodash.each(txs, function(tx) {
- tx = txFormatService.processTx(wallet.coin, tx);
-
- // no future transactions...
- if (tx.time > now)
- tx.time = now;
-
- if (tx.confirmations >= SAFE_CONFIRMATIONS) {
- tx.safeConfirmed = SAFE_CONFIRMATIONS + '+';
- } else {
- tx.safeConfirmed = false;
- wallet.hasUnsafeConfirmed = true;
- }
-
- if (tx.note) {
- delete tx.note.encryptedEditedByName;
- delete tx.note.encryptedBody;
- }
-
- if (!txHistoryUnique[tx.txid]) {
- processedTxs.push(tx);
- txHistoryUnique[tx.txid] = true;
- } else {
- $log.debug('Ignoring duplicate TX in history: ' + tx.txid)
- }
- });
-
- return processedTxs;
- }
-
- function saveTxHistory(walletId, processedTxs) {
- storageService.setTxHistory(processedTxs, walletId, function onSetTxHistory(error){
- if (error) {
- $log.error('pagination Failed to save tx history.', error);
- }
- });
- }
-
- /**
- * Returns true if the cached tx was updated
- * @param {*} cachedTxs
- * @param {*} cachedTxIndexFromId - Indices for cachedTxs, based on txid
- * @param {*} tx - The most recent tx info
- */
- function updateCachedTx(cachedTxs, cachedTxIndexFromId, tx) {
- var updated = false;
- var txIndex = cachedTxIndexFromId[tx.txid];
- var cachedTx = cachedTxs[txIndex];
-
- if (cachedTx.confirmations < SAFE_CONFIRMATIONS && tx.confirmations > cachedTx.confirmations) {
- cachedTxs[txIndex].confirmations = tx.confirmations;
- updated = true;
- }
- return updated;
- }
-
- function updateLocalTxHistoryByPage(wallet, getLatest, flushCacheOnNew, cb) {
- console.log('txhistory updaetLocalTxHistoryByPage()');
- if (flushCacheOnNew) {
- fetchTxHistoryByPage(wallet, 0, function onFetchTxHistory(err, txs){
- if (err) {
- return cb(err, txs);
- }
- saveTxHistory(wallet.id, txs);
- return cb(null, txs);
- });
- } else {
- getCachedTxHistory(wallet.id, function onCachedHistory(err, cachedTxs){
- if (err) {
- $log.error('Failed to get cached tx history.', err);
- return cb(err, []);
- }
-
- var start = getLatest ? 0 : cachedTxs.length;
- fetchTxHistoryByPage(wallet, start, function onFetchHistory(err, fetchedTxs){
- if (err) {
- return cb(err);
- }
-
- if (fetchedTxs.length === 0) {
- return cb(null, cachedTxs, true /*fetchedAllTransactions*/);
- }
-
- var txs = [];
- if (getLatest) {
- txs = addLatestTransactions(wallet.id, cachedTxs, fetchedTxs);
- } else {
- allTransactionsFetched = false;
- txs = addEarlyTransactions(wallet.id, cachedTxs, fetchedTxs);
- return cb(null, txs, allTransactionsFetched);
- }
- return cb(null, txs);
- });
-
-
- });
- }
- }
- }
-})();
\ No newline at end of file
diff --git a/src/js/services/walletService.js b/src/js/services/walletService.js
index d29f99272..641e7e612 100644
--- a/src/js/services/walletService.js
+++ b/src/js/services/walletService.js
@@ -343,19 +343,21 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
if (err) return cb(err);
if (!txsFromServer.length)
- return cb(null, []);
+ return cb();
- return cb(null, txsFromServer);
+ 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) {
- var isConfirm = (tx.confirmations >= root.SOFT_CONFIRMATION_LIMIT);
- if (!isConfirm) {
- tx.recent = true;
- }
- return isConfirm;
+ if (tx.confirmations >= root.SOFT_CONFIRMATION_LIMIT)
+ return tx;
+ tx.recent = true;
});
}
@@ -396,23 +398,6 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
return ret;
};
- var skipped = 0;
-
- function fixTxsUnit(txs) {
- if (!txs || !txs[0] || !txs[0].amountStr) return;
-
- var cacheCoin = txs[0].amountStr.split(' ')[1];
-
- if (cacheCoin == 'bits') {
-
- $log.debug('Fixing Tx Cache Unit to: ' + wallet.coin)
- lodash.each(txs, function(tx) {
- tx.amountStr = txFormatService.formatAmountStr(wallet.coin, tx.amount);
- tx.feeStr = txFormatService.formatAmountStr(wallet.coin, tx.fees);
- });
- }
- };
-
var updateLocalTxHistory = function(wallet, opts, cb) {
var FIRST_LIMIT = 5;
var LIMIT = 50;
@@ -423,10 +408,25 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
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 cacheCoin = txs[0].amountStr.split(' ')[1];
+
+ if (cacheCoin == 'bits') {
+
+ $log.debug('Fixing Tx Cache Unit to: ' + wallet.coin)
+ lodash.each(txs, function(tx) {
+ tx.amountStr = txFormatService.formatAmountStr(wallet.coin, tx.amount);
+ tx.feeStr = txFormatService.formatAmountStr(wallet.coin, tx.fees);
+ });
+ }
+ };
getSavedTxs(walletId, function(err, txsFromLocal) {
if (err) return cb(err);
@@ -437,15 +437,12 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
var endingTxid = confirmedTxs[0] ? confirmedTxs[0].txid : null;
var endingTs = confirmedTxs[0] ? confirmedTxs[0].time : null;
- console.log('pagination Hard confirmed TXs. Got:' + confirmedTxs.length + '/' + txsFromLocal.length);
-
// First update
progressFn(txsFromLocal, 0);
wallet.completeHistory = txsFromLocal;
function getNewTxs(newTxs, skip, next) {
- console.log('pagination getNewTxs skip: ' + skip);
- getTxsFromServer(wallet, skip, endingTxid, requestLimit, function(err, res) {
+ 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../))) {
@@ -457,29 +454,13 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
return next(err);
}
- console.log('pagination Result count: ' + res.length);
- // Check if new txs are founds, if yes, lets investigate in the 50 next
- // To be sure we are not missing txs by sorting (maybe a new tx is after the "endingTxid"
- var newDiscoveredTxs = res.filter(function (x) {
- return confirmedTxs.filter(function (confX) {
- return confX.txid == x.txid;
- }).length == 0;
- });
-
- console.log('pagination Discovering new TXs. Got:' + newDiscoveredTxs.length);
-
- var shouldContinue = newDiscoveredTxs.length > 0;
-
- // If no new tx, no need to check
- if (shouldContinue) {
- newTxs = newTxs.concat(processNewTxs(wallet, lodash.compact(newDiscoveredTxs)));
- }
+ newTxs = newTxs.concat(processNewTxs(wallet, lodash.compact(res)));
progressFn(newTxs.concat(txsFromLocal), newTxs.length);
skip = skip + requestLimit;
- console.log('pagination Syncing TXs. Got:' + newTxs.length + ' Skip:' + skip, ' EndingTxid:', endingTxid, ' Continue:', shouldContinue);
+ $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.
@@ -496,16 +477,14 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
}
//
- shouldContinue = false;
-
- skipped = skip;
if (!shouldContinue) {
- console.log('pagination Finished Sync: New / soft confirmed Txs: ' + newTxs.length);
+ $log.debug('Finished Sync: New / soft confirmed Txs: ' + newTxs.length);
return next(null, newTxs);
}
requestLimit = LIMIT;
+ getNewTxs(newTxs, skip, next);
});
};
@@ -541,87 +520,6 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
});
}
-
- if (opts.getMoreTxs) {
- var requestLimit = LIMIT;
- getNewTxs([], skipped, function(err, txs) {
- if (err) return cb(err);
-
- console.log();
- createReceivedEvents(txs);
-
- 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(null, newHistory);
- });
- });
- });
- return;
- }
-
- skipped = 0;
-
getNewTxs([], 0, function(err, txs) {
if (err) return cb(err);
@@ -690,19 +588,14 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
return storageService.setTxHistory(historyToSave, walletId, function() {
$log.debug('Tx History saved.');
- return cb(null, newHistory);
+
+ return cb();
});
});
});
});
};
- root.getMoreTxs = function(wallet, cb) {
- var opts = {};
- opts.getMoreTxs = true;
- updateLocalTxHistory(wallet, opts, cb);
- };
-
root.getTxNote = function(wallet, txid, cb) {
wallet.getTxNote({
txid: txid
@@ -726,6 +619,7 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
};
root.getTx = function(wallet, txid, cb) {
+
function finish(list) {
var tx = lodash.find(list, {
txid: txid
@@ -742,6 +636,7 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
limitTx: txid
}, function(err, txHistory) {
if (err) return cb(err);
+
finish(txHistory);
});
}
@@ -765,10 +660,16 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
root.getTxHistory = function(wallet, opts, cb) {
opts = opts || {};
+ var walletId = wallet.credentials.walletId;
+
if (!wallet.isComplete()) return cb();
- // var historyIsCached = wallet.completeHistory && wallet.completeHistory.isValid;
- // if (historyIsCached && !opts.force) return cb(null, wallet.completeHistory);
+ function isHistoryCached() {
+ return wallet.completeHistory && wallet.completeHistory.isValid;
+ };
+
+ // disable caching
+ //if (isHistoryCached() && !opts.force) return cb(null, wallet.completeHistory);
$log.debug('Updating Transaction History');
@@ -983,7 +884,7 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
var createAddress = function(wallet, cb) {
$log.debug('Creating address for wallet:', wallet.id);
- wallet.createAddress({}, function onWalletCreatedAddress(err, addr) {
+ 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../))) {
@@ -1001,7 +902,6 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
if (err) return cb(err);
return cb(null, addr[0].address);
});
- return;
}
return bwcError.cb(err, prefix, cb);
}
@@ -1279,13 +1179,12 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim
if (signedTxp.status == 'accepted') {
ongoingProcess.set('broadcastingTx', true, customStatusHandler);
-
- var handleBroadcastTx = function(err, broadcastedTxp) {
+ function handleBroadcastTx(err, broadcastedTxp) {
ongoingProcess.set('broadcastingTx', false, customStatusHandler);
- if (err) return cb(bwcError.msg(err));
+ if (err) return cb(bwcError.msg(err));
$rootScope.$emit('Local/TxAction', wallet.id);
return cb(null, broadcastedTxp);
- };
+ }
if (signedTxp.payProUrl && signedTxp.coin == 'bch') {
payproService.broadcastBchTx(signedTxp, handleBroadcastTx);
diff --git a/src/sass/buttons.scss b/src/sass/buttons.scss
index 886d730c7..348d6d378 100644
--- a/src/sass/buttons.scss
+++ b/src/sass/buttons.scss
@@ -1,5 +1,5 @@
%button-standard {
- width: 90%;
+ width: 85%;
max-width: 300px;
margin-left: auto;
margin-right: auto;
@@ -16,8 +16,6 @@
&.button-primary,
&.button-secondary,
&.button-light,
- &.button-white,
- &.button-green,
&.button-assertive {
&.button-standard {
@extend %button-standard;
@@ -35,10 +33,6 @@
}
}
-@mixin button-shadow() {
- box-shadow: 0 2px 11px 0 #C1C1C1;;
-}
-
.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);
@@ -53,37 +47,7 @@
}
.button {
- border-radius: 6px;
&.button-full {
- border-radius: 0;
display: block;
}
- &-green {
- @include button-style(#719561, #FFF, #606060, #FFF, #FFF);
- @include button-clear(#FFF);
- @include button-outline(#C1C1C1);
- border: 0px;
- @include button-shadow();
- }
- &-white {
- @include button-style(#FFF, #C1C1C1, #C1C1C1, #FFF, #606060);
- @include button-clear(#FFF);
- @include button-outline(#C1C1C1);
- @include button-shadow();
- &.activated {
- color: #FFF;
- }
- &-outline {
- @include button-style(transparent, #FFFFFF, #FFFFFF, #FFFFFF, #FFFFFF);
- @include button-outline(#FFFFFF);
- background: none;
- box-shadow: none;
- }
- }
- &-grey-outline {
- @include button-style(transparent, #727272, #FAFAFA, #727272, #727272);
- @include button-outline(#727272);
- background: none;
- box-shadow: none;
- }
}
\ No newline at end of file
diff --git a/src/sass/components/action-minor.scss b/src/sass/components/action-minor.scss
deleted file mode 100644
index f158fe845..000000000
--- a/src/sass/components/action-minor.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-.action-minor {
- margin: 20px 14px;
- font-size: 14px;
-
- &.mt-negative {
- margin-top: 0;
- }
-
- &.text-right {
- text-align: right;
- }
-
- > .action-icon {
- width: 15px;
- height: 15px;
- vertical-align: middle;
- margin-right: 3px;
- }
-
- > .action-text {
- vertical-align: middle;
- color: #444444;
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/address-frame.scss b/src/sass/components/address-frame.scss
deleted file mode 100644
index 8aecce6d6..000000000
--- a/src/sass/components/address-frame.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-.address-frame {
- background-color: #F8F8F8;
- border: 0.5px solid #EDEBEB;
- border-radius: 3px;
- padding: 9px;
- text-align: center;
- font-size: 14px;
- overflow: hidden;
- text-overflow: ellipsis;
-
- &.expanded {
- white-space: normal;
- text-overflow: clip;
- }
-
- .prefix {
- color: #000000;
- }
-
- .mid {
- color: #919191;
- }
-
- .suffix {
- color: #000000;
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/card.scss b/src/sass/components/card.scss
deleted file mode 100644
index 6df235ab8..000000000
--- a/src/sass/components/card.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-.card {
- &.card-gutter-compact {
- margin: 10px 12px;
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/components.scss b/src/sass/components/components.scss
deleted file mode 100644
index 4d2bd695e..000000000
--- a/src/sass/components/components.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-@import "item";
-@import "ion-content";
-@import "card";
-
-@import "header";
-@import "content-frame";
-@import "address-frame";
-@import "action-minor";
-@import "expand-content";
-@import "fee-summary";
-@import "formatted-amount";
-@import "wallet-balance";
diff --git a/src/sass/components/content-frame.scss b/src/sass/components/content-frame.scss
deleted file mode 100644
index 5766b246b..000000000
--- a/src/sass/components/content-frame.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-.content-frame {
- &.negative-top {
- margin-top: -40px;
-
- .card {
- &:first-child {
- margin-top: 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/expand-content.scss b/src/sass/components/expand-content.scss
deleted file mode 100644
index 934a2beec..000000000
--- a/src/sass/components/expand-content.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-.expand-content-frame {
- position: relative;
-
- .expand-content-trigger {
- position: absolute;
- top: 0;
- transition: opacity 0.3s ease;
- right: 0;
-
- &.expand-content-revealed {
- opacity: 0;
- }
- }
-
- .expand-content {
- opacity: 0;
- transform-origin: 100% 0%;
- transform: scale(0,0);
- transition: opacity 0.3s ease, transform 0.3s ease;
-
- &.expand-content-revealed {
- opacity: 1;
- transform: scale(1,1);
- }
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/fee-summary.scss b/src/sass/components/fee-summary.scss
deleted file mode 100644
index 88c43ab02..000000000
--- a/src/sass/components/fee-summary.scss
+++ /dev/null
@@ -1,40 +0,0 @@
-.fee-summary {
- background-color: #F2F2F2;
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- padding: 5px 12px 15px;
- position: relative;
- width: 100%;
-
- &:before {
- content: '';
- position: absolute;
- left: 0;
- top: -15px;
- width: 100%;
- height: 15px;
- background: linear-gradient(to bottom, rgba(242,242,242,0) 0%,rgba(242,242,242,1) 100%);
- }
-
- .amount {
- width: 100%;
-
- .fee-fiat {
- display: inline;
-
- &.positive {
- color: #70955F;
- }
-
- &.negative {
- color: #C24633;
- }
- }
-
- .fee-crypto {
- color: #A7A7A7;
- float: right;
- }
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/formatted-amount.scss b/src/sass/components/formatted-amount.scss
deleted file mode 100644
index 6678572c9..000000000
--- a/src/sass/components/formatted-amount.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-.formatted-amount {
- display: inline-block;
-
- .start,
- .middle,
- .end,
- .currency {
- display: inline-block;
- }
-
- .start {
- font-size: 1em;
- }
-
- .middle {
- font-size: 0.7857em;
- margin-left: 5px;
- }
-
- .end {
- font-size: 0.7857em;
- margin-left: 5px;
- }
-
- &.size-equal {
- .middle,
- .end {
- font-size: 1em;
- }
- }
-
- .currency {
- font-size: 1em;
- margin-left: 5px;
- text-transform: uppercase;
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/header.scss b/src/sass/components/header.scss
deleted file mode 100644
index d44c93b60..000000000
--- a/src/sass/components/header.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-.header {
- padding: 29px 12px 61px;
- background-color: $v-bitcoin-orange;
- &.btc {
- background-color: $v-bitcoin-core;
- }
- color: #FFFFFF;
-
- .title {
- font-size: 18px;
- font-weight: 400;
- line-height: 1em;
- color: #FFFFFF;
- text-align: center;
-
- + .content {
- margin-top: 23px;
- }
- }
-
- .content {
- text-align: center;
-
- p {
- margin: 0;
- line-height: 1em;
- font-size: 18px;
-
- &.large {
- font-size: 29px;
- font-weight: 600;
- }
-
- + p {
- margin-top: 8px;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/ion-content.scss b/src/sass/components/ion-content.scss
deleted file mode 100644
index 56f3960a0..000000000
--- a/src/sass/components/ion-content.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-* Extends Ionic v1 ion-content
-*/
-
-ion-content {
- &.bg-neutral {
- background-color: #F2F2F2;
- }
-
- &.padded-bottom-cta {
- bottom: 92px;
- }
-
- &.padded-bottom-cta-with-summary {
- bottom: 134px;
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/item.scss b/src/sass/components/item.scss
deleted file mode 100644
index a6ac4143c..000000000
--- a/src/sass/components/item.scss
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-* Extends Ionic v1 item
-*/
-
-.item {
- &.item-compact {
- padding: 11px 13px;
- }
- &.item-gutterless {
- padding: 0;
- }
-
- .item-content {
- &.item-content-avatar {
- min-height: 69px;
- padding: 13px 11px 13px 68px;
-
- > img,
- > i {
- &:first-child {
- position: absolute;
- max-width: 40px;
- max-height: 40px;
- width: 100%;
- height: 100%;
- border-radius: 50%;
- left: 13px;
- top: 50%;
- padding: 0;
- -webkit-transform: translate(0,-50%);
- transform: translate(0,-50%);
- }
- }
- }
-
- &.item-content-compact {
- min-height: 0;
- padding: 13px 11px;
- }
-
- .highlight {
- color: #FAB915
- }
-
- + .item-content {
- padding-top: 0;
- }
- }
-}
\ No newline at end of file
diff --git a/src/sass/components/wallet-balance.scss b/src/sass/components/wallet-balance.scss
deleted file mode 100644
index faf4e8611..000000000
--- a/src/sass/components/wallet-balance.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-.wallet-balance-directive {
- display: inline-block;
-}
\ No newline at end of file
diff --git a/src/sass/directives/directives.scss b/src/sass/directives/directives.scss
index 954b86c3a..9159d3f23 100644
--- a/src/sass/directives/directives.scss
+++ b/src/sass/directives/directives.scss
@@ -1,2 +1 @@
@import "gravatar";
-@import "elastic";
\ No newline at end of file
diff --git a/src/sass/directives/elastic.scss b/src/sass/directives/elastic.scss
deleted file mode 100644
index 8e8aba4fa..000000000
--- a/src/sass/directives/elastic.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-.elastic {
- width: 100%;
- font-size: 14px;
-}
\ No newline at end of file
diff --git a/src/sass/icons.scss b/src/sass/icons.scss
index ee270408f..b083835d8 100644
--- a/src/sass/icons.scss
+++ b/src/sass/icons.scss
@@ -40,7 +40,7 @@
border-radius: $v-icon-border-radius;
width: 40px;
height: 40px;
- box-shadow: 0px 0px 9px 0px rgba(0, 0, 0, 0.3);
+ box-shadow: $v-hovering-box-shadow;
background-repeat:no-repeat;
background-clip: padding-box;
background-size: 103%;
@@ -48,67 +48,6 @@
background: rgb(1, 209, 162);
}
}
-
- &.theme-circle {
- > .bg {
- border-radius: 50%;
- background-size: 85%;
- background-position: 50%;
- background-color: #FFFFFF;
- box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.3);
- border: 1px solid #faba13;
- text-align: center;
- font-size: 30px;
-
- &:before {
- vertical-align: middle;
- }
-
- &.icon-shapeshift {
- background-color: #263e5c;
- }
-
- &.icon-buy-bitcoin2 {
- border: 1px solid #faba13;
- }
-
- &.icon-reddit-white {
- background-image: url('../img/icon-reddit-white.svg');
- background-color: #ff4500;
- background-size: 60%;
- }
-
- &.icon-twitter-white {
- background-image: url('../img/icon-twitter-white.svg');
- background-color: #1da1f2;
- background-size: 60%;
- }
-
- &.icon-faucet {
- background-image: url('../img/icon-faucet.svg');
- background-size: 70%;
- }
-
- &.icon-wallet {
- background-color: #FAB915;
- background-image: url('../img/icon-wallet.svg');
- border: none;
- box-shadow: 0 0 0 1px rgba(0,0,0,0.3) inset;
- }
- }
- }
-
- &.theme-circle-services {
- > .bg {
- border: 1px solid #191919;
- }
- }
-
- &.theme-circle-community {
- > .bg {
- border: 1px solid #FFFFFF;
- }
- }
}
diff --git a/src/sass/main.scss b/src/sass/main.scss
index 516656449..cb5e7118f 100644
--- a/src/sass/main.scss
+++ b/src/sass/main.scss
@@ -5,9 +5,7 @@
@import "icons";
@import "buttons";
@import "forms";
-@import "qr";
@import "mixins/mixins";
@import "views/views";
@import "directives/directives";
-@import "components/components";
@import "shame";
diff --git a/src/sass/mixins/layout.scss b/src/sass/mixins/layout.scss
index e7a1af9da..b03d53800 100644
--- a/src/sass/mixins/layout.scss
+++ b/src/sass/mixins/layout.scss
@@ -18,55 +18,3 @@
.absolute-center{
@include absolute-center();
}
-
-.third-party-notice {
- font-size: 12px;
- margin: 0px 14px;
- font-weight: 600;
- color: #6F6F70;
-
- @media (min-width: 768px) {
- text-align: center;
- }
-}
-
-@mixin empty-case() {
- padding-top: 5vh;
- text-align: center;
- .item {
- border-style: none;
- }
- & > .title {
- font-size: 20px;
- color: $v-dark-gray;
- margin: 20px 10px;
- }
- & > .subtitle {
- font-size: 1rem;
- line-height: 1.5em;
- font-weight: 300;
- color: #6F6F70;
- margin: 20px 1em 2.5em;
- }
- .big-icon-svg {
- .bg.green {
- padding: 0 10px;
- box-shadow: none;
- }
- }
- .buttons {
- margin-top: 18px;
- .button {
- font-weight: bold;
- font-size: 19px;
- line-height: 26px;
- padding: 8px 6px;
- }
- }
- .button-first-contact img {
- height: 19px;
- width: 19px;
- margin-right: 6px;
- vertical-align: sub;
- }
-}
\ No newline at end of file
diff --git a/src/sass/qr.scss b/src/sass/qr.scss
deleted file mode 100644
index 5df26e37b..000000000
--- a/src/sass/qr.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-qrcode {
- position: relative;
- &.qr-overlay {
- &::before {
- content: "";
- background-size: 100% 100%;
- display: block;
- left: calc(50% - 22px);
- margin-top: calc(50% - 22px);
- width: 44px;
- height: 44px;
- position:absolute;
- }
- &--bch::before {
- background-image: url('../img/qr-overlay-bch.png');
- }
- &--btc::before {
- background-image: url('../img/qr-overlay-btc.png');
- }
- }
-}
\ No newline at end of file
diff --git a/src/sass/shame.scss b/src/sass/shame.scss
index dbbc222d7..07ac2dedf 100644
--- a/src/sass/shame.scss
+++ b/src/sass/shame.scss
@@ -233,10 +233,6 @@ input[type=number] {
font-size: 24px;
}
-.size-25 {
- font-size: 25px;
-}
-
.size-28 {
font-size: 28px;
}
@@ -468,7 +464,3 @@ input[type=file] {
.white-space-initial {
white-space: initial;
}
-
-.height-spacer {
- height: 15px;
-}
diff --git a/src/sass/variables.scss b/src/sass/variables.scss
index 49ee6ae89..e5bd2712d 100644
--- a/src/sass/variables.scss
+++ b/src/sass/variables.scss
@@ -8,9 +8,7 @@ $v-font-family-light: "Roboto-Light", sans-serif-
/* Colors */
$v-bitcoin-orange: #fab915 !default;
-$v-bitcoin-core: #535353 !default;
-$v-off-black: #262424;
$v-dark-gray: #445 !default;
$v-mid-gray: #667 !default;
$v-light-gray: #9b9bab !default;
@@ -26,11 +24,8 @@ $v-text-accent-color: #647ce8 !default;
$v-success-color: #13e5b6 !default;
$v-warning-color: #ffa500 !default;
-$v-warning-color-2: #b7664d;
$v-error-color: #ef473a !default;
-$v-background-under-card: #f2f2f2;
-
$v-wallet-color-map: (
0: (color: #dd4b39, name: 'Cinnabar'),
1: (color: #f38f12, name: 'Carrot Orange'),
@@ -38,8 +33,8 @@ $v-wallet-color-map: (
3: (color: #d0b136, name: 'Metallic Gold'),
4: (color: #9edd72, name: 'Feijoa'),
5: (color: #29bb9c, name: 'Shamrock'),
- 6: (color: #eeb640, name: 'Light Orange'),
- 7: (color: #535353, name: 'Dark Grey'),
+ 6: (color: #26B03C, name: 'Dollar Green'),
+ 7: (color: #fab915, name: 'Observatory'),
8: (color: #77dada, name: 'Turquoise Blue'),
9: (color: #4a90e2, name: 'Cornflower Blue'),
10: (color: #484ed3, name: 'Free Speech Blue'),
@@ -82,7 +77,6 @@ $v-button-primary-active-bg: darken($v-accent-color, 10%
$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-disabled-bg: $v-mid-gray;
$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;
diff --git a/src/sass/views/address-book.scss b/src/sass/views/address-book.scss
index 8bbdbc6be..c0d0f99a8 100644
--- a/src/sass/views/address-book.scss
+++ b/src/sass/views/address-book.scss
@@ -124,6 +124,7 @@
position: relative;
height: 70px;
border-color: $royal;
+ background-color: $royal;
padding-top: 20px;
margin-bottom: 50px;
text-align: center;
diff --git a/src/sass/views/amount.scss b/src/sass/views/amount.scss
index aba2fe6d9..26169f206 100644
--- a/src/sass/views/amount.scss
+++ b/src/sass/views/amount.scss
@@ -244,21 +244,6 @@
flex-direction: column;
justify-content: center;
- .send-amount-header-footer {
- flex: 1 1 auto;
- min-height: 20px;
-
- .warning {
- font-weight: bold;
- font-size: 12px;
- padding: 0 6px 6px 6px;
- text-align: center;
- }
- &__max {
- float: right;
- }
- }
-
.send-amount-tool {
flex: 0 1 auto;
@@ -267,16 +252,7 @@
position: relative;
padding: 10px 30px;
- .text-selectable {
- -webkit-user-select: text;
- -moz-user-select: text;
- -ms-user-select: text;
- user-select: text;
- }
-
.primary-amount {
- color: #333;
- font-weight: bold;
input, .unit, .primary-amount-display {
font-size: 1.8em;
@@ -305,8 +281,7 @@
&.very-long {
input, .unit, .primary-amount-display {
- font-size: 1.2em; // OK for iPhone 5 / SE with BCH to 8dp
-
+ font-size: 0.9em;
@media (min-width: 375px) {
font-size: 1.3em;
@@ -347,16 +322,16 @@
line-height: 1em;
}
+ .unit {
+ font-weight: bold;
+ }
+
.primary-amount-display {
margin-right: 5px;
word-break: break-all;
- width: 100%;
}
}
- .alternative-amount {
- color: #6F6F70;
- }
.switch-currencies {
position: absolute;
right: 0;
@@ -369,60 +344,26 @@
}
}
}
- }
- }
- .send-amount-extras {
- display: flex;
- flex: 0 0 auto;
- /* So that if only one item is present, it appears on the right. */
- flex-direction: row-reverse;
- font-size: 12px;
- align-items: center;
- justify-content: space-between;
- margin: 0 14px;
+ .send-amount-actions {
+ margin-top: 15px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
- .available-funds {
- color: #6F6F70;
- text-align: left;
- }
+ .button {
+ flex: 1 1 auto;
+ line-height: 1.2em;
- .change-currency {
- text-align: right;
- }
+ + .button {
+ margin-left: 10px;
+ }
- .warning {
- color: $v-warning-color-2;
- }
-
- .extra {
- flex: 1;
- line-height: normal;
-
- .button {
- background: none;
- border: none;
- border-radius: 0;
- color: #000;
- font-family: 'ProximaNova';
- font-size: 14px;
- line-height: normal;
- min-height: auto;
- min-width: auto;
- padding: 0;
- }
-
- .button .icon:before {
- font-size: 14px;
- line-height: normal;
- }
-
-
- .button {
- span {
- display: flex;
- align-items: center;
- justify-content: center;
+ span {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
}
}
}
@@ -446,58 +387,37 @@
.keypad-container {
position: relative;
- font-size: 18px;
- line-height: 2em;
//flex: 0 1 196px;
- @media (min-height: 667px) {
- font-size: 24px;
- }
-
- @media(max-height: 480px) {
- font-size: 12px;
- }
-
@media (min-height: 667px) {
//flex: 0 1 224px;
}
- .sendmax {
- background: $v-off-black;
-
- .button {
- color: white;
- background: black;
- border: 1px solid $v-off-black;
- border-radius: 0;
- font-size: 0.8em;
- line-height: 2em;
- width: 100%;
-
- .available-funds-amount {
- color: #C9C9C9;
- }
-
- &:active {
- background-color: $v-dark-gray;
- }
- }
- }
-
.keypad {
text-align: center;
+ font-size: 18px;
font-weight: lighter;
position: absolute;
bottom: 0;
width: 100%;
- color: $v-text-primary-color;
-
+ color: $v-mid-gray;
+ @media (min-height: 667px) {
+ font-size: 24px;
+ }
.row {
padding: 0 !important;
margin: 0 !important;
}
+
+ .col {
+ line-height: 38px;
+
+ @media (min-height: 667px) {
+ line-height: 45px;
+ }
+ }
.row {
&:last-child {
@@ -531,37 +451,20 @@
.digit{
cursor: pointer;
- background-color: #000;
- border: 1px solid $v-off-black;
+ border-top: 1px solid $v-subtle-gray;
+ border-left: 1px solid $v-subtle-gray;
transition: all 0.1s ease;
&:active {
- background-color: $v-dark-gray;
+ background-color: $v-subtle-gray;
}
}
+ @media(max-height: 480px) {
+ font-size: 12px;
+
+ }
}
}
-
- .button-primary {
- background-color: $v-primary-color;
- border-radius: 0;
- font-weight: bold;
- }
-
- .button-primary[disabled] {
- background-color: $v-button-primary-disabled-bg;
- opacity: 1;
- }
- }
-
- .warning {
- color: $v-warning-color-2;
- }
- background: $v-background-under-card;
-
- ion-content {
- margin-bottom: constant(safe-area-inset-bottom); /* iOS 11.0 */
- margin-bottom: env(safe-area-inset-bottom); /* iOS 11.2 */
}
}
\ No newline at end of file
diff --git a/src/sass/views/confirm.scss b/src/sass/views/confirm.scss
index 47f61fd7b..9ceee92c4 100644
--- a/src/sass/views/confirm.scss
+++ b/src/sass/views/confirm.scss
@@ -1,5 +1,5 @@
#view-confirm {
- background-color: #494949;
+ background-color: #ffffff;
@extend .deflash-blue;
.item-note {
float: none;
@@ -30,11 +30,4 @@
.toggle {
cursor: pointer;
}
- ion-content {
- background-color: #ffffff;
- }
- slide-to-accept, slide-to-accept-success {
- margin-bottom: constant(safe-area-inset-bottom); /* iOS 11.0 */
- margin-bottom: env(safe-area-inset-bottom); /* iOS 11.2 */
- }
}
diff --git a/src/sass/views/custom-amount.scss b/src/sass/views/custom-amount.scss
index 17973101d..b9bf65459 100644
--- a/src/sass/views/custom-amount.scss
+++ b/src/sass/views/custom-amount.scss
@@ -26,10 +26,16 @@
height: 100%;
.qr-code {
text-align: center;
- margin-top: 6px;
- qrcode canvas {
- height: 30vh;
- max-height: 220px;
+ 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 {
@@ -85,34 +91,5 @@
.address-types {
text-align: center;
}
-
- .amount {
- margin-top: 20vh;
- margin-bottom: 4vh;
- @media(max-height: 800px) {
- margin-top: 12vh;
- margin-bottom: 6vh;
- }
- @media(max-height: 700px) {
- margin-top: 10vh;
- margin-bottom: 4vh;
- }
- @media(max-height: 600px) {
- margin-top: 6vh;
- margin-bottom: 2vh;
-
- }
- width: 100%;
- text-align: center;
- //padding-top: 30px;
- display: block;
- align-items: center;
- justify-content: center;
-
- &-alternative {
- line-height: 36px;
- }
- }
-
}
}
diff --git a/src/sass/views/shareApp.scss b/src/sass/views/feedback/complete.scss
similarity index 86%
rename from src/sass/views/shareApp.scss
rename to src/sass/views/feedback/complete.scss
index 9a0ed0698..bb2e75ea6 100644
--- a/src/sass/views/shareApp.scss
+++ b/src/sass/views/feedback/complete.scss
@@ -1,6 +1,6 @@
-#share-app {
+#complete {
background-color: #fff;
- .share-app-layout {
+ .complete-layout {
display: flex;
flex-direction: column;
height: 100%;
@@ -22,6 +22,17 @@
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;
diff --git a/src/sass/views/feedback/rateApp.scss b/src/sass/views/feedback/rateApp.scss
new file mode 100644
index 000000000..8a4cd2b8e
--- /dev/null
+++ b/src/sass/views/feedback/rateApp.scss
@@ -0,0 +1,38 @@
+#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
new file mode 100644
index 000000000..9d57643d6
--- /dev/null
+++ b/src/sass/views/feedback/rateCard.scss
@@ -0,0 +1,18 @@
+#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
new file mode 100644
index 000000000..807c4f8c5
--- /dev/null
+++ b/src/sass/views/feedback/send.scss
@@ -0,0 +1,54 @@
+#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/includes/clickToAccept.scss b/src/sass/views/includes/clickToAccept.scss
index cbc7a2c75..a38455ac3 100644
--- a/src/sass/views/includes/clickToAccept.scss
+++ b/src/sass/views/includes/clickToAccept.scss
@@ -8,7 +8,6 @@ click-to-accept {
.click-to-accept {
&__button.button.button-primary.button-standard {
- border-radius: 0;
height: 100%;
max-width: 9999px;
width: 100%;
diff --git a/src/sass/views/includes/slideToAccept.scss b/src/sass/views/includes/slideToAccept.scss
index 24775116d..75502c6a8 100644
--- a/src/sass/views/includes/slideToAccept.scss
+++ b/src/sass/views/includes/slideToAccept.scss
@@ -13,9 +13,6 @@ slide-to-accept {
}
.slide {
- .button {
- border-radius: 0;
- }
&__listener {
height: 100%;
width: 100%;
diff --git a/src/sass/views/includes/slideToAcceptSuccess.scss b/src/sass/views/includes/slideToAcceptSuccess.scss
index f64dd6154..bf6c5e269 100644
--- a/src/sass/views/includes/slideToAcceptSuccess.scss
+++ b/src/sass/views/includes/slideToAcceptSuccess.scss
@@ -12,6 +12,12 @@ slide-to-accept-success {
.slide-success {
$duration: 400ms;
+ &__windows-background {
+ background: $v-success-bg-color;
+ height: 100%;
+ width: 100%;
+ position: fixed;
+ }
&__background {
$start-radius: 5;
$scale-factor: 20;
@@ -34,11 +40,9 @@ slide-to-accept-success {
&__content {
position: relative;
z-index: 1;
- margin-top: -10vh;
+ margin-top: -20vh;
> img {
- width: 45vw;
- max-width: 166px;
margin-bottom: 1.8rem;
-webkit-transform: translateY(5rem);
transform: translateY(5rem);
@@ -55,7 +59,7 @@ slide-to-accept-success {
&__header {
color: #FFFFFF;
- font-size: 29px;
+ font-size: 26px;
-webkit-transform: translateY(5rem);
transform: translateY(5rem);
opacity: 0;
@@ -68,26 +72,6 @@ slide-to-accept-success {
opacity: 1;
}
}
- &__share {
- transition: transform $duration ease, opacity $duration ease;
- transition-delay: 600ms;
- opacity: 0;
- margin-top: 15vh;
- span {
- color: #FFF;
- font-size: 22px;
- height: 28px;
- }
- img {
- height: 28px;
- width: auto;
- vertical-align: bottom;
- margin-right: 4px;
- }
- &.reveal {
- opacity: 0.79;
- }
- }
}
&__footer {
@@ -102,9 +86,6 @@ slide-to-accept-success {
transition: transform $duration ease, opacity $duration ease;
transition-delay: 250ms;
- margin-bottom: constant(safe-area-inset-bottom); /* iOS 11.0 */
- margin-bottom: env(safe-area-inset-bottom); /* iOS 11.2 */
-
&.reveal {
-webkit-transform: translateY(0);
transform: translateY(0);
@@ -114,11 +95,11 @@ slide-to-accept-success {
&__btn {
display: block;
color: #FFFFFF;
- font-size: 22px;
+ font-size: 18px;
font-weight: 600;
letter-spacing: 2.86px;
- padding: 2rem 0 2.1rem;
- border-top: 1px solid rgba(255, 255, 255, 0.25);
+ padding: 1rem 0 1.1rem;
+ border-top: 1px solid rgba(255, 255, 255, .45);
cursor: pointer;
}
}
diff --git a/src/sass/views/includes/txp-details.scss b/src/sass/views/includes/txp-details.scss
index 240ee444b..c32faaacd 100644
--- a/src/sass/views/includes/txp-details.scss
+++ b/src/sass/views/includes/txp-details.scss
@@ -36,11 +36,6 @@
.amount-label{
line-height: 30px;
.amount{
- font-size: 16px;
- color: #9B9B9B;
- font-family: "Roboto-Light";
- }
- .alternative {
font-size: 38px;
margin-bottom: .5rem;
@@ -48,6 +43,11 @@
font-family: "Roboto-Light";
}
}
+ .alternative {
+ font-size: 16px;
+ font-family: "Roboto-Light";
+ color: #9B9B9B;
+ }
}
}
.item {
diff --git a/src/sass/views/includes/walletSelector.scss b/src/sass/views/includes/walletSelector.scss
index e987aaf9b..20753c309 100644
--- a/src/sass/views/includes/walletSelector.scss
+++ b/src/sass/views/includes/walletSelector.scss
@@ -12,11 +12,6 @@ wallet-selector {
font-weight: bold;
padding-bottom: 10px;
border-bottom: 1px solid #EFEFEF;
- .subtitle {
- color: $v-mid-gray;
- font-size: $font-size-small;
- font-weight: 300;
- }
.wallet-coin-logo {
vertical-align: middle;
margin-right: 5px;
diff --git a/src/sass/views/review.scss b/src/sass/views/review.scss
deleted file mode 100644
index d4f02f2f4..000000000
--- a/src/sass/views/review.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-#view-review {
-
- slide-to-accept, slide-to-accept-success {
- margin-bottom: constant(safe-area-inset-bottom); /* iOS 11.0 */
- margin-bottom: env(safe-area-inset-bottom); /* iOS 11.2 */
- }
-
- .fee-summary {
- bottom: 92px;
- bottom: calc(92px + constant(safe-area-inset-bottom)); /* iOS 11.0 */
- bottom: calc(92px + env(safe-area-inset-bottom)); /* iOS 11.2 */
- position: absolute;
- }
-
- .shapeshift-banner, .bitpay-banner, .egifter-banner {
- box-shadow: none;
- }
-
- .warning {
- color: $v-warning-color-2;
- }
-
-}
\ No newline at end of file
diff --git a/src/sass/views/shapeshift.scss b/src/sass/views/shapeshift.scss
deleted file mode 100644
index 5b63c0354..000000000
--- a/src/sass/views/shapeshift.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-#shapeshift {
- .swap-image {
- width: auto;
- max-width: 400px;
- max-height: 25vh;
- }
- .empty-case {
- @include empty-case();
- }
- .button-shapeshift {
- @extend %button-standard;
-
- @include button-style(#243F5D, #FFF, #606060, #FFF, #FFF);
- @include button-clear(#FFF);
- @include button-outline(#C1C1C1);
- border: 0px;
- @include button-shadow();
- }
-}
-.header.shapeshift {
- background: url(../img/shapeshiftbg.jpg) center center repeat #28394d;
- opacity: 0.99;
-}
\ No newline at end of file
diff --git a/src/sass/views/tab-home.scss b/src/sass/views/tab-home.scss
index aed37705e..4fb8edbc7 100644
--- a/src/sass/views/tab-home.scss
+++ b/src/sass/views/tab-home.scss
@@ -58,40 +58,6 @@
}
}
}
- &-banner {
- svg {
- margin: 40px auto 40px;
- }
- padding: 0;
- &__img {
- width: 100%;
- display: block;
- }
- }
- }
- .buttons {
- display: flex;
- flex-direction: row;
- justify-content: space-evenly;
- margin: 6px auto -12px;
- text-align: center;
- width: 100%;
- >.col {
- padding: 5px 10px;
- margin-bottom: 0;
- }
- .button {
- border: 2px solid;
- border-radius: 47px;
- padding: 8px 2px 8px 2px;
- text-align: center;
- width: 100%;
- max-width: 300px;
- font-size: 19px;
- font-weight: bolder;
- min-height: 0;
- line-height: 19px;
- }
}
.wallet-coin-logo {
vertical-align: middle;
@@ -113,15 +79,17 @@
.homeTip {
text-align: center;
& > .item-heading {
+ margin-top: 10px;
background: 0 none;
}
.item {
border-style: none;
}
- .title {
+ & > .title {
font-size: 20px;
font-weight: bold;
color: $v-dark-gray;
+ margin: 20px 10px;
}
& > .subtitle {
font-size: 1rem;
@@ -140,8 +108,6 @@
.icon.close-home-tip {
color: #666;
font-size: 38px;
- height: auto;
- top: 8px;
}
.tab-home {
&__logo {
@@ -173,11 +139,6 @@
font-weight: 700;
color: #444;
}
- .release-notes {
- white-space: pre;
- white-space: pre-line;
- text-align: left;
- }
.button {
width: 100%;
border: none;
@@ -195,13 +156,3 @@
top:11px;
}
}
-.popup-update {
- .popup-buttons {
- display: block;
- }
- .popup-buttons .button{
- display:block;
- min-width: 100% !important;
- margin-top: 4px;
- }
-}
\ No newline at end of file
diff --git a/src/sass/views/tab-receive.scss b/src/sass/views/tab-receive.scss
index 0b406254d..40dc79504 100644
--- a/src/sass/views/tab-receive.scss
+++ b/src/sass/views/tab-receive.scss
@@ -84,9 +84,6 @@
width: 100%;
}
.payment-received-container {
- svg {
- max-height: 400px;
- }
margin: 0 20px;
.payment-received-amount {
font-size: 1.8em;
diff --git a/src/sass/views/tab-send.scss b/src/sass/views/tab-send.scss
index 564e90d66..a969faedf 100644
--- a/src/sass/views/tab-send.scss
+++ b/src/sass/views/tab-send.scss
@@ -1,28 +1,12 @@
#tab-send {
@extend .deflash-blue;
-
- &-header{
- //height: 300px;
- width: 100%;
- }
- &-contacts {
- //height: calc(100vh - 300px - 50px - 44px); /* screen size - button container - bottom-tab-menu - header top */
- &.ios {
- //height: calc(100vh - 300px - 50px - 44px - 18px); // Remove the notification-bar height on iOS
- }
- //overflow: scroll;
- }
-
.input {
- width: 100%;
input {
width: 100%;
- height: 57px;
- background: #FFF;
- border: 1px #D9D9D9 solid;
- &::placeholder {
- color: #DCDCDC;
- }
+ height: auto;
+ }
+ &.item {
+ height: 55px;
}
i {
&.left {
@@ -35,22 +19,45 @@
}
}
}
-
- .send-wrapper {
- &:after {
- display: block;
- position: relative;
- height: 1px;
- background: #DEDEDE;
- bottom: 0;
- content: '';
- margin: 10px 6px 0px;
- }
- padding: 18px 9px 9px 9px;
+ .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: 30px;
&:focus::-webkit-input-placeholder {
@@ -58,120 +65,92 @@
}
}
}
- .buttons {
- margin: auto;
- margin-top: 18px;
- .button {
- &-clipboard-paste {
- margin-left: 0;
- .address {
- display: none;
- }
- .icon {
- background: url(../img/icon-clipboard-paste.svg);
- width: 15px;
- height: 19px;
- display: inline-block;
- margin-bottom: 4px;
- }
- &.contains-address, &.contains-content {
- .address {
- display: none;
- }
- background: #FAB915;
- color: #FFF !important;
- border: 0;
- @include button-shadow();
- .icon {
- background: url(../img/icon-clipboard-paste-white.svg);
- }
- &.contains-address {
- .address {
- display: inline;
- border: none;
- background-color: transparent;
- }
- .non-address {
- display: none;
- }
- }
- }
- }
- span {
- font-size: 14px;
- }
- img {
- height: 16px;
- width: auto;
- margin: 2px 0 4px;
- }
- min-height: 65px;
- line-height: 16px;
- margin-right: 0px;
- width: 95%;
- max-width: none;
- padding: 2px;
- &-qr {
- font-weight: bold;
- max-width: none;
- width: 100%;
- height: 95px;
- margin-top: 20px;
- img {
- vertical-align: middle;
- margin-right: 12px;
- width: 43px;
- height: 43px;
- }
- span {
- font-size: 19px;
- }
- }
- }
- }
}
+ .abs-v-center {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ }
.search-input {
background-color: transparent;
padding-left: 30px;
}
- .sendTip {
- @include empty-case();
+ .separator-left {
+ border-left: 1px solid #d9d9df;
+ padding-left: 10px;
+ height: 70%;
}
- .item-heading {
- line-height: 16px;
- font-size: 14px;
+ .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;
- .subtitle {
- color: #B5B2B2;
- font-size: 12px;
+ }
+ .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 {
- font-weight: 600;
- p {
- font-weight: normal;
- }
- &.item-icon-left {
- padding-left: 64px;
- }
color: #444;
- //border-top: none;
- padding-top: 0.6rem;
- padding-bottom: 0.6rem;;
+ border-top: none;
+ padding-top: 1.5rem;
+ padding-bottom: 1.5rem;
.big-icon-svg {
- left: 5px;
- & > .bg {
- width: 30px;
- height: 30px;
- box-shadow: none;
- }
+ left:5px;
+ & > .bg{
+ width:30px;
+ height:30px;
+ box-shadow: none;
+ }
}
&:before {
display: block;
position: absolute;
- width: 100%;
+ width: 80%;
height: 1px;
background: rgba(221, 221, 221, 0.3);
top: 0;
@@ -184,7 +163,7 @@
&.item-heading {
&:before {
top: 99%;
- width: 100%;
+ width:100%;
}
}
&:nth-child(2) {
@@ -197,40 +176,5 @@
}
}
}
- .scroll {
- height: 100%;
- }
-
- .card.contacts {
- margin: 4px 4px 16px 4px;
-
- border-radius: 6px;
- box-shadow: 0px 2px 1px 0 #C1C1C1;
- .gravatar {
- border-radius: 30px;
- height: 40px;
- width: 40px;
- }
- }
-
-
- ///* iPhone 5/SE and other small screen devices */
- @media only screen and (min-device-width : 320px) and (max-device-width : 568px) {
- .send-wrapper .buttons .button-qr {
- height: 60px;
- span {
- font-size: 16px;
- }
- }
- #tab-send-header {
- //height: 270px;
- }
- #tab-send-contacts {
- //height: calc(100vh - 270px - 50px - 44px); /* screen size - button container - bottom-tab-menu - header top */
- &.ios {
- //height: calc(100vh - 270px - 50px - 44px - 18px); // Remove the notification-bar height on iOS
- }
- }
- }
-
+ .scroll{height: 100%;}
}
diff --git a/src/sass/views/tabs.scss b/src/sass/views/tabs.scss
index b3c1a8dfb..b9a1cd724 100644
--- a/src/sass/views/tabs.scss
+++ b/src/sass/views/tabs.scss
@@ -43,11 +43,6 @@
.icon {
color: $v-mid-gray;
}
- .subtitle {
- color: $v-mid-gray;
- font-size: $font-size-small;
- font-weight: 300;
- }
}
}
-}
\ No newline at end of file
+}
diff --git a/src/sass/views/views.scss b/src/sass/views/views.scss
index 1f25b564a..37754970f 100644
--- a/src/sass/views/views.scss
+++ b/src/sass/views/views.scss
@@ -8,13 +8,11 @@
@import "tab-receive";
@import "tab-scan";
@import "tab-send";
-@import "wallet-origin-destination";
@import "tab-settings";
@import "wallet-colors";
@import "walletBalance";
@import "walletDetails";
@import "advancedSettings";
-@import "shapeshift";
@import "bitpayCard";
@import "bitpayCardIntro";
@import "buyandsell";
@@ -24,7 +22,10 @@
@import "wallet-backup-phrase";
@import "zero-state";
@import "onboarding/onboarding";
-@import "shareApp";
+@import "feedback/rateCard";
+@import "feedback/send";
+@import "feedback/complete";
+@import "feedback/rateApp";
@import "includes/actionSheet";
@import "export";
@import "import";
@@ -50,4 +51,3 @@
@import "includes/logOptions";
@import "includes/checkBar";
@import "cashScan";
-@import "review";
diff --git a/src/sass/views/wallet-origin-destination.scss b/src/sass/views/wallet-origin-destination.scss
deleted file mode 100644
index 1c6016862..000000000
--- a/src/sass/views/wallet-origin-destination.scss
+++ /dev/null
@@ -1,74 +0,0 @@
-#wallet-origin-destination {
- .header--request {
- padding: 30px 24px;
- width: 100%;
- height: 139px;
- background-color: #fff;
- &__title {
- width: 46px;
- height: 20px;
- font-size: 16px;
- font-weight: 600;
- letter-spacing: -0.4px;
- color: #000000;
- }
- &__amount {
- font-size: 29px;
- font-weight: 600;
- letter-spacing: -0.7px;
- color: #000000;
- margin: 11px 0 2px;
- }
- &__amount-alt {
- opacity: 0.45;
- font-size: 16px;
- font-weight: 600;
- letter-spacing: -0.4px;
- color: #000000;
- }
- }
- .wallets-header {
- margin: 20px 14px 0px;
-
- .title {
- font-size: 16px;
- font-weight: bold;
- color: $v-dark-gray;
- margin-bottom: -12px;
- }
- }
- .card {
- font-size: 12px;
- margin: 20px 14px 0px;
-
- .item-heading {
- .subtitle {
- font-size: 12px;
- }
- font-weight: 600;
-
- }
-
- &-insufficient {
- .wallet {
- opacity: 0.4;
-
- }
- .item-heading {
- font-size: 12px;
- >div {
- display: inline-block;
- vertical-align: text-bottom;
- }
- }
- &__dot {
- display: inline-block;
- width: 16px;
- height: 16px;
- background-color: #ec5959;
- border-radius: 8px;
- margin: 2px 6px 2px 2px;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/sass/views/walletDetails.scss b/src/sass/views/walletDetails.scss
index e8b64ef45..1a33de7b1 100644
--- a/src/sass/views/walletDetails.scss
+++ b/src/sass/views/walletDetails.scss
@@ -1,4 +1,3 @@
-$wallet-details-collapse-transition: all 0.25s ease-in-out;
.wallet-details {
&__tx-amount {
font-size: 16px;
@@ -132,30 +131,14 @@ $wallet-details-collapse-transition: all 0.25s ease-in-out;
.bp-content {
position: relative;
height: 100%;
- height: calc(100% - env(safe-area-inset-bottom) * 2);
&.status-bar {
margin-top: 20px;
- margin-top: env(safe-area-inset-top);
- }
- &.collapse {
- ion-content {
- margin-top: 40px;
- }
- .amount {
- &__scale, &__error {
- -webkit-transform: scale3d(0.5, 0.5, 0.5) translateY(0px);
- transform: scale3d(0.5, 0.5, 0.5) translateY(0px);
- }
- }
- .amount-alternative, .send-receive-buttons, .wallet-details-wallet-info {
- opacity: 0;
- }
}
}
.bar-header {
border: 0;
- background: rgb(238, 182, 64);
+ background: none;
.title, .button {
color: #fff;
}
@@ -167,16 +150,13 @@ $wallet-details-collapse-transition: all 0.25s ease-in-out;
background-color: inherit !important;
}
ion-content {
+
+ &.collapsible {
+ margin-top: 210px;
+ }
+
padding-top: 0;
top: 0;
- transition: $wallet-details-collapse-transition;
-
- margin-top: 185px;
- @media only screen and (max-height:500px) {
- margin-top: 165px;
- }
- margin-bottom: 16px;
-
.scroll {
background: rgb(248, 248, 249);
min-height: 300px;
@@ -207,53 +187,20 @@ $wallet-details-collapse-transition: all 0.25s ease-in-out;
transform: translateY(100px);
}
}
-
- .send-receive-buttons {
- display: flex;
- flex-direction: row;
- justify-content: space-evenly;
- width: 100%;
- position: absolute;
- bottom: 20px;
- transition: $wallet-details-collapse-transition;
- >.col {
- padding: 5px 10px;
- margin-bottom: 0;
- }
- .button {
- border: 2px solid;
- border-radius: 47px;
- padding: 6px 2px 6px 2px;
- text-align: center;
- width: 100%;
- max-width: 300px;
- font-size: 19px;
- font-weight: bolder;
- min-height: 0;
- line-height: 19px;
- }
- }
}
.amount {
- align-items: center;
- color: #fff;
- display: block;
-
- height: 230px;
- @media only screen and (max-height:500px) {
- height: 210px;
- }
-
- justify-content: center;
- padding-top: 40px;
- text-align: center;
- transition: $wallet-details-collapse-transition;
width: 100%;
+ text-align: center;
+ color: #fff;
+ height: 210px;
+ padding-top: 40px;
+ display: block;
+ align-items: center;
+ justify-content: center;
&__balance {
-webkit-transform: scale3d(1, 1, 1) translateY(45px);
transform: scale3d(1, 1, 1) translateY(45px);
- transition: $wallet-details-collapse-transition;
}
&__updating {
@@ -263,7 +210,6 @@ $wallet-details-collapse-transition: all 0.25s ease-in-out;
&-alternative {
line-height: 36px;
- transition: $wallet-details-collapse-transition;
}
&__button-balance {
@@ -279,14 +225,12 @@ $wallet-details-collapse-transition: all 0.25s ease-in-out;
&__error {
font-size: 14px;
padding: 35px 20px;
- opacity: 1;
}
}
.no-alternative {
padding-top: 45px;
}
-
.item.item-footer {
font-weight: lighter;
}
@@ -366,6 +310,4 @@ a.item {
.loading-wallet svg {
margin-top: 0;
- width: 16px;
- height: 16px;
}
\ No newline at end of file
diff --git a/src/shim/shim.js b/src/shim/shim.js
deleted file mode 100644
index 6f9abc0ae..000000000
--- a/src/shim/shim.js
+++ /dev/null
@@ -1,63 +0,0 @@
-//---------------------------------------------------------------------
-//
-// Add components what are missing in old JavaScript Engine
-//
-//---------------------------------------------------------------------
-
-if (!ArrayBuffer['isView']) {
- ArrayBuffer.isView = function(a) {
- return a !== null && typeof(a) === "object" && a['buffer'] instanceof ArrayBuffer;
- };
-}
-
-// https://tc39.github.io/ecma262/#sec-array.prototype.includes
-if (!Array.prototype.includes) {
- Object.defineProperty(Array.prototype, 'includes', {
- value: function(searchElement, fromIndex) {
-
- if (this == null) {
- throw new TypeError('"this" is null or not defined');
- }
-
- // 1. Let O be ? ToObject(this value).
- var o = Object(this);
-
- // 2. Let len be ? ToLength(? Get(O, "length")).
- var len = o.length >>> 0;
-
- // 3. If len is 0, return false.
- if (len === 0) {
- return false;
- }
-
- // 4. Let n be ? ToInteger(fromIndex).
- // (If fromIndex is undefined, this step produces the value 0.)
- var n = fromIndex | 0;
-
- // 5. If n ≥ 0, then
- // a. Let k be n.
- // 6. Else n < 0,
- // a. Let k be len + n.
- // b. If k < 0, let k be 0.
- var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
- function sameValueZero(x, y) {
- return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));
- }
-
- // 7. Repeat, while k < len
- while (k < len) {
- // a. Let elementK be the result of ? Get(O, ! ToString(k)).
- // b. If SameValueZero(searchElement, elementK) is true, return true.
- if (sameValueZero(o[k], searchElement)) {
- return true;
- }
- // c. Increase k by 1.
- k++;
- }
-
- // 8. Return false
- return false;
- }
- });
-}
\ No newline at end of file
diff --git a/test/karma.conf.js b/test/karma.conf.js
deleted file mode 100644
index 22efcd1c8..000000000
--- a/test/karma.conf.js
+++ /dev/null
@@ -1,93 +0,0 @@
-// Karma configuration
-// Generated on Tue Jun 05 2018 16:39:51 GMT+1200 (NZST)
-
-module.exports = function(config) {
- config.set({
-
- // base path that will be used to resolve all patterns (eg. files, exclude)
- basePath: '..',
-
-
- // frameworks to use
- // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
- frameworks: ['jasmine'],
-
-
- // list of files / patterns to load in the browser
- files: [
- 'node_modules/angular/angular.js',
-
- 'bitanalytics/bitanalytics.js',
-
- // From Gruntfile.js
- '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',
-
- 'bower_components/ionic/release/js/ionic.bundle.min.js',
- 'bitcoin-cash-js/bitcoin-cash-js.js',
-
- 'src/js/**/*.js'
- ],
-
-
- // list of files / patterns to exclude
- exclude: [
- ],
-
-
- // preprocess matching files before serving them to the browser
- // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
- preprocessors: {
- },
-
-
- // test results reporter to use
- // possible values: 'dots', 'progress'
- // available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: ['progress'],
-
-
- // web server port
- port: 9876,
-
-
- // enable / disable colors in the output (reporters and logs)
- colors: true,
-
-
- // level of logging
- // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
- logLevel: config.LOG_INFO,
-
-
- // enable / disable watching file and executing tests whenever any file changes
- autoWatch: false,
-
-
- // start these browsers
- // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
- browsers: ['Chrome'],
-
-
- // Continuous Integration mode
- // if true, Karma captures browsers, runs the tests and exits
- singleRun: false,
-
- // Concurrency level
- // how many browser should be started simultaneous
- concurrency: Infinity
- })
-}
diff --git a/util/buildAppConfig.js b/util/buildAppConfig.js
index eb11bc0fe..55012a4b2 100755
--- a/util/buildAppConfig.js
+++ b/util/buildAppConfig.js
@@ -26,7 +26,6 @@ console.log('v' + pkg.version + ' #' + commitHash + ' App:' + appConfig.name);
var content = 'window.version="' + pkg.version + '";';
content = content + '\nwindow.commitHash="' + commitHash + '";';
-content = content + '\nwindow.fullVersion="' + pkg.fullVersion + '";';
content = content + '\nwindow.appConfig=' + JSON.stringify(appConfig) + ';';
fs.writeFileSync("./src/js/appConfig.js", content);
diff --git a/www/css/bitcoin.com.css b/www/css/bitcoin.com.css
index f0d7eab30..9b69005c4 100644
--- a/www/css/bitcoin.com.css
+++ b/www/css/bitcoin.com.css
@@ -318,33 +318,5 @@ div.slide-success__background.fill-screen {
display: block;
float: left;
max-height: 100%;
- max-width: 100%;
-}
-
-.bitpay-banner {
- background: #1A3A8B;
- padding: 10px;
- box-shadow: 0px 5px 10px 0px #cccccc;
- height: 5em;
-}
-
-.bitpay-logo {
- display: block;
- max-height: 100%;
- width: 100%;
- height: 4em;
-}
-
-.egifter-banner {
- background: #066EAA;
- padding: 10px;
- box-shadow: 0px 5px 10px 0px #cccccc;
- height: 5em;
- text-align: center;
-}
-
-.egifter-logo {
- max-height: 100%;
- max-width: 100%;
- height: 4em;
+ max-width: 100%;
}
diff --git a/www/css/main.css b/www/css/main.css
index 83c50fe17..4dcabe37c 100644
--- a/www/css/main.css
+++ b/www/css/main.css
@@ -9970,7 +9970,7 @@ ion-nav-bar.hide {
.card {
margin: 20px 14px; }
-ion-view.deflash-blue:before, ion-view#view-amount:before, ion-view#view-confirm:before, ion-view#copayers-invitation:before, ion-view#tab-home:before, ion-view#tab-receive:before, ion-view#tab-send:before, ion-view.settings:before, ion-view#bitpayCard:before, ion-view#bitpayCard-intro:before, ion-view#view-address-book:before, ion-view#addresses:before, ion-view#choose-fee-level:before, ion-view#txp-details:before, ion-view#coinbase:before, ion-view#glidera:before, ion-view#amazon:before, ion-view#mercadolibre:before, ion-view#custom-amount:before {
+ion-view.deflash-blue:before, ion-view#view-amount:before, ion-view#view-confirm:before, ion-view#copayers-invitation:before, ion-view#tab-home:before, ion-view#tab-receive:before, ion-view#tab-send:before, ion-view.settings:before, ion-view#bitpayCard:before, ion-view#bitpayCard-intro:before, ion-view#view-address-book:before, ion-view#addresses:before, ion-view#send-feedback:before, ion-view#choose-fee-level:before, ion-view#txp-details:before, ion-view#coinbase:before, ion-view#glidera:before, ion-view#amazon:before, ion-view#mercadolibre:before, ion-view#custom-amount:before {
content: " ";
display: block;
position: absolute;
@@ -9980,7 +9980,7 @@ ion-view.deflash-blue:before, ion-view#view-amount:before, ion-view#view-confirm
height: 44px;
background-color: #fab915; }
-.platform-ios.platform-cordova:not(.fullscreen) ion-view.deflash-blue:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#view-amount:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#view-confirm:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#copayers-invitation:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#tab-home:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#tab-receive:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#tab-send:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view.settings:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#bitpayCard:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#bitpayCard-intro:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#view-address-book:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#addresses:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#choose-fee-level:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#txp-details:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#coinbase:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#glidera:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#amazon:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#mercadolibre:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#custom-amount:before {
+.platform-ios.platform-cordova:not(.fullscreen) ion-view.deflash-blue:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#view-amount:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#view-confirm:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#copayers-invitation:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#tab-home:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#tab-receive:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#tab-send:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view.settings:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#bitpayCard:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#bitpayCard-intro:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#view-address-book:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#addresses:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#send-feedback:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#choose-fee-level:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#txp-details:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#coinbase:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#glidera:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#amazon:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#mercadolibre:before, .platform-ios.platform-cordova:not(.fullscreen) ion-view#custom-amount:before {
height: 64px; }
.just-a-hint, .icon.bp-arrow-right, .icon.bp-arrow-down, .icon.bp-arrow-up {
@@ -10005,47 +10005,12 @@ ion-view.deflash-blue:before, ion-view#view-amount:before, ion-view#view-confirm
border-radius: 3px;
width: 40px;
height: 40px;
- box-shadow: 0px 0px 9px 0px rgba(0, 0, 0, 0.3);
+ box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.3);
background-repeat: no-repeat;
background-clip: padding-box;
background-size: 103%; }
.big-icon-svg > .bg.green {
background: #01d1a2; }
- .big-icon-svg.theme-circle > .bg {
- border-radius: 50%;
- background-size: 85%;
- background-position: 50%;
- background-color: #FFFFFF;
- box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.3);
- border: 1px solid #faba13;
- text-align: center;
- font-size: 30px; }
- .big-icon-svg.theme-circle > .bg:before {
- vertical-align: middle; }
- .big-icon-svg.theme-circle > .bg.icon-shapeshift {
- background-color: #263e5c; }
- .big-icon-svg.theme-circle > .bg.icon-buy-bitcoin2 {
- border: 1px solid #faba13; }
- .big-icon-svg.theme-circle > .bg.icon-reddit-white {
- background-image: url("../img/icon-reddit-white.svg");
- background-color: #ff4500;
- background-size: 60%; }
- .big-icon-svg.theme-circle > .bg.icon-twitter-white {
- background-image: url("../img/icon-twitter-white.svg");
- background-color: #1da1f2;
- background-size: 60%; }
- .big-icon-svg.theme-circle > .bg.icon-faucet {
- background-image: url("../img/icon-faucet.svg");
- background-size: 70%; }
- .big-icon-svg.theme-circle > .bg.icon-wallet {
- background-color: #FAB915;
- background-image: url("../img/icon-wallet.svg");
- border: none;
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3) inset; }
- .big-icon-svg.theme-circle-services > .bg {
- border: 1px solid #191919; }
- .big-icon-svg.theme-circle-community > .bg {
- border: 1px solid #FFFFFF; }
.wallet-item {
padding: 1rem 0 2rem 0; }
@@ -10076,14 +10041,12 @@ ion-view.deflash-blue:before, ion-view#view-amount:before, ion-view#view-confirm
.loading .spinner svg {
margin-top: 0; }
-.button.button-primary.button-standard, .button.button-secondary.button-standard, .button.button-light.button-standard, .button.button-white.button-standard, .button.button-green.button-standard, .button.button-assertive.button-standard,
+.button.button-primary.button-standard, .button.button-secondary.button-standard, .button.button-light.button-standard, .button.button-assertive.button-standard,
.onboarding .button.button-primary.button-standard,
.onboarding .button.button-secondary.button-standard,
.onboarding .button.button-light.button-standard,
-.onboarding .button.button-white.button-standard,
-.onboarding .button.button-green.button-standard,
-.onboarding .button.button-assertive.button-standard, #shapeshift .button-shapeshift {
- width: 90%;
+.onboarding .button.button-assertive.button-standard {
+ width: 85%;
max-width: 300px;
margin-left: auto;
margin-right: auto;
@@ -10125,12 +10088,10 @@ ion-view.deflash-blue:before, ion-view#view-amount:before, ion-view#view-confirm
box-shadow: none;
color: #fff; }
-.button.button-primary.button-standard + .button-standard, .button.button-secondary.button-standard + .button-standard, .button.button-light.button-standard + .button-standard, .button.button-white.button-standard + .button-standard, .button.button-green.button-standard + .button-standard, .button.button-assertive.button-standard + .button-standard,
+.button.button-primary.button-standard + .button-standard, .button.button-secondary.button-standard + .button-standard, .button.button-light.button-standard + .button-standard, .button.button-assertive.button-standard + .button-standard,
.onboarding .button.button-primary.button-standard + .button-standard,
.onboarding .button.button-secondary.button-standard + .button-standard,
.onboarding .button.button-light.button-standard + .button-standard,
-.onboarding .button.button-white.button-standard + .button-standard,
-.onboarding .button.button-green.button-standard + .button-standard,
.onboarding .button.button-assertive.button-standard + .button-standard {
margin-top: 1rem; }
@@ -10192,108 +10153,8 @@ ion-view.deflash-blue:before, ion-view#view-amount:before, ion-view#view-confirm
font-size: 0.7em !important;
display: inline !important; }
-.button {
- border-radius: 6px; }
- .button.button-full {
- border-radius: 0;
- display: block; }
- .button-green {
- border-color: #FFF;
- background-color: #719561;
- color: #FFF;
- border: 0px;
- box-shadow: 0 2px 11px 0 #C1C1C1; }
- .button-green:hover {
- color: #FFF;
- text-decoration: none; }
- .button-green.active, .button-green.activated {
- border-color: #FFF;
- background-color: #606060; }
- .button-green.button-clear {
- border-color: transparent;
- background: none;
- box-shadow: none;
- color: #FFF; }
- .button-green.button-icon {
- border-color: transparent;
- background: none; }
- .button-green.button-outline {
- border-color: #C1C1C1;
- background: transparent;
- color: #C1C1C1; }
- .button-green.button-outline.active, .button-green.button-outline.activated {
- background-color: #C1C1C1;
- box-shadow: none;
- color: #fff; }
- .button-white {
- border-color: #C1C1C1;
- background-color: #FFF;
- color: #606060;
- box-shadow: 0 2px 11px 0 #C1C1C1; }
- .button-white:hover {
- color: #606060;
- text-decoration: none; }
- .button-white.active, .button-white.activated {
- border-color: #FFF;
- background-color: #C1C1C1; }
- .button-white.button-clear {
- border-color: transparent;
- background: none;
- box-shadow: none;
- color: #FFF; }
- .button-white.button-icon {
- border-color: transparent;
- background: none; }
- .button-white.button-outline {
- border-color: #C1C1C1;
- background: transparent;
- color: #C1C1C1; }
- .button-white.button-outline.active, .button-white.button-outline.activated {
- background-color: #C1C1C1;
- box-shadow: none;
- color: #fff; }
- .button-white.activated {
- color: #FFF; }
- .button-white-outline {
- border-color: #FFFFFF;
- background-color: transparent;
- color: #FFFFFF;
- background: none;
- box-shadow: none; }
- .button-white-outline:hover {
- color: #FFFFFF;
- text-decoration: none; }
- .button-white-outline.active, .button-white-outline.activated {
- border-color: #FFFFFF;
- background-color: #FFFFFF; }
- .button-white-outline.button-outline {
- border-color: #FFFFFF;
- background: transparent;
- color: #FFFFFF; }
- .button-white-outline.button-outline.active, .button-white-outline.button-outline.activated {
- background-color: #FFFFFF;
- box-shadow: none;
- color: #fff; }
- .button-grey-outline {
- border-color: #727272;
- background-color: transparent;
- color: #727272;
- background: none;
- box-shadow: none; }
- .button-grey-outline:hover {
- color: #727272;
- text-decoration: none; }
- .button-grey-outline.active, .button-grey-outline.activated {
- border-color: #727272;
- background-color: #FAFAFA; }
- .button-grey-outline.button-outline {
- border-color: #727272;
- background: transparent;
- color: #727272; }
- .button-grey-outline.button-outline.active, .button-grey-outline.button-outline.activated {
- background-color: #727272;
- box-shadow: none;
- color: #fff; }
+.button.button-full {
+ display: block; }
.button-clear {
background: none !important; }
@@ -10306,22 +10167,6 @@ textarea.d-block {
display: block;
width: 100%; }
-qrcode {
- position: relative; }
- qrcode.qr-overlay::before {
- content: "";
- background-size: 100% 100%;
- display: block;
- left: calc(50% - 22px);
- margin-top: calc(50% - 22px);
- width: 44px;
- height: 44px;
- position: absolute; }
- qrcode.qr-overlay--bch::before {
- background-image: url("../img/qr-overlay-bch.png"); }
- qrcode.qr-overlay--btc::before {
- background-image: url("../img/qr-overlay-btc.png"); }
-
.center-block {
float: none;
margin: 0 auto; }
@@ -10333,15 +10178,6 @@ qrcode {
top: 50%;
left: 50%; }
-.third-party-notice {
- font-size: 12px;
- margin: 0px 14px;
- font-weight: 600;
- color: #6F6F70; }
- @media (min-width: 768px) {
- .third-party-notice {
- text-align: center; } }
-
.tabs .tab-item .icon {
background-repeat: no-repeat;
background-position: center;
@@ -10371,10 +10207,6 @@ qrcode {
font-weight: 700; }
#tab-home .card > .item-heading .icon, #tab-home .list > .item-heading .icon, #tab-send .card > .item-heading .icon, #tab-send .list > .item-heading .icon {
color: #667; }
- #tab-home .card > .item-heading .subtitle, #tab-home .list > .item-heading .subtitle, #tab-send .card > .item-heading .subtitle, #tab-send .list > .item-heading .subtitle {
- color: #667;
- font-size: 12px;
- font-weight: 300; }
#view-add .item {
margin-bottom: 10px;
@@ -10398,401 +10230,344 @@ qrcode {
#view-add .bg.join {
padding: 10px; }
-#view-amount {
- background: #f2f2f2; }
- #view-amount .recipient-label {
- font-size: 14px;
- padding-bottom: 0;
- color: #667; }
- #view-amount .item-no-bottom-border + .item {
- border-top: 0; }
- #view-amount .icon-bitpay-card {
- background-image: url("../img/icon-bitpay.svg"); }
- #view-amount .icon-amazon {
- background-image: url("../img/icon-amazon.svg"); }
- @media (max-width: 480px) {
- #view-amount .bitcoin-address {
- font-size: 13px;
- padding-left: 48px; }
- #view-amount .bitcoin-address .icon {
- left: 8px;
- font-size: 24px; }
- #view-amount .bitcoin-address .big-icon-svg {
- left: 5px; }
- #view-amount .bitcoin-address .big-icon-svg > .bg {
- width: 30px;
- height: 30px;
- box-shadow: none; } }
- @media (max-width: 320px) {
- #view-amount .bitcoin-address > span:last-child {
- margin-left: -2px; } }
- #view-amount .send-gravatar {
- left: 11px;
- position: absolute;
- top: 10px; }
- #view-amount .amount span input {
- display: inline;
- width: 120px; }
- #view-amount .amount-pane-recipient {
- position: absolute;
- top: 95px;
- bottom: 0;
- width: 100%;
- background-color: #fff;
- padding: 0 16px; }
- #view-amount .amount-pane-recipient .amount-bar {
- padding: 24px 0;
- font-size: 18px; }
- @media (max-height: 480px) {
- #view-amount .amount-pane-recipient .amount-bar {
- padding: 0px; } }
- @media (max-width: 320px) {
- #view-amount .amount-pane-recipient .amount-bar {
- padding: 0px; } }
- #view-amount .amount-pane-recipient .amount-bar .title {
- float: left;
- padding-top: 10px;
- color: #445;
- font-weight: bold; }
- @media (max-height: 480px) {
- #view-amount .amount-pane-recipient .amount-bar .title {
- padding: 0px; } }
- @media (max-height: 480px) {
- #view-amount .amount-pane-recipient .amount-bar {
- padding-top: 3px; } }
- #view-amount .amount-pane-recipient .amount {
- display: flex;
- flex-direction: column;
- justify-content: center;
- flex-grow: 1;
- position: absolute;
- bottom: 254px;
- top: 66px; }
- #view-amount .amount-pane-recipient .amount .light {
- color: #9b9bab; }
- @media (max-height: 480px) {
- #view-amount .amount-pane-recipient .amount {
- top: 45px; } }
- @media (max-width: 320px) {
- #view-amount .amount-pane-recipient .amount {
- bottom: 276px;
- top: 60px; }
- #view-amount .amount-pane-recipient .amount > div {
- display: inline-block; }
- #view-amount .amount-pane-recipient .amount > div:first-child {
- display: inherit; } }
- #view-amount .amount-pane-no-recipient {
- position: absolute;
- top: 0;
- bottom: 0;
- width: 100%;
- background-color: #fff;
- padding: 0 16px; }
- #view-amount .amount-pane-no-recipient .amount-bar {
- padding: 24px 0;
- font-size: 18px; }
- #view-amount .amount-pane-no-recipient .amount-bar .title {
- padding-top: 10px;
- color: #445;
- font-weight: bold; }
- #view-amount .amount-pane-no-recipient .amount-bar .title .limits {
- margin-top: 10px;
- color: #9b9bab;
- font-size: 12px; }
- #view-amount .amount-pane-no-recipient .amount-bar .title .select {
- margin: 10px 1px; }
- #view-amount .amount-pane-no-recipient .amount {
- display: flex;
- flex-direction: column;
- justify-content: center;
- flex-grow: 1;
- position: absolute;
- bottom: 254px;
- top: 66px; }
- #view-amount .amount-pane-no-recipient .amount .light {
- color: #9b9bab; }
- #view-amount .amount {
- padding-top: 10px;
- padding-bottom: 10px; }
- #view-amount .amount .icon-toggle {
- font-size: 1.2em;
- width: auto;
- margin: 0.8em auto;
- border: 1px solid #f2f2f2;
+#view-amount .recipient-label {
+ font-size: 14px;
+ padding-bottom: 0;
+ color: #667; }
+
+#view-amount .item-no-bottom-border + .item {
+ border-top: 0; }
+
+#view-amount .icon-bitpay-card {
+ background-image: url("../img/icon-bitpay.svg"); }
+
+#view-amount .icon-amazon {
+ background-image: url("../img/icon-amazon.svg"); }
+
+@media (max-width: 480px) {
+ #view-amount .bitcoin-address {
+ font-size: 13px;
+ padding-left: 48px; }
+ #view-amount .bitcoin-address .icon {
+ left: 8px;
+ font-size: 24px; }
+ #view-amount .bitcoin-address .big-icon-svg {
+ left: 5px; }
+ #view-amount .bitcoin-address .big-icon-svg > .bg {
+ width: 30px;
+ height: 30px;
+ box-shadow: none; } }
+
+@media (max-width: 320px) {
+ #view-amount .bitcoin-address > span:last-child {
+ margin-left: -2px; } }
+
+#view-amount .send-gravatar {
+ left: 11px;
+ position: absolute;
+ top: 10px; }
+
+#view-amount .amount span input {
+ display: inline;
+ width: 120px; }
+
+#view-amount .amount-pane-recipient {
+ position: absolute;
+ top: 95px;
+ bottom: 0;
+ width: 100%;
+ background-color: #fff;
+ padding: 0 16px; }
+ #view-amount .amount-pane-recipient .amount-bar {
+ padding: 24px 0;
+ font-size: 18px; }
+ @media (max-height: 480px) {
+ #view-amount .amount-pane-recipient .amount-bar {
+ padding: 0px; } }
+ @media (max-width: 320px) {
+ #view-amount .amount-pane-recipient .amount-bar {
+ padding: 0px; } }
+ #view-amount .amount-pane-recipient .amount-bar .title {
+ float: left;
+ padding-top: 10px;
color: #445;
- border-radius: 3px;
- padding: 0 10px;
- cursor: pointer; }
- @media (max-height: 280px) {
- #view-amount .amount .icon-toggle {
- margin: 0.1em auto; } }
- #view-amount .amount__editable--minimize {
- font-size: 22px; }
- #view-amount .amount__editable--standard {
- font-size: 42px; }
- @media (max-height: 480px) {
- #view-amount .amount__editable--standard {
- font-size: 26px;
- padding-top: 10px; } }
- #view-amount .amount__editable--placeholder {
- color: #9b9bab; }
- #view-amount .amount__number {
- color: #445; }
- #view-amount .amount__currency-toggle {
- border: 1px solid #f2f2f2;
- color: #445;
- border-radius: 3px;
- padding: 0 10px;
- cursor: pointer;
- font-size: .6em;
- position: relative;
- top: -3px;
- line-height: 1; }
- @media (max-width: 320px) {
- #view-amount .amount__currency-toggle {
- line-height: 30px;
- height: 30px; } }
- #view-amount .amount__currency-toggle-mobile {
- border: 1px solid #f2f2f2;
- color: #445;
- border-radius: 3px;
- cursor: pointer;
- position: relative;
- line-height: 1; }
- @media (max-width: 320px) {
- #view-amount .amount__currency-toggle-mobile {
- line-height: 30px;
- height: 30px; } }
- #view-amount .amount__results--minimize {
- font-size: 12px; }
- #view-amount .amount__results--standard {
- font-size: 18px;
- padding: 10px 0; }
- #view-amount .amount__results--placeholder {
- color: #9b9bab; }
- #view-amount .amount__result {
- color: #9b9bab;
- font-size: .9em;
- line-height: 1; }
- @media (max-height: 480px) {
- #view-amount .amount__result {
- margin-bottom: 0; } }
- #view-amount .amount__result-equiv {
- color: #667;
- font-size: 1.2em; }
- @media (max-height: 480px) {
- #view-amount .amount__result-equiv {
- margin-top: 0;
- font-size: 16px; } }
- #view-amount .scroll-content {
- display: flex;
- flex-direction: column; }
- #view-amount .scroll-content .send-amount {
- flex: 1 1 auto;
- display: flex;
- flex-direction: column;
- justify-content: center; }
- #view-amount .scroll-content .send-amount .send-amount-header-footer {
- flex: 1 1 auto;
- min-height: 20px; }
- #view-amount .scroll-content .send-amount .send-amount-header-footer .warning {
- font-weight: bold;
- font-size: 12px;
- padding: 0 6px 6px 6px;
- text-align: center; }
- #view-amount .scroll-content .send-amount .send-amount-header-footer__max {
- float: right; }
- #view-amount .scroll-content .send-amount .send-amount-tool {
- flex: 0 1 auto; }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input {
- text-align: center;
- position: relative;
- padding: 10px 30px; }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .text-selectable {
- -webkit-user-select: text;
- -moz-user-select: text;
- -ms-user-select: text;
- user-select: text; }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount {
- color: #333;
- font-weight: bold; }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
- font-size: 1.8em; }
- @media (min-width: 375px) {
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
- font-size: 2.1em; } }
- @media (min-width: 414px) {
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
- font-size: 2.4em; } }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .primary-amount-display {
- font-size: 1.6em; }
- @media (min-width: 375px) {
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .primary-amount-display {
- font-size: 1.8em; } }
- @media (min-width: 414px) {
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .primary-amount-display {
- font-size: 2em; } }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .primary-amount-display {
- font-size: 1.2em; }
- @media (min-width: 375px) {
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .primary-amount-display {
- font-size: 1.3em; } }
- @media (min-width: 414px) {
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .primary-amount-display {
- font-size: 1.4em; } }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount input {
- border: 0;
- padding: 0;
- white-space: normal;
- background: none;
- line-height: 1;
- box-sizing: content-box;
- display: inline-block;
- vertical-align: middle;
- margin: 0;
- height: 1em;
- margin-right: 5px;
- font-family: 'ProximaNova'; }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .unit,
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
- display: inline-block;
- vertical-align: middle;
- line-height: 1em; }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
- margin-right: 5px;
- word-break: break-all;
- width: 100%; }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .alternative-amount {
- color: #6F6F70; }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .switch-currencies {
- position: absolute;
- right: 0;
- top: 50%;
- transform: translate(0, -50%);
- padding: 15px; }
- #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .switch-currencies img {
- width: 18px; }
- #view-amount .scroll-content .send-amount-extras {
- display: flex;
- flex: 0 0 auto;
- /* So that if only one item is present, it appears on the right. */
- flex-direction: row-reverse;
- font-size: 12px;
- align-items: center;
- justify-content: space-between;
- margin: 0 14px; }
- #view-amount .scroll-content .send-amount-extras .available-funds {
- color: #6F6F70;
- text-align: left; }
- #view-amount .scroll-content .send-amount-extras .change-currency {
- text-align: right; }
- #view-amount .scroll-content .send-amount-extras .warning {
- color: #b7664d; }
- #view-amount .scroll-content .send-amount-extras .extra {
- flex: 1;
- line-height: normal; }
- #view-amount .scroll-content .send-amount-extras .extra .button {
- background: none;
- border: none;
- border-radius: 0;
- color: #000;
- font-family: 'ProximaNova';
- font-size: 14px;
- line-height: normal;
- min-height: auto;
- min-width: auto;
- padding: 0; }
- #view-amount .scroll-content .send-amount-extras .extra .button .icon:before {
- font-size: 14px;
- line-height: normal; }
- #view-amount .scroll-content .send-amount-extras .extra .button span {
- display: flex;
- align-items: center;
- justify-content: center; }
- #view-amount .scroll-content .button.no-margin {
- margin: 0; }
- #view-amount .scroll-content .notification-warning {
- display: block;
- padding: .75rem 1.25rem;
- color: #856404;
- background-color: #fff3cd;
- border: 1px solid #ffeeba;
- line-height: 1.4em;
- margin-bottom: 20px; }
- #view-amount .scroll-content .keypad-container {
- position: relative;
- font-size: 18px;
- line-height: 2em; }
- @media (min-height: 667px) {
- #view-amount .scroll-content .keypad-container {
- font-size: 24px; } }
- @media (max-height: 480px) {
- #view-amount .scroll-content .keypad-container {
- font-size: 12px; } }
- #view-amount .scroll-content .keypad-container .sendmax {
- background: #262424; }
- #view-amount .scroll-content .keypad-container .sendmax .button {
- color: white;
- background: black;
- border: 1px solid #262424;
- border-radius: 0;
- font-size: 0.8em;
- line-height: 2em;
- width: 100%; }
- #view-amount .scroll-content .keypad-container .sendmax .button .available-funds-amount {
- color: #C9C9C9; }
- #view-amount .scroll-content .keypad-container .sendmax .button:active {
- background-color: #445; }
- #view-amount .scroll-content .keypad-container .keypad {
- text-align: center;
- font-weight: lighter;
- position: absolute;
- bottom: 0;
- width: 100%;
- color: #fff; }
- #view-amount .scroll-content .keypad-container .keypad .row {
- padding: 0 !important;
- margin: 0 !important; }
- #view-amount .scroll-content .keypad-container .keypad .row:last-child .col {
- padding-bottom: 10px; }
- #view-amount .scroll-content .keypad-container .keypad .operator {
- background-color: #f2f2f2;
- font-weight: normal;
- cursor: pointer; }
- #view-amount .scroll-content .keypad-container .keypad .operator:active {
- background-color: #9b9bab; }
- #view-amount .scroll-content .keypad-container .keypad .operator-send {
- font-weight: bolder;
- color: #fff;
- background-color: #494949;
- font-size: 36px;
- cursor: pointer; }
- #view-amount .scroll-content .keypad-container .keypad .operator-send:active {
- background-color: #eaeaea; }
- #view-amount .scroll-content .keypad-container .keypad .digit {
- cursor: pointer;
- background-color: #000;
- border: 1px solid #262424;
- transition: all 0.1s ease; }
- #view-amount .scroll-content .keypad-container .keypad .digit:active {
- background-color: #445; }
- #view-amount .scroll-content .button-primary {
- background-color: #fab915;
- border-radius: 0;
font-weight: bold; }
- #view-amount .scroll-content .button-primary[disabled] {
- background-color: #667;
- opacity: 1; }
- #view-amount .warning {
- color: #b7664d; }
- #view-amount ion-content {
- margin-bottom: constant(safe-area-inset-bottom);
- /* iOS 11.0 */
- margin-bottom: env(safe-area-inset-bottom);
- /* iOS 11.2 */ }
+ @media (max-height: 480px) {
+ #view-amount .amount-pane-recipient .amount-bar .title {
+ padding: 0px; } }
+ @media (max-height: 480px) {
+ #view-amount .amount-pane-recipient .amount-bar {
+ padding-top: 3px; } }
+ #view-amount .amount-pane-recipient .amount {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ flex-grow: 1;
+ position: absolute;
+ bottom: 254px;
+ top: 66px; }
+ #view-amount .amount-pane-recipient .amount .light {
+ color: #9b9bab; }
+ @media (max-height: 480px) {
+ #view-amount .amount-pane-recipient .amount {
+ top: 45px; } }
+ @media (max-width: 320px) {
+ #view-amount .amount-pane-recipient .amount {
+ bottom: 276px;
+ top: 60px; }
+ #view-amount .amount-pane-recipient .amount > div {
+ display: inline-block; }
+ #view-amount .amount-pane-recipient .amount > div:first-child {
+ display: inherit; } }
+
+#view-amount .amount-pane-no-recipient {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ width: 100%;
+ background-color: #fff;
+ padding: 0 16px; }
+ #view-amount .amount-pane-no-recipient .amount-bar {
+ padding: 24px 0;
+ font-size: 18px; }
+ #view-amount .amount-pane-no-recipient .amount-bar .title {
+ padding-top: 10px;
+ color: #445;
+ font-weight: bold; }
+ #view-amount .amount-pane-no-recipient .amount-bar .title .limits {
+ margin-top: 10px;
+ color: #9b9bab;
+ font-size: 12px; }
+ #view-amount .amount-pane-no-recipient .amount-bar .title .select {
+ margin: 10px 1px; }
+ #view-amount .amount-pane-no-recipient .amount {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ flex-grow: 1;
+ position: absolute;
+ bottom: 254px;
+ top: 66px; }
+ #view-amount .amount-pane-no-recipient .amount .light {
+ color: #9b9bab; }
+
+#view-amount .amount {
+ padding-top: 10px;
+ padding-bottom: 10px; }
+ #view-amount .amount .icon-toggle {
+ font-size: 1.2em;
+ width: auto;
+ margin: 0.8em auto;
+ border: 1px solid #f2f2f2;
+ color: #445;
+ border-radius: 3px;
+ padding: 0 10px;
+ cursor: pointer; }
+ @media (max-height: 280px) {
+ #view-amount .amount .icon-toggle {
+ margin: 0.1em auto; } }
+ #view-amount .amount__editable--minimize {
+ font-size: 22px; }
+ #view-amount .amount__editable--standard {
+ font-size: 42px; }
+ @media (max-height: 480px) {
+ #view-amount .amount__editable--standard {
+ font-size: 26px;
+ padding-top: 10px; } }
+ #view-amount .amount__editable--placeholder {
+ color: #9b9bab; }
+ #view-amount .amount__number {
+ color: #445; }
+ #view-amount .amount__currency-toggle {
+ border: 1px solid #f2f2f2;
+ color: #445;
+ border-radius: 3px;
+ padding: 0 10px;
+ cursor: pointer;
+ font-size: .6em;
+ position: relative;
+ top: -3px;
+ line-height: 1; }
+ @media (max-width: 320px) {
+ #view-amount .amount__currency-toggle {
+ line-height: 30px;
+ height: 30px; } }
+ #view-amount .amount__currency-toggle-mobile {
+ border: 1px solid #f2f2f2;
+ color: #445;
+ border-radius: 3px;
+ cursor: pointer;
+ position: relative;
+ line-height: 1; }
+ @media (max-width: 320px) {
+ #view-amount .amount__currency-toggle-mobile {
+ line-height: 30px;
+ height: 30px; } }
+ #view-amount .amount__results--minimize {
+ font-size: 12px; }
+ #view-amount .amount__results--standard {
+ font-size: 18px;
+ padding: 10px 0; }
+ #view-amount .amount__results--placeholder {
+ color: #9b9bab; }
+ #view-amount .amount__result {
+ color: #9b9bab;
+ font-size: .9em;
+ line-height: 1; }
+ @media (max-height: 480px) {
+ #view-amount .amount__result {
+ margin-bottom: 0; } }
+ #view-amount .amount__result-equiv {
+ color: #667;
+ font-size: 1.2em; }
+ @media (max-height: 480px) {
+ #view-amount .amount__result-equiv {
+ margin-top: 0;
+ font-size: 16px; } }
+
+#view-amount .scroll-content {
+ display: flex;
+ flex-direction: column; }
+ #view-amount .scroll-content .send-amount {
+ flex: 1 1 auto;
+ display: flex;
+ flex-direction: column;
+ justify-content: center; }
+ #view-amount .scroll-content .send-amount .send-amount-tool {
+ flex: 0 1 auto; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input {
+ text-align: center;
+ position: relative;
+ padding: 10px 30px; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
+ font-size: 1.8em; }
+ @media (min-width: 375px) {
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
+ font-size: 2.1em; } }
+ @media (min-width: 414px) {
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
+ font-size: 2.4em; } }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .primary-amount-display {
+ font-size: 1.6em; }
+ @media (min-width: 375px) {
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .primary-amount-display {
+ font-size: 1.8em; } }
+ @media (min-width: 414px) {
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.long .primary-amount-display {
+ font-size: 2em; } }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .primary-amount-display {
+ font-size: 0.9em; }
+ @media (min-width: 375px) {
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .primary-amount-display {
+ font-size: 1.3em; } }
+ @media (min-width: 414px) {
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long input, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .unit, #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount.very-long .primary-amount-display {
+ font-size: 1.4em; } }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount input {
+ border: 0;
+ padding: 0;
+ white-space: normal;
+ background: none;
+ line-height: 1;
+ box-sizing: content-box;
+ display: inline-block;
+ vertical-align: middle;
+ margin: 0;
+ height: 1em;
+ margin-right: 5px;
+ font-family: 'ProximaNova'; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .unit,
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
+ display: inline-block;
+ vertical-align: middle;
+ line-height: 1em; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .unit {
+ font-weight: bold; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .primary-amount .primary-amount-display {
+ margin-right: 5px;
+ word-break: break-all; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .switch-currencies {
+ position: absolute;
+ right: 0;
+ top: 50%;
+ transform: translate(0, -50%);
+ padding: 15px; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-tool-input .switch-currencies img {
+ width: 18px; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-actions {
+ margin-top: 15px;
+ display: flex;
+ align-items: center;
+ justify-content: center; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-actions .button {
+ flex: 1 1 auto;
+ line-height: 1.2em; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-actions .button + .button {
+ margin-left: 10px; }
+ #view-amount .scroll-content .send-amount .send-amount-tool .send-amount-actions .button span {
+ display: flex;
+ align-items: center;
+ justify-content: center; }
+ #view-amount .scroll-content .button.no-margin {
+ margin: 0; }
+ #view-amount .scroll-content .notification-warning {
+ display: block;
+ padding: .75rem 1.25rem;
+ color: #856404;
+ background-color: #fff3cd;
+ border: 1px solid #ffeeba;
+ line-height: 1.4em;
+ margin-bottom: 20px; }
+ #view-amount .scroll-content .keypad-container {
+ position: relative; }
+ #view-amount .scroll-content .keypad-container .keypad {
+ text-align: center;
+ font-size: 18px;
+ font-weight: lighter;
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ color: #667; }
+ @media (min-height: 667px) {
+ #view-amount .scroll-content .keypad-container .keypad {
+ font-size: 24px; } }
+ #view-amount .scroll-content .keypad-container .keypad .row {
+ padding: 0 !important;
+ margin: 0 !important; }
+ #view-amount .scroll-content .keypad-container .keypad .col {
+ line-height: 38px; }
+ @media (min-height: 667px) {
+ #view-amount .scroll-content .keypad-container .keypad .col {
+ line-height: 45px; } }
+ #view-amount .scroll-content .keypad-container .keypad .row:last-child .col {
+ padding-bottom: 10px; }
+ #view-amount .scroll-content .keypad-container .keypad .operator {
+ background-color: #f2f2f2;
+ font-weight: normal;
+ cursor: pointer; }
+ #view-amount .scroll-content .keypad-container .keypad .operator:active {
+ background-color: #9b9bab; }
+ #view-amount .scroll-content .keypad-container .keypad .operator-send {
+ font-weight: bolder;
+ color: #fff;
+ background-color: #494949;
+ font-size: 36px;
+ cursor: pointer; }
+ #view-amount .scroll-content .keypad-container .keypad .operator-send:active {
+ background-color: #eaeaea; }
+ #view-amount .scroll-content .keypad-container .keypad .digit {
+ cursor: pointer;
+ border-top: 1px solid #f2f2f2;
+ border-left: 1px solid #f2f2f2;
+ transition: all 0.1s ease; }
+ #view-amount .scroll-content .keypad-container .keypad .digit:active {
+ background-color: #f2f2f2; }
+ @media (max-height: 480px) {
+ #view-amount .scroll-content .keypad-container .keypad {
+ font-size: 12px; } }
#view-confirm {
- background-color: #494949; }
+ background-color: #ffffff; }
#view-confirm .item-note {
float: none; }
#view-confirm .item-note .fee-rate {
@@ -10812,13 +10587,6 @@ qrcode {
margin-top: -3px; }
#view-confirm .toggle {
cursor: pointer; }
- #view-confirm ion-content {
- background-color: #ffffff; }
- #view-confirm slide-to-accept, #view-confirm slide-to-accept-success {
- margin-bottom: constant(safe-area-inset-bottom);
- /* iOS 11.0 */
- margin-bottom: env(safe-area-inset-bottom);
- /* iOS 11.2 */ }
#copayers-invitation .button-share {
color: #fff;
@@ -10923,36 +10691,6 @@ qrcode {
#tab-home .card .item-sub:before {
width: 90%; } }
-#tab-home .card-banner {
- padding: 0; }
- #tab-home .card-banner svg {
- margin: 40px auto 40px; }
- #tab-home .card-banner__img {
- width: 100%;
- display: block; }
-
-#tab-home .buttons {
- display: flex;
- flex-direction: row;
- justify-content: space-evenly;
- margin: 6px auto -12px;
- text-align: center;
- width: 100%; }
- #tab-home .buttons > .col {
- padding: 5px 10px;
- margin-bottom: 0; }
- #tab-home .buttons .button {
- border: 2px solid;
- border-radius: 47px;
- padding: 8px 2px 8px 2px;
- text-align: center;
- width: 100%;
- max-width: 300px;
- font-size: 19px;
- font-weight: bolder;
- min-height: 0;
- line-height: 19px; }
-
#tab-home .wallet-coin-logo {
vertical-align: middle;
margin-right: 5px; }
@@ -10971,13 +10709,15 @@ qrcode {
#tab-home .homeTip {
text-align: center; }
#tab-home .homeTip > .item-heading {
+ margin-top: 10px;
background: 0 none; }
#tab-home .homeTip .item {
border-style: none; }
- #tab-home .homeTip .title {
+ #tab-home .homeTip > .title {
font-size: 20px;
font-weight: bold;
- color: #445; }
+ color: #445;
+ margin: 20px 10px; }
#tab-home .homeTip > .subtitle {
font-size: 1rem;
line-height: 1.5em;
@@ -10990,9 +10730,7 @@ qrcode {
#tab-home .icon.close-home-tip {
color: #666;
- font-size: 38px;
- height: auto;
- top: 8px; }
+ font-size: 38px; }
#tab-home .tab-home__logo {
height: 18px;
@@ -11018,10 +10756,6 @@ qrcode {
#tab-home .release .title {
font-weight: 700;
color: #444; }
- #tab-home .release .release-notes {
- white-space: pre;
- white-space: pre-line;
- text-align: left; }
#tab-home .release .button {
width: 100%;
border: none; }
@@ -11034,14 +10768,6 @@ qrcode {
#tab-home .badge {
top: 11px; }
-.popup-update .popup-buttons {
- display: block; }
-
-.popup-update .popup-buttons .button {
- display: block;
- min-width: 100% !important;
- margin-top: 4px; }
-
#tab-receive .button-share {
color: #fff;
box-shadow: none;
@@ -11118,8 +10844,6 @@ qrcode {
#tab-receive .payment-received-container {
margin: 0 20px; }
- #tab-receive .payment-received-container svg {
- max-height: 400px; }
#tab-receive .payment-received-container .payment-received-amount {
font-size: 1.8em;
display: block;
@@ -11186,150 +10910,123 @@ qrcode {
#cordova-plugin-qrscanner-still, #cordova-plugin-qrscanner-video-preview {
background-color: #fab915 !important; }
-#tab-send-header {
- width: 100%; }
+#tab-send .input input {
+ width: 100%;
+ height: auto; }
-#tab-send .input {
- width: 100%; }
- #tab-send .input input {
- width: 100%;
- height: 57px;
- background: #FFF;
- border: 1px #D9D9D9 solid; }
- #tab-send .input input::placeholder {
- color: #DCDCDC; }
- #tab-send .input i.left {
- padding-left: 15px; }
- #tab-send .input i.qr {
- cursor: pointer;
- cursor: hand;
- padding-right: 5px; }
+#tab-send .input.item {
+ height: 55px; }
-#tab-send .send-wrapper {
- padding: 18px 9px 9px 9px;
+#tab-send .input i.left {
+ padding-left: 15px; }
+
+#tab-send .input i.qr {
+ cursor: pointer;
+ cursor: hand;
+ padding-right: 5px; }
+
+#tab-send .qr-scan-icon {
+ cursor: pointer;
+ cursor: hand;
+ border-left: 1px solid #e4e4e4;
+ padding-left: 10px; }
+
+#tab-send .qr-icon {
+ line-height: 20px; }
+
+#tab-send .zero-state-cta {
+ padding-bottom: 3vh;
+ left: 0; }
+
+#tab-send .send-heading {
+ font-size: 14px;
+ font-weight: bold;
+ padding: 0 0 16px 0;
+ border: none; }
+
+#tab-send .send-header-wrapper {
+ padding: 10px;
+ background-color: white;
+ box-shadow: 0px 5px 10px 0px #cccccc; }
+
+#tab-send .search-wrapper {
background-color: #f2f2f2;
border-radius: 3px;
border: none; }
- #tab-send .send-wrapper:after {
- display: block;
- position: relative;
- height: 1px;
- background: #DEDEDE;
- bottom: 0;
- content: '';
- margin: 10px 6px 0px; }
- #tab-send .send-wrapper.focus .search-input {
- padding-left: 30px; }
- #tab-send .send-wrapper.focus .search-input:focus::-webkit-input-placeholder {
- opacity: 0; }
- #tab-send .send-wrapper .buttons {
- margin: auto;
- margin-top: 18px; }
- #tab-send .send-wrapper .buttons .button {
- min-height: 65px;
- line-height: 16px;
- margin-right: 0px;
- width: 95%;
- max-width: none;
- padding: 2px; }
- #tab-send .send-wrapper .buttons .button-clipboard-paste {
- margin-left: 0; }
- #tab-send .send-wrapper .buttons .button-clipboard-paste .address {
- display: none; }
- #tab-send .send-wrapper .buttons .button-clipboard-paste .icon {
- background: url(../img/icon-clipboard-paste.svg);
- width: 15px;
- height: 19px;
- display: inline-block;
- margin-bottom: 4px; }
- #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-address, #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-content {
- background: #FAB915;
- color: #FFF !important;
- border: 0;
- box-shadow: 0 2px 11px 0 #C1C1C1; }
- #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-address .address, #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-content .address {
- display: none; }
- #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-address .icon, #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-content .icon {
- background: url(../img/icon-clipboard-paste-white.svg); }
- #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-address.contains-address .address, #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-content.contains-address .address {
- display: inline;
- border: none;
- background-color: transparent; }
- #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-address.contains-address .non-address, #tab-send .send-wrapper .buttons .button-clipboard-paste.contains-content.contains-address .non-address {
- display: none; }
- #tab-send .send-wrapper .buttons .button span {
- font-size: 14px; }
- #tab-send .send-wrapper .buttons .button img {
- height: 16px;
- width: auto;
- margin: 2px 0 4px; }
- #tab-send .send-wrapper .buttons .button-qr {
- font-weight: bold;
- max-width: none;
- width: 100%;
- height: 95px;
- margin-top: 20px; }
- #tab-send .send-wrapper .buttons .button-qr img {
- vertical-align: middle;
- margin-right: 12px;
- width: 43px;
- height: 43px; }
- #tab-send .send-wrapper .buttons .button-qr span {
- font-size: 19px; }
+ #tab-send .search-wrapper .svg#Bitcoin_Symbol {
+ width: 14px; }
+ #tab-send .search-wrapper .svg#Bitcoin_Symbol .st0 {
+ fill: #cccccc; }
+ #tab-send .search-wrapper.focus {
+ background: none; }
+ #tab-send .search-wrapper.focus .svg#Bitcoin_Symbol {
+ display: none; }
+ #tab-send .search-wrapper.focus .search-input {
+ padding-left: 30px; }
+ #tab-send .search-wrapper.focus .search-input:focus::-webkit-input-placeholder {
+ opacity: 0; }
+
+#tab-send .abs-v-center {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%); }
#tab-send .search-input {
background-color: transparent;
padding-left: 30px; }
+#tab-send .separator-left {
+ border-left: 1px solid #d9d9df;
+ padding-left: 10px;
+ height: 70%; }
+
+#tab-send .bitcoin-address {
+ border-top: none;
+ padding-bottom: .5rem; }
+ @media (max-width: 480px) {
+ #tab-send .bitcoin-address input {
+ font-size: 14px; } }
+ #tab-send .bitcoin-address .icon {
+ line-height: 31px;
+ padding-top: 2px;
+ padding-bottom: 1px; }
+
+#tab-send .show-more {
+ text-align: center;
+ padding: 20px;
+ font-size: 16px;
+ color: #387ef5;
+ font-weight: bold; }
+
#tab-send .sendTip {
- padding-top: 5vh;
text-align: center; }
+ #tab-send .sendTip > .item-heading {
+ margin-top: 10px;
+ background: 0 none; }
+ #tab-send .sendTip img {
+ content: url("../img/app/tab-icons/ico-send-selected.svg"); }
#tab-send .sendTip .item {
border-style: none; }
#tab-send .sendTip > .title {
font-size: 20px;
+ font-weight: bold;
color: #445;
margin: 20px 10px; }
#tab-send .sendTip > .subtitle {
font-size: 1rem;
line-height: 1.5em;
font-weight: 300;
- color: #6F6F70;
+ color: #445;
margin: 20px 1em 2.5em; }
#tab-send .sendTip .big-icon-svg .bg.green {
padding: 0 10px;
box-shadow: none; }
- #tab-send .sendTip .buttons {
- margin-top: 18px; }
- #tab-send .sendTip .buttons .button {
- font-weight: bold;
- font-size: 19px;
- line-height: 26px;
- padding: 8px 6px; }
- #tab-send .sendTip .button-first-contact img {
- height: 19px;
- width: 19px;
- margin-right: 6px;
- vertical-align: sub; }
-
-#tab-send .item-heading {
- line-height: 16px;
- font-size: 14px;
- font-weight: bold; }
- #tab-send .item-heading .subtitle {
- color: #B5B2B2;
- font-size: 12px;
- font-weight: 300; }
#tab-send .list .item {
- font-weight: 600;
color: #444;
- padding-top: 0.6rem;
- padding-bottom: 0.6rem; }
- #tab-send .list .item p {
- font-weight: normal; }
- #tab-send .list .item.item-icon-left {
- padding-left: 64px; }
+ border-top: none;
+ padding-top: 1.5rem;
+ padding-bottom: 1.5rem; }
#tab-send .list .item .big-icon-svg {
left: 5px; }
#tab-send .list .item .big-icon-svg > .bg {
@@ -11339,7 +11036,7 @@ qrcode {
#tab-send .list .item:before {
display: block;
position: absolute;
- width: 100%;
+ width: 80%;
height: 1px;
background: rgba(221, 221, 221, 0.3);
top: 0;
@@ -11358,76 +11055,6 @@ qrcode {
#tab-send .scroll {
height: 100%; }
-#tab-send .card.contacts {
- margin: 4px 4px 16px 4px;
- border-radius: 6px;
- box-shadow: 0px 2px 1px 0 #C1C1C1; }
- #tab-send .card.contacts .gravatar {
- border-radius: 30px;
- height: 40px;
- width: 40px; }
-
-@media only screen and (min-device-width: 320px) and (max-device-width: 568px) {
- #tab-send .send-wrapper .buttons .button-qr {
- height: 60px; }
- #tab-send .send-wrapper .buttons .button-qr span {
- font-size: 16px; } }
-
-#wallet-origin-destination .header--request {
- padding: 30px 24px;
- width: 100%;
- height: 139px;
- background-color: #fff; }
- #wallet-origin-destination .header--request__title {
- width: 46px;
- height: 20px;
- font-size: 16px;
- font-weight: 600;
- letter-spacing: -0.4px;
- color: #000000; }
- #wallet-origin-destination .header--request__amount {
- font-size: 29px;
- font-weight: 600;
- letter-spacing: -0.7px;
- color: #000000;
- margin: 11px 0 2px; }
- #wallet-origin-destination .header--request__amount-alt {
- opacity: 0.45;
- font-size: 16px;
- font-weight: 600;
- letter-spacing: -0.4px;
- color: #000000; }
-
-#wallet-origin-destination .wallets-header {
- margin: 20px 14px 0px; }
- #wallet-origin-destination .wallets-header .title {
- font-size: 16px;
- font-weight: bold;
- color: #445;
- margin-bottom: -12px; }
-
-#wallet-origin-destination .card {
- font-size: 12px;
- margin: 20px 14px 0px; }
- #wallet-origin-destination .card .item-heading {
- font-weight: 600; }
- #wallet-origin-destination .card .item-heading .subtitle {
- font-size: 12px; }
- #wallet-origin-destination .card-insufficient .wallet {
- opacity: 0.4; }
- #wallet-origin-destination .card-insufficient .item-heading {
- font-size: 12px; }
- #wallet-origin-destination .card-insufficient .item-heading > div {
- display: inline-block;
- vertical-align: text-bottom; }
- #wallet-origin-destination .card-insufficient__dot {
- display: inline-block;
- width: 16px;
- height: 16px;
- background-color: #ec5959;
- border-radius: 8px;
- margin: 2px 6px 2px 2px; }
-
.settings .icon-bitpay {
background-image: url("../img/icon-bitpay.svg"); }
@@ -11643,13 +11270,13 @@ qrcode {
/* background-color and color defaults should be the same */
.wallet-background-color-default {
- background-color: #535353; }
+ background-color: #fab915; }
.wallet-color-default {
- color: #535353; }
+ color: #fab915; }
.cashwallet-color-default {
- color: #eeb640; }
+ color: #26B03C; }
/* generate classes for all colors */
.wallet-color-0 {
@@ -11695,17 +11322,17 @@ qrcode {
margin-left: 2.4rem; }
.wallet-color-6 {
- background: #eeb640; }
+ background: #26B03C; }
.wallet-color-6:before {
- content: "Light Orange";
+ content: "Dollar Green";
margin-left: 2.4rem; }
.wallet-color-7 {
- background: #535353; }
+ background: #fab915; }
.wallet-color-7:before {
- content: "Dark Grey";
+ content: "Observatory";
margin-left: 2.4rem; }
.wallet-color-8 {
@@ -11936,21 +11563,12 @@ qrcode {
fill: white; }
#walletDetails .bp-content {
position: relative;
- height: 100%;
- height: calc(100% - env(safe-area-inset-bottom) * 2); }
+ height: 100%; }
#walletDetails .bp-content.status-bar {
- margin-top: 20px;
- margin-top: env(safe-area-inset-top); }
- #walletDetails .bp-content.collapse ion-content {
- margin-top: 40px; }
- #walletDetails .bp-content.collapse .amount__scale, #walletDetails .bp-content.collapse .amount__error {
- -webkit-transform: scale3d(0.5, 0.5, 0.5) translateY(0px);
- transform: scale3d(0.5, 0.5, 0.5) translateY(0px); }
- #walletDetails .bp-content.collapse .amount-alternative, #walletDetails .bp-content.collapse .send-receive-buttons, #walletDetails .bp-content.collapse .wallet-details-wallet-info {
- opacity: 0; }
+ margin-top: 20px; }
#walletDetails .bar-header {
border: 0;
- background: #eeb640; }
+ background: none; }
#walletDetails .bar-header .title, #walletDetails .bar-header .button {
color: #fff; }
#walletDetails .bar-header .button {
@@ -11959,13 +11577,9 @@ qrcode {
background-color: inherit !important; }
#walletDetails ion-content {
padding-top: 0;
- top: 0;
- transition: all 0.25s ease-in-out;
- margin-top: 185px;
- margin-bottom: 16px; }
- @media only screen and (max-height: 500px) {
- #walletDetails ion-content {
- margin-top: 165px; } }
+ top: 0; }
+ #walletDetails ion-content.collapsible {
+ margin-top: 210px; }
#walletDetails ion-content .scroll {
background: #f8f8f9;
min-height: 300px; }
@@ -11990,51 +11604,23 @@ qrcode {
height: 200px;
-webkit-transform: translateY(100px);
transform: translateY(100px); }
- #walletDetails .amount-wrapper .send-receive-buttons {
- display: flex;
- flex-direction: row;
- justify-content: space-evenly;
- width: 100%;
- position: absolute;
- bottom: 20px;
- transition: all 0.25s ease-in-out; }
- #walletDetails .amount-wrapper .send-receive-buttons > .col {
- padding: 5px 10px;
- margin-bottom: 0; }
- #walletDetails .amount-wrapper .send-receive-buttons .button {
- border: 2px solid;
- border-radius: 47px;
- padding: 6px 2px 6px 2px;
- text-align: center;
- width: 100%;
- max-width: 300px;
- font-size: 19px;
- font-weight: bolder;
- min-height: 0;
- line-height: 19px; }
#walletDetails .amount {
- align-items: center;
- color: #fff;
- display: block;
- height: 230px;
- justify-content: center;
- padding-top: 40px;
+ width: 100%;
text-align: center;
- transition: all 0.25s ease-in-out;
- width: 100%; }
- @media only screen and (max-height: 500px) {
- #walletDetails .amount {
- height: 210px; } }
+ color: #fff;
+ height: 210px;
+ padding-top: 40px;
+ display: block;
+ align-items: center;
+ justify-content: center; }
#walletDetails .amount__balance {
-webkit-transform: scale3d(1, 1, 1) translateY(45px);
- transform: scale3d(1, 1, 1) translateY(45px);
- transition: all 0.25s ease-in-out; }
+ transform: scale3d(1, 1, 1) translateY(45px); }
#walletDetails .amount__updating {
z-index: 999;
margin-top: -2.1rem; }
#walletDetails .amount-alternative {
- line-height: 36px;
- transition: all 0.25s ease-in-out; }
+ line-height: 36px; }
#walletDetails .amount__button-balance {
background-color: transparent;
border: 1px solid rgba(255, 255, 255, 0.25);
@@ -12044,8 +11630,7 @@ qrcode {
vertical-align: middle; }
#walletDetails .amount__error {
font-size: 14px;
- padding: 35px 20px;
- opacity: 1; }
+ padding: 35px 20px; }
#walletDetails .no-alternative {
padding-top: 45px; }
#walletDetails .item.item-footer {
@@ -12110,9 +11695,7 @@ a.item {
font-size: 0.9em; }
.loading-wallet svg {
- margin-top: 0;
- width: 16px;
- height: 16px; }
+ margin-top: 0; }
#advanced-settings .list .item:before {
display: block;
@@ -12139,75 +11722,6 @@ a.item {
color: #667;
font-size: 0.9em; }
-#shapeshift .swap-image {
- width: auto;
- max-width: 400px;
- max-height: 25vh; }
-
-#shapeshift .empty-case {
- padding-top: 5vh;
- text-align: center; }
- #shapeshift .empty-case .item {
- border-style: none; }
- #shapeshift .empty-case > .title {
- font-size: 20px;
- color: #445;
- margin: 20px 10px; }
- #shapeshift .empty-case > .subtitle {
- font-size: 1rem;
- line-height: 1.5em;
- font-weight: 300;
- color: #6F6F70;
- margin: 20px 1em 2.5em; }
- #shapeshift .empty-case .big-icon-svg .bg.green {
- padding: 0 10px;
- box-shadow: none; }
- #shapeshift .empty-case .buttons {
- margin-top: 18px; }
- #shapeshift .empty-case .buttons .button {
- font-weight: bold;
- font-size: 19px;
- line-height: 26px;
- padding: 8px 6px; }
- #shapeshift .empty-case .button-first-contact img {
- height: 19px;
- width: 19px;
- margin-right: 6px;
- vertical-align: sub; }
-
-#shapeshift .button-shapeshift {
- border-color: #FFF;
- background-color: #243F5D;
- color: #FFF;
- border: 0px;
- box-shadow: 0 2px 11px 0 #C1C1C1; }
- #shapeshift .button-shapeshift:hover {
- color: #FFF;
- text-decoration: none; }
- #shapeshift .button-shapeshift.active, #shapeshift .button-shapeshift.activated {
- border-color: #FFF;
- background-color: #606060; }
- #shapeshift .button-shapeshift.button-clear {
- border-color: transparent;
- background: none;
- box-shadow: none;
- color: #FFF; }
- #shapeshift .button-shapeshift.button-icon {
- border-color: transparent;
- background: none; }
- #shapeshift .button-shapeshift.button-outline {
- border-color: #C1C1C1;
- background: transparent;
- color: #C1C1C1; }
- #shapeshift .button-shapeshift.button-outline.active, #shapeshift .button-shapeshift.button-outline.activated {
- background-color: #C1C1C1;
- box-shadow: none;
- color: #fff; }
-
-.header.shapeshift {
- background: url(../img/shapeshiftbg.jpg) center center repeat #28394d;
- opacity: 0.99; }
-
#bitpayCard {
background: white; }
#bitpayCard .status-label {
@@ -12656,6 +12170,7 @@ a.item {
position: relative;
height: 70px;
border-color: #fab915;
+ background-color: #fab915;
padding-top: 20px;
margin-bottom: 50px;
text-align: center; }
@@ -13457,13 +12972,74 @@ a.item {
.onboarding-illustration-backup-warning {
background-image: url(../img/app/backup-warning.svg); }
-#share-app {
+#rate-card .item-heading {
+ font-weight: 700; }
+
+#rate-card .row {
+ border: none; }
+
+#rate-card .item-icon-right {
+ margin: 0; }
+
+#rate-card .feedback-flow-button {
+ margin-bottom: 20px; }
+
+#rate-card .icon-svg > img {
+ height: 1.8rem;
+ margin-bottom: 5px; }
+
+#send-feedback {
+ background-color: #ffffff; }
+ #send-feedback .row {
+ border: none; }
+ #send-feedback .skip {
+ color: rgba(255, 255, 255, 0.3); }
+ #send-feedback .feedback-heading {
+ padding-top: 20px; }
+ #send-feedback .feedback-title {
+ padding-left: 10px;
+ font-size: 20px;
+ font-weight: bold;
+ color: #445; }
+ #send-feedback .rating {
+ text-align: right;
+ padding-right: 15px; }
+ #send-feedback .comment {
+ padding: 0 20px 20px;
+ font-size: 1rem;
+ line-height: 1.5em;
+ font-weight: 300;
+ color: #445; }
+ #send-feedback .user-feedback {
+ border-top: 1px solid #f2f2f2;
+ border-bottom: 1px solid #f2f2f2;
+ padding: 20px;
+ width: 100%;
+ margin-bottom: 20px;
+ -webkit-appearance: none; }
+ #send-feedback .send-feedback-star {
+ height: 1rem;
+ margin-left: 5px; }
+ #send-feedback .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; } }
+
+#complete {
background-color: #fff; }
- #share-app .share-app-layout {
+ #complete .complete-layout {
display: flex;
flex-direction: column;
height: 100%; }
- #share-app .share-app-layout__expand {
+ #complete .complete-layout__expand {
display: flex;
flex-direction: column;
flex-grow: 1;
@@ -13472,27 +13048,36 @@ a.item {
text-align: center;
opacity: 0;
transition: opacity .3s; }
- #share-app .share-app-layout__expand.fade-in {
+ #complete .complete-layout__expand.fade-in {
opacity: 1; }
- #share-app .share-the-love-illustration {
+ #complete .share-the-love-illustration {
width: 5rem;
margin: 1rem; }
- #share-app .subtitle {
+ #complete .send-feedback-illustration {
+ height: 16rem;
+ margin: 1rem; }
+ #complete .feedback-title {
+ font-size: 20px;
+ font-weight: bold;
+ color: #445;
+ margin: 20px 10px;
+ text-align: center; }
+ #complete .subtitle {
padding: 10px 30px 20px;
text-align: center;
color: #667; }
- #share-app .icon-svg > img {
+ #complete .icon-svg > img {
height: 16rem;
width: 16rem;
margin: 10px; }
- #share-app .socialsharing-icon {
+ #complete .socialsharing-icon {
display: inline-block;
width: 60px; }
- #share-app .addressbook-icon-svg {
+ #complete .addressbook-icon-svg {
display: inline-block;
width: 50px;
height: 50px; }
- #share-app .share-buttons {
+ #complete .share-buttons {
padding: 50px 10px 30px;
background-color: #f2f2f2;
text-align: center;
@@ -13504,7 +13089,7 @@ a.item {
animation-fill-mode: forwards;
animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
animation-delay: .2s; }
- #share-app .share-buttons__action {
+ #complete .share-buttons__action {
display: inline-block;
color: #667;
font-size: .9rem;
@@ -13522,6 +13107,38 @@ a.item {
transform: translateY(0);
opacity: 1; } }
+#rate-app {
+ background-color: #ffffff;
+ text-align: center; }
+ #rate-app .skip-rating {
+ color: #445;
+ position: absolute;
+ top: 5px;
+ right: 10px;
+ padding: 15px; }
+ #rate-app .icon-svg > img {
+ width: 80px;
+ height: 80px;
+ margin-top: 15px; }
+ #rate-app .feedback-title {
+ font-size: 20px;
+ font-weight: bold;
+ color: #445;
+ margin: 80px 50px 10px;
+ text-align: center; }
+ #rate-app .share-the-love-illustration {
+ width: 5rem;
+ margin: 1rem; }
+ #rate-app .subtitle {
+ padding: 10px 30px 20px 40px;
+ color: #667; }
+ #rate-app .rate-buttons {
+ bottom: 0;
+ width: 100%;
+ position: absolute;
+ background-color: #f2f2f2;
+ padding: 30px 0 15px; }
+
action-sheet .bp-action-sheet__sheet {
background: #fff;
width: calc(100% + 1px);
@@ -13855,7 +13472,6 @@ click-to-accept {
height: 92px;
width: 100%; }
click-to-accept .click-to-accept__button.button.button-primary.button-standard {
- border-radius: 0;
height: 100%;
max-width: 9999px;
width: 100%; }
@@ -13962,8 +13578,6 @@ slide-to-accept {
height: 92px;
width: 100%;
background: #494949; }
- slide-to-accept .slide .button {
- border-radius: 0; }
slide-to-accept .slide__listener {
height: 100%;
width: 100%;
@@ -14090,6 +13704,11 @@ slide-to-accept-success {
display: flex;
align-items: center;
justify-content: center; }
+ slide-to-accept-success .slide-success__windows-background {
+ background: #11D1A6;
+ height: 100%;
+ width: 100%;
+ position: fixed; }
slide-to-accept-success .slide-success__background {
height: 10vmax;
width: 10vmax;
@@ -14106,10 +13725,8 @@ slide-to-accept-success {
slide-to-accept-success .slide-success__content {
position: relative;
z-index: 1;
- margin-top: -10vh; }
+ margin-top: -20vh; }
slide-to-accept-success .slide-success__content > img {
- width: 45vw;
- max-width: 166px;
margin-bottom: 1.8rem;
-webkit-transform: translateY(5rem);
transform: translateY(5rem);
@@ -14122,7 +13739,7 @@ slide-to-accept-success {
opacity: 1; }
slide-to-accept-success .slide-success__content__header {
color: #FFFFFF;
- font-size: 29px;
+ font-size: 26px;
-webkit-transform: translateY(5rem);
transform: translateY(5rem);
opacity: 0;
@@ -14132,22 +13749,6 @@ slide-to-accept-success {
-webkit-transform: translateY(0);
transform: translateY(0);
opacity: 1; }
- slide-to-accept-success .slide-success__content__share {
- transition: transform 400ms ease, opacity 400ms ease;
- transition-delay: 600ms;
- opacity: 0;
- margin-top: 15vh; }
- slide-to-accept-success .slide-success__content__share span {
- color: #FFF;
- font-size: 22px;
- height: 28px; }
- slide-to-accept-success .slide-success__content__share img {
- height: 28px;
- width: auto;
- vertical-align: bottom;
- margin-right: 4px; }
- slide-to-accept-success .slide-success__content__share.reveal {
- opacity: 0.79; }
slide-to-accept-success .slide-success__footer {
position: absolute;
left: 0;
@@ -14158,11 +13759,7 @@ slide-to-accept-success {
transform: translateY(5rem);
opacity: 0;
transition: transform 400ms ease, opacity 400ms ease;
- transition-delay: 250ms;
- margin-bottom: constant(safe-area-inset-bottom);
- /* iOS 11.0 */
- margin-bottom: env(safe-area-inset-bottom);
- /* iOS 11.2 */ }
+ transition-delay: 250ms; }
slide-to-accept-success .slide-success__footer.reveal {
-webkit-transform: translateY(0);
transform: translateY(0);
@@ -14170,11 +13767,11 @@ slide-to-accept-success {
slide-to-accept-success .slide-success__footer__btn {
display: block;
color: #FFFFFF;
- font-size: 22px;
+ font-size: 18px;
font-weight: 600;
letter-spacing: 2.86px;
- padding: 2rem 0 2.1rem;
- border-top: 1px solid rgba(255, 255, 255, 0.25);
+ padding: 1rem 0 1.1rem;
+ border-top: 1px solid rgba(255, 255, 255, 0.45);
cursor: pointer; }
#tx-details .action-created.action-accepted {
@@ -14220,16 +13817,16 @@ slide-to-accept-success {
line-height: 30px; }
#txp-details .head .amount-label .amount,
#view-confirm .head .amount-label .amount {
- font-size: 16px;
- color: #9B9B9B;
- font-family: "Roboto-Light"; }
- #txp-details .head .amount-label .alternative,
- #view-confirm .head .amount-label .alternative {
font-size: 38px;
margin-bottom: .5rem; }
- #txp-details .head .amount-label .alternative > .unit,
- #view-confirm .head .amount-label .alternative > .unit {
+ #txp-details .head .amount-label .amount > .unit,
+ #view-confirm .head .amount-label .amount > .unit {
font-family: "Roboto-Light"; }
+ #txp-details .head .amount-label .alternative,
+ #view-confirm .head .amount-label .alternative {
+ font-size: 16px;
+ font-family: "Roboto-Light";
+ color: #9B9B9B; }
#txp-details .item,
#view-confirm .item {
border-color: #EFEFEF; }
@@ -14517,10 +14114,6 @@ wallet-selector .subheader {
font-weight: bold;
padding-bottom: 10px;
border-bottom: 1px solid #EFEFEF; }
- wallet-selector .subheader .subtitle {
- color: #667;
- font-size: 12px;
- font-weight: 300; }
wallet-selector .subheader .wallet-coin-logo {
vertical-align: middle;
margin-right: 5px; }
@@ -15116,10 +14709,17 @@ account-selector {
height: 100%; }
#custom-amount .address .qr-code {
text-align: center;
- margin-top: 6px; }
- #custom-amount .address .qr-code qrcode canvas {
- height: 30vh;
- max-height: 220px; }
+ margin-top: 24vh;
+ margin-bottom: 7vh; }
+ @media (max-height: 800px) {
+ #custom-amount .address .qr-code {
+ margin-top: 18vh; } }
+ @media (max-height: 700px) {
+ #custom-amount .address .qr-code {
+ margin-top: 14vh; } }
+ @media (max-height: 600px) {
+ #custom-amount .address .qr-code {
+ margin-top: 8vh; } }
#custom-amount .address .info {
position: absolute;
width: 100%;
@@ -15159,28 +14759,6 @@ account-selector {
margin-left: 10px; }
#custom-amount .address .address-types {
text-align: center; }
- #custom-amount .address .amount {
- margin-top: 20vh;
- margin-bottom: 4vh;
- width: 100%;
- text-align: center;
- display: block;
- align-items: center;
- justify-content: center; }
- @media (max-height: 800px) {
- #custom-amount .address .amount {
- margin-top: 12vh;
- margin-bottom: 6vh; } }
- @media (max-height: 700px) {
- #custom-amount .address .amount {
- margin-top: 10vh;
- margin-bottom: 4vh; } }
- @media (max-height: 600px) {
- #custom-amount .address .amount {
- margin-top: 6vh;
- margin-bottom: 2vh; } }
- #custom-amount .address .amount-alternative {
- line-height: 36px; }
#pin {
background-color: #FAFAFA;
@@ -15395,223 +14973,10 @@ log-options #check-bar .checkbox-icon {
#cash-scan a {
cursor: pointer; }
-#view-review slide-to-accept, #view-review slide-to-accept-success {
- margin-bottom: constant(safe-area-inset-bottom);
- /* iOS 11.0 */
- margin-bottom: env(safe-area-inset-bottom);
- /* iOS 11.2 */ }
-
-#view-review .fee-summary {
- bottom: 92px;
- bottom: calc(92px + constant(safe-area-inset-bottom));
- /* iOS 11.0 */
- bottom: calc(92px + env(safe-area-inset-bottom));
- /* iOS 11.2 */
- position: absolute; }
-
-#view-review .shapeshift-banner, #view-review .bitpay-banner, #view-review .egifter-banner {
- box-shadow: none; }
-
-#view-review .warning {
- color: #b7664d; }
-
.gravatar {
border-radius: 3px;
display: inline-block; }
-.elastic {
- width: 100%;
- font-size: 14px; }
-
-/*
-* Extends Ionic v1 item
-*/
-.item.item-compact {
- padding: 11px 13px; }
-
-.item.item-gutterless {
- padding: 0; }
-
-.item .item-content.item-content-avatar {
- min-height: 69px;
- padding: 13px 11px 13px 68px; }
- .item .item-content.item-content-avatar > img:first-child,
- .item .item-content.item-content-avatar > i:first-child {
- position: absolute;
- max-width: 40px;
- max-height: 40px;
- width: 100%;
- height: 100%;
- border-radius: 50%;
- left: 13px;
- top: 50%;
- padding: 0;
- -webkit-transform: translate(0, -50%);
- transform: translate(0, -50%); }
-
-.item .item-content.item-content-compact {
- min-height: 0;
- padding: 13px 11px; }
-
-.item .item-content .highlight {
- color: #FAB915; }
-
-.item .item-content + .item-content {
- padding-top: 0; }
-
-/*
-* Extends Ionic v1 ion-content
-*/
-ion-content.bg-neutral {
- background-color: #F2F2F2; }
-
-ion-content.padded-bottom-cta {
- bottom: 92px; }
-
-ion-content.padded-bottom-cta-with-summary {
- bottom: 134px; }
-
-.card.card-gutter-compact {
- margin: 10px 12px; }
-
-.header {
- padding: 29px 12px 61px;
- background-color: #fab915;
- color: #FFFFFF; }
- .header.btc {
- background-color: #535353; }
- .header .title {
- font-size: 18px;
- font-weight: 400;
- line-height: 1em;
- color: #FFFFFF;
- text-align: center; }
- .header .title + .content {
- margin-top: 23px; }
- .header .content {
- text-align: center; }
- .header .content p {
- margin: 0;
- line-height: 1em;
- font-size: 18px; }
- .header .content p.large {
- font-size: 29px;
- font-weight: 600; }
- .header .content p + p {
- margin-top: 8px; }
-
-.content-frame.negative-top {
- margin-top: -40px; }
- .content-frame.negative-top .card:first-child {
- margin-top: 0; }
-
-.address-frame {
- background-color: #F8F8F8;
- border: 0.5px solid #EDEBEB;
- border-radius: 3px;
- padding: 9px;
- text-align: center;
- font-size: 14px;
- overflow: hidden;
- text-overflow: ellipsis; }
- .address-frame.expanded {
- white-space: normal;
- text-overflow: clip; }
- .address-frame .prefix {
- color: #000000; }
- .address-frame .mid {
- color: #919191; }
- .address-frame .suffix {
- color: #000000; }
-
-.action-minor {
- margin: 20px 14px;
- font-size: 14px; }
- .action-minor.mt-negative {
- margin-top: 0; }
- .action-minor.text-right {
- text-align: right; }
- .action-minor > .action-icon {
- width: 15px;
- height: 15px;
- vertical-align: middle;
- margin-right: 3px; }
- .action-minor > .action-text {
- vertical-align: middle;
- color: #444444; }
-
-.expand-content-frame {
- position: relative; }
- .expand-content-frame .expand-content-trigger {
- position: absolute;
- top: 0;
- transition: opacity 0.3s ease;
- right: 0; }
- .expand-content-frame .expand-content-trigger.expand-content-revealed {
- opacity: 0; }
- .expand-content-frame .expand-content {
- opacity: 0;
- transform-origin: 100% 0%;
- transform: scale(0, 0);
- transition: opacity 0.3s ease, transform 0.3s ease; }
- .expand-content-frame .expand-content.expand-content-revealed {
- opacity: 1;
- transform: scale(1, 1); }
-
-.fee-summary {
- background-color: #F2F2F2;
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- padding: 5px 12px 15px;
- position: relative;
- width: 100%; }
- .fee-summary:before {
- content: '';
- position: absolute;
- left: 0;
- top: -15px;
- width: 100%;
- height: 15px;
- background: linear-gradient(to bottom, rgba(242, 242, 242, 0) 0%, #f2f2f2 100%); }
- .fee-summary .amount {
- width: 100%; }
- .fee-summary .amount .fee-fiat {
- display: inline; }
- .fee-summary .amount .fee-fiat.positive {
- color: #70955F; }
- .fee-summary .amount .fee-fiat.negative {
- color: #C24633; }
- .fee-summary .amount .fee-crypto {
- color: #A7A7A7;
- float: right; }
-
-.formatted-amount {
- display: inline-block; }
- .formatted-amount .start,
- .formatted-amount .middle,
- .formatted-amount .end,
- .formatted-amount .currency {
- display: inline-block; }
- .formatted-amount .start {
- font-size: 1em; }
- .formatted-amount .middle {
- font-size: 0.7857em;
- margin-left: 5px; }
- .formatted-amount .end {
- font-size: 0.7857em;
- margin-left: 5px; }
- .formatted-amount.size-equal .middle,
- .formatted-amount.size-equal .end {
- font-size: 1em; }
- .formatted-amount .currency {
- font-size: 1em;
- margin-left: 5px;
- text-transform: uppercase; }
-
-.wallet-balance-directive {
- display: inline-block; }
-
/* This is for rules that don't yet have a home.
* Our goal is to delete this file. Search the regex: /class=".*CLASS.*?"/
*/
@@ -15793,9 +15158,6 @@ input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer
.size-24 {
font-size: 24px; }
-.size-25 {
- font-size: 25px; }
-
.size-28 {
font-size: 28px; }
@@ -15970,6 +15332,3 @@ input[type=file] {
.white-space-initial {
white-space: initial; }
-
-.height-spacer {
- height: 15px; }
diff --git a/www/img/banner-store.png b/www/img/banner-store.png
deleted file mode 100644
index 8be30c29c..000000000
Binary files a/www/img/banner-store.png and /dev/null differ
diff --git a/www/img/bitpay_banner.svg b/www/img/bitpay_banner.svg
deleted file mode 100644
index cf5829899..000000000
--- a/www/img/bitpay_banner.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- Artboard
- Created with Sketch.
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/www/img/contact-placeholder.svg b/www/img/contact-placeholder.svg
index 54b0fcec2..f730da86b 100644
--- a/www/img/contact-placeholder.svg
+++ b/www/img/contact-placeholder.svg
@@ -1,18 +1,12 @@
-
-
-
- Artboard
- Created with Sketch.
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
diff --git a/www/img/egifter_banner.png b/www/img/egifter_banner.png
deleted file mode 100644
index cb2e7c11e..000000000
Binary files a/www/img/egifter_banner.png and /dev/null differ
diff --git a/www/img/icon-alternative-currency-black.svg b/www/img/icon-alternative-currency-black.svg
deleted file mode 100644
index e9b175256..000000000
--- a/www/img/icon-alternative-currency-black.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- 3A719124-019D-470F-908A-5D61F117A295
- Created with sketchtool.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/www/img/icon-bookmark.svg b/www/img/icon-bookmark.svg
deleted file mode 100644
index 5db1f9047..000000000
--- a/www/img/icon-bookmark.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
diff --git a/www/img/icon-clipboard-paste-white.svg b/www/img/icon-clipboard-paste-white.svg
deleted file mode 100644
index be0df78bc..000000000
--- a/www/img/icon-clipboard-paste-white.svg
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/www/img/icon-clipboard-paste.svg b/www/img/icon-clipboard-paste.svg
deleted file mode 100644
index a82edc11b..000000000
--- a/www/img/icon-clipboard-paste.svg
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/www/img/icon-contact-add.svg b/www/img/icon-contact-add.svg
deleted file mode 100644
index 36d1f95bc..000000000
--- a/www/img/icon-contact-add.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
diff --git a/www/img/icon-egifter.png b/www/img/icon-egifter.png
deleted file mode 100644
index 42ebb25c5..000000000
Binary files a/www/img/icon-egifter.png and /dev/null differ
diff --git a/www/img/icon-faucet.svg b/www/img/icon-faucet.svg
deleted file mode 100644
index e2eb5beed..000000000
--- a/www/img/icon-faucet.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/www/img/icon-reddit-white.svg b/www/img/icon-reddit-white.svg
deleted file mode 100644
index b749b4561..000000000
--- a/www/img/icon-reddit-white.svg
+++ /dev/null
@@ -1 +0,0 @@
-icon-reddit-white
\ No newline at end of file
diff --git a/www/img/icon-scan-qr.svg b/www/img/icon-scan-qr.svg
deleted file mode 100644
index bc4a2bc56..000000000
--- a/www/img/icon-scan-qr.svg
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/www/img/icon-sent-successful.svg b/www/img/icon-sent-successful.svg
deleted file mode 100644
index 070357ddf..000000000
--- a/www/img/icon-sent-successful.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
diff --git a/www/img/icon-share-white.svg b/www/img/icon-share-white.svg
deleted file mode 100644
index eeb3e7b6b..000000000
--- a/www/img/icon-share-white.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/www/img/icon-twitter-white.svg b/www/img/icon-twitter-white.svg
deleted file mode 100644
index 5dafba78a..000000000
--- a/www/img/icon-twitter-white.svg
+++ /dev/null
@@ -1 +0,0 @@
-icon-twitter-white
\ No newline at end of file
diff --git a/www/img/icon-w2w.svg b/www/img/icon-w2w.svg
deleted file mode 100644
index 082a0d8cc..000000000
--- a/www/img/icon-w2w.svg
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/www/img/icon-wallet.svg b/www/img/icon-wallet.svg
index 74c7055f2..fba9bca0b 100644
--- a/www/img/icon-wallet.svg
+++ b/www/img/icon-wallet.svg
@@ -1 +1,62 @@
-icon-wallet
\ No newline at end of file
+
+image/svg+xml
+
\ No newline at end of file
diff --git a/www/img/qr-overlay-bch.png b/www/img/qr-overlay-bch.png
deleted file mode 100644
index 566789663..000000000
Binary files a/www/img/qr-overlay-bch.png and /dev/null differ
diff --git a/www/img/qr-overlay-btc.png b/www/img/qr-overlay-btc.png
deleted file mode 100644
index 3973b0dc5..000000000
Binary files a/www/img/qr-overlay-btc.png and /dev/null differ
diff --git a/www/img/shapeshift_swap.png b/www/img/shapeshift_swap.png
deleted file mode 100644
index 83905b751..000000000
Binary files a/www/img/shapeshift_swap.png and /dev/null differ
diff --git a/www/index.html b/www/index.html
index ecc2d923c..76827f685 100644
--- a/www/index.html
+++ b/www/index.html
@@ -11,7 +11,7 @@
- Bitcoin.com Wallet
+ Bitcoin.com - Bitcoin.com Wallet
@@ -31,7 +31,6 @@
-
diff --git a/www/misc/payment_sent.mp3 b/www/misc/bch_sent.mp3
similarity index 100%
rename from www/misc/payment_sent.mp3
rename to www/misc/bch_sent.mp3
diff --git a/www/misc/payment_received.mp3 b/www/misc/payment_received.mp3
deleted file mode 100644
index d64820450..000000000
Binary files a/www/misc/payment_received.mp3 and /dev/null differ
diff --git a/www/misc/payment_received.ogg b/www/misc/payment_received.ogg
deleted file mode 100644
index 3f6b7baed..000000000
Binary files a/www/misc/payment_received.ogg and /dev/null differ
diff --git a/www/misc/payment_sent.ogg b/www/misc/payment_sent.ogg
deleted file mode 100644
index 8527a893c..000000000
Binary files a/www/misc/payment_sent.ogg and /dev/null differ
diff --git a/www/views/advancedSettings.html b/www/views/advancedSettings.html
index 9fa11c3fa..2b46e5375 100644
--- a/www/views/advancedSettings.html
+++ b/www/views/advancedSettings.html
@@ -12,7 +12,7 @@
Use Unconfirmed Funds
@@ -29,6 +29,15 @@
Hide Next Steps Card
+
+
+
+
+
diff --git a/www/views/amount.html b/www/views/amount.html
index 51397f3bf..3d581f886 100644
--- a/www/views/amount.html
+++ b/www/views/amount.html
@@ -1,100 +1,82 @@
- {{'Enter Amount' | translate}}
+ {{'Enter amount' | translate}}
-
+
-
+
+
-
-
-
-
-
- Use All Available Funds
- Send Maximum Amount
- ( )
-
-
-
-
-
Next
diff --git a/www/views/buyBitcoindotcom.html b/www/views/buyBitcoindotcom.html
index f0f8e27e3..2c8ef36f1 100644
--- a/www/views/buyBitcoindotcom.html
+++ b/www/views/buyBitcoindotcom.html
@@ -15,7 +15,7 @@
- Buy bitcoin
+ Buy bitcoin
diff --git a/www/views/confirm.html b/www/views/confirm.html
index 0ad56e6c4..8bed9035f 100644
--- a/www/views/confirm.html
+++ b/www/views/confirm.html
@@ -16,8 +16,8 @@
Sending maximum amount
-
{{tx.alternativeAmountValueStr || '...'}} {{tx.alternativeAmountUnitStr}}
{{tx.amountValueStr || '...'}} {{tx.amountUnitStr}}
+
{{tx.alternativeAmountStr || '...'}}
@@ -77,9 +77,9 @@
{{'Fee:' | translate}} {{tx.feeLevelName | translate}}
- {{tx.txp[wallet.id].alternativeFeeStr || '...'}}
+ {{tx.txp[wallet.id].feeStr || '...'}}
- {{tx.txp[wallet.id].feeStr || '...'}}
+ {{tx.txp[wallet.id].alternativeFeeStr || '...'}}
·
{{tx.txp[wallet.id].feeRatePerStr}} of the sending amount
@@ -105,13 +105,13 @@
{{buttonText}}
@@ -120,7 +120,6 @@
Payment Sent
Proposal Created
@@ -132,8 +131,7 @@
wallet-selector-wallets="wallets"
wallet-selector-selected-wallet="wallet"
wallet-selector-show="walletSelector"
- wallet-selector-on-select="onWalletSelect"
- wallet-selector-display-balance-as-fiat="displayBalanceAsFiat">
+ wallet-selector-on-select="onWalletSelect">
diff --git a/www/views/customAmount.html b/www/views/customAmount.html
index 079a5543d..a4f2d57c9 100644
--- a/www/views/customAmount.html
+++ b/www/views/customAmount.html
@@ -30,22 +30,8 @@
Return To Address
-
-
+