Merge branch 'wallet/sprint/21' into wallet/task/501

This commit is contained in:
Jean-Baptiste Dominguez 2018-09-04 14:31:22 +09:00 committed by GitHub
commit 911247e463
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
64 changed files with 4117 additions and 1852 deletions

View file

@ -9,7 +9,7 @@ module.exports = function(grunt) {
pkg: grunt.file.readJSON('package.json'),
exec: {
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'
command: 'if [ ! -d ./cache/0.19.4/osx64/nwjs.app ]; then mkdir -p ./cache/0.19.4/osx64; curl https://dl.nwjs.io/v0.19.5-mas-beta/nwjs-mas-v0.19.5-osx-x64.zip --output ./cache/nwjs.zip; unzip ./cache/nwjs.zip -d ./cache; cp -R ./cache/nwjs-mas-v0.19.5-osx-x64/nwjs.app ./cache/0.19.4/osx64/; fi'
},
create_others_dist: {
command: 'sh webkitbuilds/create-others-dist.sh "<%= pkg.name %>" "<%= pkg.fullVersion %>" "<%= pkg.nameCaseNoSpace %>" "<%= pkg.title %>"'
@ -296,10 +296,10 @@ module.exports = function(grunt) {
},
pkg: {
options: {
appName: '<%= pkg.nameCaseNoSpace %>',
appName: '<%= pkg.title %>',
platforms: ['osx64'],
buildDir: './webkitbuilds/pkg',
version: '0.19.5',
version: '0.19.4',
macIcns: './resources/<%= pkg.name %>/mac/pkg/app.icns',
exeIco: './www/img/app/logo.ico',
macPlist: {

View file

@ -24,9 +24,9 @@
"windowsAppId": "804636ee-b017-4cad-8719-e58ac97ffa5c",
"pushSenderId": "1036948132229",
"description": "A Secure Bitcoin Wallet",
"version": "5.0.0",
"fullVersion": "5.0-rc1",
"androidVersion": "500000",
"version": "5.0.2",
"fullVersion": "5.0-rc3",
"androidVersion": "500200",
"_extraCSS": "",
"_enabledExtensions": {
"coinbase": false,

View file

@ -85,6 +85,12 @@
<config-file platform="ios" target="*-Info.plist" parent="UIStatusBarHidden"><true/></config-file>
<config-file platform="ios" target="*-Info.plist" parent="UIViewControllerBasedStatusBarAppearance"><false/></config-file>
<config-file target="*-Info.plist" parent="ITSAppUsesNonExemptEncryption"><false/></config-file>
<icon src="resources/*PACKAGENAME*/ios/icon/AppIcon24x24@2x.png" width="48" height="48" />
<icon src="resources/*PACKAGENAME*/ios/icon/AppIcon27.5x27.5@2x.png" width="55" height="55" />
<icon src="resources/*PACKAGENAME*/ios/icon/AppIcon44x44@2x.png" width="88" height="88" />
<icon src="resources/*PACKAGENAME*/ios/icon/AppIcon86x86@2x.png" width="172" height="172" />
<icon src="resources/*PACKAGENAME*/ios/icon/AppIcon98x98@2x.png" width="196" height="196" />
<icon src="resources/*PACKAGENAME*/ios/icon/icon-20.png" width="20" height="20" />
<icon src="resources/*PACKAGENAME*/ios/icon/icon-60@3x.png" width="180" height="180" />
<icon src="resources/*PACKAGENAME*/ios/icon/icon-60.png" width="60" height="60" />
<icon src="resources/*PACKAGENAME*/ios/icon/icon-60@2x.png" width="120" height="120" />
@ -102,6 +108,7 @@
<icon src="resources/*PACKAGENAME*/ios/icon/icon-small@3x.png" width="87" height="87" />
<icon src="resources/*PACKAGENAME*/ios/icon/icon-50.png" width="50" height="50" />
<icon src="resources/*PACKAGENAME*/ios/icon/icon-50@2x.png" width="100" height="100" />
<icon src="resources/*PACKAGENAME*/ios/icon/icon-1024.png" width="1024" height="1024" />
<splash src="resources/*PACKAGENAME*/ios/splash/Default~iphone.png" width="320" height="480"/>
<splash src="resources/*PACKAGENAME*/ios/splash/Default@2x~iphone.png" width="640" height="960"/>

View file

@ -24,8 +24,9 @@ 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_NAME}"
export APP_PATH="pkg/${APP_NAME}/osx64/${APP_NAME}"
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"
@ -36,10 +37,16 @@ if [ ! -d $DIST_PATH ]; then
mkdir $DIST_PATH
fi
python build_mas.py -C build.cfg -O "${TMP_PATH}/${APP_NAME}.app" -I "${APP_PATH}.app" -P "$DIST_PATH/${APP_PACKAGE}-wallet-${APP_VERSION}-osx.pkg"
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
exit

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Catalan\n"
"Language: ca\n"
"PO-Revision-Date: 2018-07-27 08:43\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "Número de compte"
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"
@ -206,6 +226,20 @@ msgstr "Gairebé ja estem! Repassem-ho."
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."
@ -662,6 +696,7 @@ 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"
@ -1281,6 +1316,7 @@ msgstr "Amb finalitats d'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 "Des de"
@ -1341,10 +1377,6 @@ msgid "Get news and updates from BitPay"
msgstr "Rebeu notícies i actualitzacions de BitPay"
#: www/views/onboarding/welcome.html:8
msgctxt "button"
msgid "Get started"
msgstr "Comença"
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Comença"
@ -2168,6 +2200,10 @@ msgstr "Pagament rebutjat"
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"
@ -2185,7 +2221,7 @@ msgid "Payment details"
msgstr "Dades de pagament"
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgid "Payment Request"
msgstr "Sol·licitud de pagament"
#: www/views/mercadoLibreCards.html:22
@ -2358,7 +2394,7 @@ msgstr "Rep"
#: www/views/customAmount.html:44
msgid "Receive in"
msgstr "Rep a"
msgstr "Rebre en"
#: www/views/includes/walletHistory.html:24
#: www/views/tx-details.html:18
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Enganxa l'adreça"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Transferència de cartera a cartera"
msgid "Transfer between wallets"
msgstr "Transferència entre carteres"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "Escaneja el codi QR"
msgid "Send Bitcoin faster!"
msgstr "Envia bitcoins més ràpid!"
#: 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"
@ -2657,6 +2689,8 @@ 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."
@ -3061,6 +3095,14 @@ msgstr "Aquesta aplicació emmagatzema els vostres bitcoins amb una seguretat de
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
@ -3102,10 +3144,6 @@ msgstr "Per a"
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."
#: 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."
#: 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}}"
@ -3118,6 +3156,26 @@ msgstr "Recàrrega en curs..."
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
@ -3758,3 +3816,47 @@ msgstr "Bitcoin Cash gratis"
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"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Czech\n"
"Language: cs\n"
"PO-Revision-Date: 2018-07-27 08:43\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -79,7 +79,27 @@ msgstr "Číslo účtu"
#: www/views/tab-home.html:61
msgid "Instant transactions with low fees"
msgstr "Okamžité transakce s nízkou platbou"
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"
@ -206,6 +226,20 @@ msgstr "Téměř hotovo! Podívejme se."
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."
@ -662,6 +696,7 @@ 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"
@ -903,7 +938,7 @@ msgstr "Mazání peněženky..."
#: src/js/services/onGoingProcess.js:28
msgid "Deleting payment proposal"
msgstr "Mázání návrhu platby"
msgstr "Mazání návrhu platby"
#: www/views/join.html:141
#: www/views/tab-create-personal.html:111
@ -957,7 +992,7 @@ 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áté platbu, je automaticky vygenerována nová adresa."
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"
@ -1281,6 +1316,7 @@ msgstr "Pro účely auditu"
#: 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"
@ -1341,10 +1377,6 @@ msgid "Get news and updates from BitPay"
msgstr "Získávejte novinky a aktualizace z BitPay"
#: www/views/onboarding/welcome.html:8
msgctxt "button"
msgid "Get started"
msgstr "Začněte"
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Začněte"
@ -1515,7 +1547,7 @@ msgstr "Je-li povoleno, budou chráněny veškeré citlivé informace (privátn
#: 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 Nadávné transakce - seznam posledních transakcí napříč všemi peněženkami."
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."
@ -1660,7 +1692,7 @@ msgstr "Je vhodné vyvarovat se opakovanému použití adres - chrání to jak V
#: 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 znovuzprístupnění peněz. Zkontrolujte prosím Vaši zálohu a zkuste to znovu."
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 zístupnění peněz. Zkontrolujte prosím Vaši zálohu a zkuste to znovu."
#: www/views/join.html:151
msgid "Join"
@ -1928,7 +1960,7 @@ 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 poporující Bitcoin Cash"
msgstr "Žádné peněženky podporující Bitcoin Cash"
#: src/js/controllers/cashScan.js:58
msgid "Non BIP44 wallet"
@ -1936,7 +1968,7 @@ msgstr "Jiná než BIP44 peněženka"
#: www/views/cashScan.html:46
msgid "Non eligible BTC wallets"
msgstr "Peněženky nezpůsobilé k BTC"
msgstr "Peněženky nezpůsobilé pro BTC"
#: src/js/services/feeService.js:12
msgid "Normal"
@ -2168,6 +2200,10 @@ msgstr "Platba odmítnuta"
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"
@ -2185,7 +2221,7 @@ msgid "Payment details"
msgstr "Detaily platby"
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgid "Payment Request"
msgstr "Žádost o platbu"
#: www/views/mercadoLibreCards.html:22
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Vložit adresu"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Převod mezi peněženkami"
msgid "Transfer between wallets"
msgstr "Přenos mezi peněženkami"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "Skenovat QR kód"
msgid "Send Bitcoin faster!"
msgstr "Odesílejte Bitcoin rychleji!"
#: 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"
@ -2657,6 +2689,8 @@ 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."
@ -3061,6 +3095,14 @@ msgstr "Tato aplikace k držení Vašich Bitcoinů používá nejmodernější z
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
@ -3102,10 +3144,6 @@ msgstr "Na"
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."
#: 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 potřebovat vytvořit Bitcoin peněženku a získat Bitcoin."
#: 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}}"
@ -3118,6 +3156,26 @@ msgstr "Navyšování v průběhu..."
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
@ -3302,7 +3360,7 @@ msgstr "Upozornění: Soukromý klíč této peněženky není k dispozici. Expo
#: www/views/modals/paypro.html:42
msgid "WARNING: UNTRUSTED CERTIFICATE"
msgstr "Upozornění: Nedůveryhodný certifikát"
msgstr "Upozornění: Nedůvěryhodný certifikát"
#: src/js/services/onGoingProcess.js:15
msgid "Waiting for Ledger..."
@ -3550,7 +3608,7 @@ 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. Were looking forward to hearing from you!"
msgstr "Můžete přispívat příhlášením k webovým stránkám Crowdin komunity pro překlady. Těšíme se na Váše příspěvky!"
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."
@ -3758,3 +3816,47 @@ msgstr "Bitcoin Cash zdarma"
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"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: German\n"
"Language: de\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "Kontonummer"
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"
@ -206,6 +226,20 @@ 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."
@ -662,6 +696,7 @@ 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"
@ -1281,6 +1316,7 @@ 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"
@ -1341,10 +1377,6 @@ 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 "Loslegen"
#: www/views/bitpayCard.html:49
msgid "Get started"
msgstr "Los gehts"
@ -1597,7 +1629,7 @@ msgstr "Unzureichende bestätigte Mittel"
#: src/js/controllers/topup.js:177
#: src/js/services/bwcError.js:71
msgid "Insufficient funds for fee"
msgstr "Nicht ausreichendes Guthaben für die Gebühr"
msgstr "Unzureichendes Guthaben für die Gebühr"
#: www/views/tab-settings.html:123
msgid "Integrations"
@ -2168,6 +2200,10 @@ 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"
@ -2185,7 +2221,7 @@ msgid "Payment details"
msgstr "Zahlungsdetails"
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgid "Payment Request"
msgstr "Zahlungsanforderung"
#: www/views/mercadoLibreCards.html:22
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Adresse einfügen"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Wallet-zu-Wallet-Überweisung"
msgid "Transfer between wallets"
msgstr "Transfer zwischen Wallets"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "QR-Code scannen"
msgid "Send Bitcoin faster!"
msgstr "Versenden Sie Bitcoin schneller!"
#: 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"
@ -2657,6 +2689,8 @@ 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."
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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}}"
@ -3118,6 +3156,26 @@ msgstr "Aufladung in Bearbeitung..."
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."
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
#: www/views/modals/wallet-balance.html:23
@ -3758,3 +3816,47 @@ msgstr "Kostenloses Bitcoin Cash"
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"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Spanish\n"
"Language: es\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:40\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "Número de cuenta"
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"
@ -206,6 +226,20 @@ 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."
@ -662,6 +696,7 @@ msgstr "Co-pagador {{$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"
@ -1281,6 +1316,7 @@ 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"
@ -1341,10 +1377,6 @@ 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"
@ -2168,6 +2200,10 @@ 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"
@ -2185,8 +2221,8 @@ msgid "Payment details"
msgstr "Detalles del pago"
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgstr "Solicitud de pago"
msgid "Payment Request"
msgstr "Solicitar pago"
#: www/views/mercadoLibreCards.html:22
#: www/views/modals/mercadolibre-card-details.html:39
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Pegar dirección"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Billetera a billetera"
msgid "Transfer between wallets"
msgstr "Transferir entre billeteras"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "Escanear código QR"
msgid "Send Bitcoin faster!"
msgstr "¡Envía Bitcoin más rápido!"
#: 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"
@ -2657,6 +2689,8 @@ 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."
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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}}"
@ -3118,6 +3156,26 @@ 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
@ -3758,3 +3816,47 @@ msgstr "Bitcoin Cash gratis"
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"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Persian\n"
"Language: fa\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "شماره حساب"
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 "حساب ها"
@ -206,6 +226,20 @@ 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 در حال حاضر در دسترس نمی باشد، خواهشمند است در زمان دیگری امتحان کنید."
@ -662,6 +696,7 @@ 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 "در کلیپ بورد کپی شد"
@ -1281,6 +1316,7 @@ 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 "از"
@ -1341,10 +1377,6 @@ 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 "شروع کنید"
@ -2168,6 +2200,10 @@ 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 "پرداخت پذیرفته شده اما هنوز پخش نشده"
@ -2185,7 +2221,7 @@ msgid "Payment details"
msgstr "جزئیات پرداخت"
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgid "Payment Request"
msgstr "درخواست پرداخت"
#: www/views/mercadoLibreCards.html:22
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "جای گذاری آدرس"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "انتقال پول از کیف پول به کیف پول"
msgid "Transfer between wallets"
msgstr "انتقال بین کیف پول ها"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "اسکن کد QR"
msgid "Send Bitcoin faster!"
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 "ذخیره آدرس های اغلب استفاده شده و ارسال بیت کوین به آنها تنها با یک ضربه"
@ -2657,6 +2689,8 @@ 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 "برای شروع، شما نیاز دارید که یک کیف پول ایجاد کنید و مقداری بیتکوین تهیه کنید."
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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}} شما ابتدا باید حساب - {{email}} BitPay خود را اضافه کنید"
@ -3118,6 +3156,26 @@ msgstr "در حال پردازش انتقال به صورت Top Up..."
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
@ -3758,3 +3816,47 @@ msgstr "رایگان Bitcoin Cash"
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 "این صورت حساب دیگر پرداخت ها را نمی پذیرد"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: French\n"
"Language: fr\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "Numéro de compte"
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"
@ -206,6 +226,20 @@ 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 nest pas disponible pour le moment. Veuillez réessayer plus tard."
@ -662,6 +696,7 @@ msgstr "Copayeur {{$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"
@ -1281,6 +1316,7 @@ 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"
@ -1341,10 +1377,6 @@ 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"
@ -2168,6 +2200,10 @@ 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é"
@ -2185,7 +2221,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
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Coller l'adresse"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Transfert de portefeuille à portefeuille"
msgid "Transfer between wallets"
msgstr "Transfert entre les portefeuilles"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "Numérisez le code QR"
msgid "Send Bitcoin faster!"
msgstr "Envoyez des Bitcoin plus vite !"
#: 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"
@ -2657,6 +2689,8 @@ 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."
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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}}"
@ -3118,6 +3156,26 @@ 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
@ -3758,3 +3816,47 @@ msgstr "Bitcoin Cash Gratuit"
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 dinformations 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 naccepte plus les paiements"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Italian\n"
"Language: it\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "Numero del Conto"
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"
@ -206,6 +226,20 @@ 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."
@ -662,6 +696,7 @@ msgstr "Pagatore {{$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"
@ -1281,6 +1316,7 @@ 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"
@ -1341,10 +1377,6 @@ 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"
@ -2168,6 +2200,10 @@ 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"
@ -2185,7 +2221,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
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Incolla indirizzo"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Trasferimento da portafoglio a portafoglio"
msgid "Transfer between wallets"
msgstr "Trasferisci tra portafogli"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "Scansiona codice QR"
msgid "Send Bitcoin faster!"
msgstr "Invia Bitcoin più velocemente!"
#: 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"
@ -2657,6 +2689,8 @@ 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."
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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, devi creare un portafoglio bitcoin e ottenere qualche bitcoin."
#: 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}}"
@ -3118,6 +3156,26 @@ 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
@ -3758,3 +3816,47 @@ msgstr "Bitcoin Cash gratis"
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"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Japanese\n"
"Language: ja\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "ポケット番号"
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 "アカウント一覧"
@ -206,6 +226,20 @@ 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 は現在ご利用できません、また後でお試しください"
@ -664,6 +698,7 @@ 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 "クリップボードにコピーしました"
@ -1283,6 +1318,7 @@ 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 "送信者"
@ -1343,10 +1379,6 @@ 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 "始めよう"
@ -2170,6 +2202,10 @@ 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 "取引が承認されましたが、まだ送信していません。"
@ -2187,8 +2223,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
@ -2623,7 +2659,7 @@ msgid "Paste Address"
msgstr "アドレスをペースト"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgid "Transfer between wallets"
msgstr "ウォレット間送金"
#: www/views/tab-send.html:35
@ -2634,10 +2670,6 @@ msgstr "QRコードを読み取る"
msgid "Send Bitcoin faster!"
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 "よく使うアドレスを保存すればワンタップでビットコインを送金できます"
@ -2659,6 +2691,8 @@ 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 "はじめに、ビットコインウォレットを作成し、ビットコインを入手する必要があります。"
@ -3067,6 +3101,14 @@ 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
@ -3108,10 +3150,6 @@ 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}}"
@ -3124,6 +3162,26 @@ 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
@ -3764,3 +3822,47 @@ msgstr "無料 Bitcoin Cash"
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 "この請求書はもう支払を受け付けていません"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Korean\n"
"Language: ko\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "계정 번호"
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 "계정들"
@ -206,6 +226,20 @@ 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 "아마존에 접속할 수 없습니다. 다시 시도해주세요."
@ -662,6 +696,7 @@ 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 "클립보드에 복사 완료"
@ -1281,6 +1316,7 @@ 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 "출처"
@ -1341,10 +1377,6 @@ 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 "시작하기"
@ -2168,6 +2200,10 @@ 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 "송금을 수락했으나 아직 브로드캐스트되지 않았습니다"
@ -2185,7 +2221,7 @@ msgid "Payment details"
msgstr "결제 디테일"
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgid "Payment Request"
msgstr "결제 요구"
#: www/views/mercadoLibreCards.html:22
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "주소 붙여넣기"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "지갑 간 전송"
msgid "Transfer between wallets"
msgstr "월릿 간 전송"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "QR 코드 스캔"
msgid "Send Bitcoin faster!"
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 "자주 사용하는 주소를 저장하고 한 번의 탭으로 저장된 주소에 비트코인 전송"
@ -2657,6 +2689,8 @@ 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 "시작하시기 위해선 비트코인 지갑을 생성하시거나 비트코인을 구매하세요."
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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}}을 먼저 추가하셔야 합니다."
@ -3118,6 +3156,26 @@ msgstr "추가 지불(Top up) 진행 중..."
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
@ -3758,3 +3816,47 @@ msgstr "무료 BCH"
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 "이 청구서는 더 이상 결제를 수락하지 않습니다"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Dutch\n"
"Language: nl\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -79,7 +79,27 @@ msgstr "Account Nummer"
#: www/views/tab-home.html:61
msgid "Instant transactions with low fees"
msgstr "Directe transacties tegen lage kosten"
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"
@ -159,7 +179,7 @@ msgstr "Adresboek"
#: www/views/preferencesInformation.html:41
msgid "Address Type"
msgstr "Adres Type"
msgstr "Adrestype"
#: www/views/addresses.html:64
msgid "Addresses With Balance"
@ -183,11 +203,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 uw bitcoin portemonnee direct beschikbaar voor uitgaven."
msgstr "Mogelijk is niet het volledige saldo van je 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 meervoudige-ondertekening portemonnee voordat bitcoin adressen kunnen worden aangemaakt."
msgstr "Alle ondertekenende apparaten moeten worden toegevoegd aan deze portemonnee met meervoudige ondertekening, alvorens Bitcoin adressen kunnen worden aangemaakt."
#: www/views/tab-scan.html:21
msgid "Allow Camera Access"
@ -199,16 +219,30 @@ msgstr "Meldingen toestaan"
#: www/views/onboarding/disclaimer.html:14
msgid "Almost done! Let's review."
msgstr "Bijna klaar! Nog eens nakijken."
msgstr "Bijna klaar! Kijk alles nog eens na."
#: 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 niet beschikbaar op dit moment. Probeer het later nog eens."
msgstr "Amazon.com is op dit moment niet beschikbaar. Probeer het later nog eens."
#: www/views/amount.html:44
#: www/views/customAmount.html:34
@ -230,15 +264,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 a.u.b. naar de nieuwste versie voor uw veiligheid."
msgstr "Er is een update voor deze app beschikbaar. Update naar de nieuwste versie voor je eigen veiligheid."
#: www/views/backupWarning.html:14
msgid "Anyone with your backup phrase can access or spend your bitcoin."
msgstr "Iemand die uw herstel zin weet heeft toegang tot uw bitcoin en kan deze uitgeven."
msgstr "Iedereen die je herstelzin weet, heeft toegang tot je 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 Bitcoin netwerk transactiekosten voor overdracht van volledige saldo van portemonnee (met normale prioriteit)"
msgstr "Geschatte transactiekosten van het Bitcoin netwerk, voor het overmaken van het saldo van je portemonnee. (met normale prioriteit)"
#: www/views/backupWarning.html:10
msgid "Are you being watched?"
@ -246,40 +280,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 uw herstel zin weet heeft toegang tot uw bitcoin en kan het uitgeven."
msgstr "Kijkt er iemand mee? Iedereen die je herstelzin weet, heeft toegang tot je Bitcoin en kan deze uitgeven."
#: src/js/controllers/copayers.js:56
msgid "Are you sure you want to cancel and delete this wallet?"
msgstr "Weet u zeker dat u wilt annuleren en deze portemonnee verwijderen?"
msgstr "Weet je zeker dat je wilt annuleren en deze portemonnee verwijderen?"
#: src/js/controllers/addressbookView.js:37
msgid "Are you sure you want to delete this contact?"
msgstr "Weet u zeker dat u deze contactpersoon wilt verwijderen?"
msgstr "Weet je zeker dat je deze contactpersoon wilt verwijderen?"
#: src/js/controllers/preferencesDelete.js:25
msgid "Are you sure you want to delete this wallet?"
msgstr "Weet u zeker dat u deze portemonnee wilt verwijderen?"
msgstr "Weet je zeker dat je deze portemonnee wilt verwijderen?"
#: src/js/controllers/modals/txpDetails.js:154
msgid "Are you sure you want to reject this transaction?"
msgstr "Weet u zeker dat u deze transactie wilt afwijzen?"
msgstr "Weet je zeker dat je deze transactie wilt afwijzen?"
#: src/js/controllers/modals/txpDetails.js:171
msgid "Are you sure you want to remove this transaction?"
msgstr "Weet u zeker dat u deze transactie wilt verwijderen?"
msgstr "Weet je zeker dat je deze transactie wil verwijderen?"
#: src/js/controllers/onboarding/backupRequest.js:23
msgid "Are you sure you want to skip it?"
msgstr "Weet u zeker dat u dit wilt overslaan?"
msgstr "Weet je zeker dat je dit wil 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 u zeker dat u wilt uitloggen uit uw BitPay Kaart account?"
msgstr "Weet je zeker dat je wilt uitloggen uit je 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 u zeker dat u de BitPay Kaart ({{lastFourDigits}}) van dit apparaat wilt verwijderen?"
msgstr "Weet je zeker dat je de BitPay Kaart ({{lastFourDigits}}) van dit apparaat wilt verwijderen?"
#: www/views/includes/walletInfo.html:10
msgid "Auditable"
@ -315,11 +349,11 @@ msgstr "Back-up"
#: www/views/includes/backupNeededPopup.html:7
msgid "Backup Needed"
msgstr "Backup Nodig"
msgstr "Back-up Nodig"
#: src/js/controllers/lockSetup.js:87
msgid "Backup all livenet wallets before using this function"
msgstr "Maak een backup van alle livenet portemonnees voordat u deze functie gebruikt"
msgstr "Maak een back-up van alle livenet portemonnees voordat je deze functie gebruikt"
#: src/js/controllers/cashScan.js:64
#: www/views/includes/walletListSettings.html:12
@ -329,16 +363,16 @@ msgstr "Backup nodig"
#: www/views/includes/backupNeededPopup.html:9
msgid "Backup now"
msgstr "Backup maken"
msgstr "Back-up maken"
#: www/views/onboarding/backupRequest.html:11
#: www/views/tab-export-file.html:89
msgid "Backup wallet"
msgstr "Backup van portemonnee maken"
msgstr "Back-up van portemonnee maken"
#: src/js/controllers/lockSetup.js:84
msgid "Backup your wallet before using this function"
msgstr "Maak een backup van uw portemonnee voordat u deze functie gebruikt"
msgstr "Maak een back-up van je portemonnee alvorens je deze functie gebruikt"
#: src/js/services/profileService.js:446
msgid "Bad wallet invitation"
@ -350,7 +384,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 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."
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."
#: www/views/preferencesBitpayServices.html:9
msgid "BitPay Visa&reg; Cards"
@ -503,11 +537,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 uw computer"
msgstr "Kies een backup bestand op je computer"
#: www/views/modals/wallets.html:9
msgid "Choose your destination wallet"
msgstr "Kies uw doel portemonnee"
msgstr "Kies je bestemming portemonnee"
#: www/views/modals/wallets.html:10
msgid "Choose your source wallet"
@ -589,11 +623,11 @@ msgstr "Bevestig aankoop"
#: www/views/modals/pin.html:10
msgid "Confirm your PIN"
msgstr "Bevestig uw PIN"
msgstr "Bevestig je PIN"
#: src/js/services/walletService.js:1033
msgid "Confirm your new spending password"
msgstr "Bevestig uw nieuwe bestedingswachtwoord"
msgstr "Bevestig je nieuwe wachtwoord om te spenderen"
#: www/views/tx-details.html:98
msgid "Confirmations"
@ -626,7 +660,7 @@ msgstr "Contactpersonen"
#: www/views/tab-send.html:86
msgid "Saved frequently used addresses"
msgstr "Opgeslagen veelgebruikte adressen"
msgstr "Veelgebruikte adressen"
#: www/views/onboarding/notifications.html:9
msgid "Continue"
@ -662,6 +696,7 @@ 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"
@ -734,7 +769,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 "Kon bestand niet ontsleutelen, check uw wachtwoord"
msgstr "Het bestand kon niet worden ontsleutelt, controleer je wachtwoord"
#: src/js/controllers/modals/txpDetails.js:181
msgid "Could not delete payment proposal"
@ -940,7 +975,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 "Ziet u uw taal niet op Crowdin? Neem contact op met de Eigenaar op Crowdin! We willen graag uw taal ondersteunen."
msgstr "Zie je je eigen taal niet op Crowdin? Neem contact op met de Eigenaar op Crowdin! We willen graag jouw taal ondersteunen."
#: www/views/tab-export-file.html:59
#: www/views/tab-home.html:22
@ -957,7 +992,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 uw backup bestaand uit 12 woorden. Elke keer dat u een betaling ontvangt wordt automatisch een nieuw adres gegenereerd en getoond."
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."
#: src/js/services/feeService.js:13
msgid "Economy"
@ -986,7 +1021,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 uw apparaat instellingen om aan de slag te gaan."
msgstr "Schakel camera toegang in vanuit je apparaatinstellingen om aan de slag te gaan."
#: www/views/preferencesNotifications.html:29
msgid "Enable email notifications"
@ -1037,11 +1072,11 @@ msgstr "Vul de herstel zin in (BIP39)"
#: www/views/onboarding/collectEmail.html:13
msgid "Enter your email"
msgstr "Vul uw email in"
msgstr "Vul je e-mailadres in"
#: www/views/backup.html:69
msgid "Enter your password"
msgstr "Voer uw wachtwoord in"
msgstr "Voer je wachtwoord in"
#. Trying to import a malformed wallet export QR code
#: src/js/controllers/activity.js:45
@ -1281,6 +1316,7 @@ 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"
@ -1341,17 +1377,13 @@ 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 uw eerste toe te voegen."
msgstr "Ga aan de slag door je eerste contact toe te voegen."
#: src/js/services/onGoingProcess.js:23
msgid "Getting fee levels..."
@ -1460,7 +1492,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 uw ervaring kunnen verbeteren?"
msgstr "Hoe zouden wij jouw ervaring kunnen verbeteren?"
#: www/views/feedback/rateCard.html:3
msgid "How do you like {{appName}}?"
@ -1523,7 +1555,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 u noch BitPay uw saldo herstellen zonder backup."
msgstr "Als dit apparaat wordt vervangen of deze app wordt verwijderd, kunnen jij of BitPay je saldo niet herstellen zonder back-up."
#: 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."
@ -1531,7 +1563,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 u een screenshot neemt kunnen andere apps uw backup zien. U kunt een veilige backup maken met fysieke pen en papier."
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."
#: www/views/tab-import-hardware.html:42
#: www/views/tab-import-phrase.html:80
@ -1556,7 +1588,7 @@ msgstr "Portemonnee importeren..."
#: www/views/backup.html:72
msgid "In order to verify your wallet backup, please type your password."
msgstr "Vul uw wachtwoord in om de backup van uw portemonnee te verifiëren."
msgstr "Vul je wachtwoord in om de back-up van je portemonnee te verifiëren."
#: www/views/mercadoLibreCards.html:24
#: www/views/modals/mercadolibre-card-details.html:29
@ -1660,7 +1692,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 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."
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."
#: www/views/join.html:151
msgid "Join"
@ -1668,7 +1700,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}} U kunt {{appName}} voor uw telefoon of desktop hier downloaden {{appUrl}}"
msgstr "Neem deel aan mijn {{appName}} Portemonnee. Hier is de uitnodigingscode: {{secret}} Je kunt {{appName}} voor je telefoon of desktop hier downloaden {{appUrl}}"
#: www/views/add.html:30
#: www/views/join.html:5
@ -1705,7 +1737,7 @@ msgstr "Meer informatie"
#: www/views/backup.html:43
msgid "Let's verify your backup phrase."
msgstr "Laten we de backup zin verifiëren."
msgstr "Laten we uw back-up zin verifiëren."
#: www/views/addresses.html:45
#: www/views/allAddresses.html:14
@ -1994,11 +2026,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 backup van de portemonnee te maken. Als dit apparaat kwijt raakt is het onmogelijk om toegang tot uw saldo te krijgen zonder een 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."
#: 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 uw omgeving te bekijken. Ramen in de buurt? Verborgen camera's? Kijkt er iemand mee over uw schouder?"
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?"
#: src/js/controllers/buyAmazon.js:312
#: src/js/controllers/topup.js:286
@ -2032,7 +2064,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 ziet u al uw portemonnees, accounts en eigendommen."
msgstr "Op dit scherm zie je al je portemonnees, accounts en eigendommen."
#: src/js/controllers/bitpayCard.js:113
#: src/js/controllers/cashScan.js:19
@ -2105,7 +2137,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 uw wachtwoord in bij de geavanceerde opties"
msgstr "Wachtwoord vereist. Vul je wachtwoord in bij de geavanceerde opties"
#: www/views/join.html:33
msgid "Paste invitation here"
@ -2168,6 +2200,10 @@ 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"
@ -2185,8 +2221,8 @@ msgid "Payment details"
msgstr "Details Betaling"
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgstr "Betalingsverzoek"
msgid "Payment Request"
msgstr "Betaalverzoek"
#: www/views/mercadoLibreCards.html:22
#: www/views/modals/mercadolibre-card-details.html:39
@ -2224,7 +2260,7 @@ msgstr "Vul de herstel zin van de portemonnee in"
#: www/views/modals/pin.html:9
msgid "Please enter your PIN"
msgstr "Vul uw PIN in"
msgstr "Vul je PIN in"
#: www/views/backup.html:53
msgid "Please tap each word in the correct order."
@ -2241,7 +2277,7 @@ msgstr "Een moment geduld a.u.b."
#: src/js/controllers/import.js:238
msgid "Please, select your backup file"
msgstr "Selecteer uw backup bestand"
msgstr "Selecteer je back-upbestand"
#: www/views/bitpayCard.html:81
msgid "Pre-Auth Holds"
@ -2437,7 +2473,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 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?"
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?"
#: www/views/join.html:116
#: www/views/join.html:124
@ -2512,11 +2548,11 @@ msgstr "Scan nogmaals"
#: src/js/services/fingerprintService.js:56
msgid "Scan your fingerprint please"
msgstr "Scan uw vingerafdruk"
msgstr "Scan je vingerafdruk a.u.b."
#: www/views/preferencesCash.html:23
msgid "Scan your wallets for Bitcoin Cash"
msgstr "Scannen naar Bitcoin Cash in uw portemonnees"
msgstr "Scan je portemonnees voor Bitcoin Cash"
#: src/js/services/onGoingProcess.js:30
msgid "Scanning Wallet funds..."
@ -2544,7 +2580,7 @@ msgstr "Klembord"
#: src/js/controllers/tab-send.js:29
msgid "Your Clipboard is empty"
msgstr "Uw klembord is leeg"
msgstr "Je klembord is leeg"
#: www/views/modals/search.html:16
msgid "Search transactions"
@ -2552,7 +2588,7 @@ msgstr "Doorzoek transacties"
#: www/views/preferencesAltCurrency.html:14
msgid "Search your currency"
msgstr "Zoek uw valuta"
msgstr "Zoek je valuta"
#: www/views/preferences.html:30
msgid "Security"
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Adres plakken"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Portemonnee overdracht"
msgid "Transfer between wallets"
msgstr "Overdracht tussen portemonnees"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,21 +2668,17 @@ msgstr "Scan QR-code"
msgid "Send Bitcoin faster!"
msgstr "Stuur Bitcoin sneller!"
#: 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 "Uw eerste contact toevoegen"
msgstr "Je eerste contact toevoegen"
#: www/views/tab-send.html:65
msgid "Your Bitcoin wallet is empty"
msgstr "Uw Bitcoin portemonnee is leeg"
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."
@ -2657,6 +2689,8 @@ 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."
@ -2705,7 +2739,7 @@ msgstr "Transactie verzenden"
#: src/js/controllers/confirm.js:545
msgid "Sending {{amountStr}} from your {{name}} wallet"
msgstr "Verzenden van {{amountStr}} vanuit uw {{name}} portemonnee"
msgstr "Verzenden van {{amountStr}} vanuit je portemonnee '{{name}}'"
#: www/views/includes/walletHistory.html:42
#: www/views/modals/tx-status.html:9
@ -2745,7 +2779,7 @@ msgstr "Stel wachtwoord in"
#: src/js/controllers/preferencesFee.js:85
msgid "Set your own fee in satoshis/byte"
msgstr "Kies uw eigen transactiekosten in satoshi/byte"
msgstr "Kies je eigen transactiekosten in satoshi/byte"
#: www/views/tab-settings.html:3
#: www/views/tabs.html:19
@ -2905,7 +2939,7 @@ msgstr "DEZE ACTIE IS ONOMKEERBAAR"
#: www/views/onboarding/welcome.html:5
msgid "Take control of your money,<br>get started with bitcoin."
msgstr "Neem controle over uw geld,<br>aan de slag met bitcoin."
msgstr "Neem de controle over je geld,<br>aan de slag met Bitcoin."
#: www/views/walletDetails.html:132
#: www/views/walletDetails.html:52
@ -2953,7 +2987,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 uw ervaring verbeteren?"
msgstr "Dat is goed om te horen. Wij zouden graag die vijfde ster verdienen - hoe kunnen wij jouw ervaring verbeteren?"
#: src/js/services/ledger.js:152
msgid "The Ledger Chrome application is not installed"
@ -2965,7 +2999,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."
@ -2985,7 +3019,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 uw ongebruikte adressen een betaling ontvangt zal een nieuw adres worden gegenereerd en worden getoond in het tabblad Ontvangen."
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."
#: src/js/controllers/onboarding/terms.js:21
msgid "The official English Terms of Service are available on the BitPay website."
@ -3055,17 +3089,25 @@ 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 is er geen mogelijkheid om toegang tot uw saldo te herstellen."
msgstr "Dit wachtwoord kan niet worden achterhaald. Als het wachtwoord verloren gaat, dan is er geen mogelijkheid om toegang tot jouw 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."
@ -3100,15 +3142,11 @@ 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 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 aan moeten maken en wat Bitcoin moeten verkrijgen."
msgstr "Om aan de slag te gaan, koop je Bitcoin of deel je je adres. Je kunt Bitcoin ontvangen van elke portemonnee of dienst."
#: src/js/services/bitpayAccountService.js:73
msgid "To {{reason}} you must first add your BitPay account - {{email}}"
msgstr "Om {{reason}} zult u eerst uw BitPay account moeten toevoegen - {{email}}"
msgstr "Om {{reason}} zult je eerst uw BitPay account moeten toevoegen - {{email}}"
#: src/js/services/onGoingProcess.js:48
msgid "Top up in progress..."
@ -3118,6 +3156,26 @@ 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
@ -3252,7 +3310,7 @@ msgstr "Herstel zin valideren..."
#: www/views/modals/fingerprintCheck.html:4
msgid "Verify your identity"
msgstr "Verifieer uw identiteit"
msgstr "Verifieër je identiteit"
#: www/views/preferencesAbout.html:14
#: www/views/preferencesExternal.html:25
@ -3449,7 +3507,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 uw herstel zin 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 je herstelzin in te voeren"
#: www/views/backup.html:12
msgid "Wallet recovery phrase not available"
@ -3494,7 +3552,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 uw ervaring verbeteren?"
msgstr "Wij zoeken altijd naar manieren om {{appName}} te verbeteren. Hoe kunnen wij jouw ervaring verbeteren?"
#: www/views/includes/incomingDataMenu.html:6
msgid "Website"
@ -3546,7 +3604,7 @@ msgstr "Ja, overslaan"
#: src/js/controllers/onboarding/backupRequest.js:24
msgid "You can create a backup later from your wallet settings."
msgstr "U kunt later een backup maken vanuit uw portemonnee instellingen."
msgstr "Je kunt later een back-up 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. Were looking forward to hearing from you!"
@ -3574,7 +3632,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 "U heeft de controle over uw bitcoin."
msgstr "Jij hebt de controle over jouw Bitcoin."
#: www/views/modals/chooseFeeLevel.html:64
msgid "You should not set a fee higher than {{maxFeeRecommended}} satoshis/byte."
@ -3582,65 +3640,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 "U zult opnieuw moeten inloggen om uw BitPay Kaart op te laden."
msgstr "Je zult opnieuw moeten inloggen om je 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 email meldingen ontvangen over verzonden en ontvangen betalingen van uw portemonnee."
msgstr "U zult e-mail meldingen ontvangen over verzonden en ontvangen betalingen van jouw 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 "Uw BitPay Kaart is gereed. Voeg saldo toe aan uw kaart om deze te kunnen gebruiken in winkels en pinautomaten over de hele wereld."
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."
#: www/views/mercadoLibre.html:57
#: www/views/mercadoLibreCards.html:6
msgid "Your Gift Cards"
msgstr "Uw Cadeaubonnen"
msgstr "Je Cadeaubonnen"
#: www/views/includes/confirmBackupPopup.html:6
msgid "Your bitcoin wallet is backed up!"
msgstr "Er is een backup gemaakt van uw bitcoin portemonnee!"
msgstr "Er is een backup gemaakt van je Bitcoin portemonnee!"
#: www/views/tab-home.html:36
msgid "Your bitcoin wallet is ready!"
msgstr "Uw bitcoin portemonnee is gereed!"
msgstr "Je Bitcoin portemonnee is gereed!"
#: www/views/modals/chooseFeeLevel.html:61
msgid "Your fee is lower than recommended."
msgstr "Uw gekozen transactiekosten zijn lager dan aangeraden."
msgstr "Je gekozen transactiekosten zijn lager dan aangeraden."
#: www/views/feedback/send.html:42
msgid "Your ideas, feedback, or comments"
msgstr "Uw ideeën, feedback of opmerkingen"
msgstr "Je ideeën, feedback of opmerkingen"
#: www/views/tab-create-shared.html:22
msgid "Your name"
msgstr "Uw naam"
msgstr "Je naam"
#: www/views/join.html:16
msgid "Your nickname"
msgstr "Uw bijnaam"
msgstr "Je bijnaam"
#: www/views/tab-export-file.html:11
#: www/views/tab-import-file.html:20
msgid "Your password"
msgstr "Uw wachtwoord"
msgstr "Je wachtwoord"
#: www/views/buyAmazon.html:102
msgid "Your purchase could not be completed"
msgstr "Uw aankoop kon niet worden voltooid"
msgstr "Je aankoop kon niet worden voltooid"
#: www/views/buyAmazon.html:105
msgid "Your purchase was added to the list of pending"
msgstr "Uw aankoop is op de in-behandeling lijst gezet"
msgstr "Je 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 "Uw portemonnee wordt nooit opgeslagen in de cloud of in standaard apparaat backups."
msgstr "Je portemonnee wordt nooit opgeslagen in de cloud of in standaard apparaat back-ups."
#: 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 "Uw privé sleutel wordt versleuteld. Het Bestedingswachtwoord kan niet worden achterhaald, schrijf deze zorgvuldig op."
msgstr "Je privésleutel wordt versleuteld. Het wachtwoord voor besteden kan niet worden achterhaald, schrijf deze zorgvuldig op."
#: www/views/includes/walletList.html:13
#: www/views/includes/walletSelector.html:21
@ -3658,7 +3716,7 @@ msgstr "[Saldo Scannen]"
#: src/js/controllers/bitpayCardIntro.js:11
msgid "add your BitPay Visa card(s)"
msgstr "voeg uw BitPay Visa kaart(en) toe"
msgstr "voeg je BitPay Visa kaart(en) toe"
#: www/views/includes/available-balance.html:8
msgid "locked by pending payments"
@ -3716,7 +3774,7 @@ msgstr "Shapeshift"
#: www/views/includes/community.html:3
msgid "Community"
msgstr "Community"
msgstr "Gemeenschap"
#: src/js/services/communityService.js:40
msgid "Bitcoin Cash Reddit"
@ -3756,5 +3814,49 @@ msgstr "Gratis Bitcoin Cash"
#: www/views/tab-home.html:30
msgid "Your Bitcoin Wallets are ready!"
msgstr "Uw bitcoin portemonnee is gereed!"
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"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Polish\n"
"Language: pl\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:40\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "Numer konta"
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"
@ -206,6 +226,20 @@ 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."
@ -662,6 +696,7 @@ 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"
@ -1281,6 +1316,7 @@ 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"
@ -1341,10 +1377,6 @@ 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"
@ -2168,6 +2200,10 @@ 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"
@ -2185,7 +2221,7 @@ 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
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Wklej adres"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Transfer z portfela do portfela"
msgid "Transfer between wallets"
msgstr "Transfer między portfelami"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "Zeskanuj kod QR"
msgid "Send Bitcoin faster!"
msgstr "Przesyłaj Bitcoiny szybciej!"
#: 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"
@ -2657,6 +2689,8 @@ 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."
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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}}"
@ -3118,6 +3156,26 @@ msgstr "Doładowanie w trakcie..."
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."
#: www/views/buyAmazon.html:61
#: www/views/buyMercadoLibre.html:60
#: www/views/modals/wallet-balance.html:23
@ -3758,3 +3816,47 @@ msgstr "Darmowa Bitcoin Cash"
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"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:40\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "Número de conta"
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"
@ -206,6 +226,20 @@ 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."
@ -662,6 +696,7 @@ 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"
@ -1281,6 +1316,7 @@ 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"
@ -1341,10 +1377,6 @@ 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"
@ -2168,6 +2200,10 @@ 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"
@ -2185,7 +2221,7 @@ msgid "Payment details"
msgstr "Detalhes do pagamento"
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgid "Payment Request"
msgstr "Pedido de pagamento"
#: www/views/mercadoLibreCards.html:22
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Colar endereço"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Transferência de carteira para carteira"
msgid "Transfer between wallets"
msgstr "Transferência entre carteiras"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "Digitalizar o código QR"
msgid "Send Bitcoin faster!"
msgstr "Envie Bitcoin mais rápido!"
#: 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"
@ -2657,6 +2689,8 @@ 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."
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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ê precisará criar uma carteira e obter algum bitcoin."
#: 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}}"
@ -3118,6 +3156,26 @@ 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
@ -3758,3 +3816,47 @@ msgstr "Bitcoin Cash grátis"
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"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Russian\n"
"Language: ru\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:40\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "Номер учётной записи"
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 "Аккаунты"
@ -206,6 +226,20 @@ 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 сейчас недоступен. Попробуйте позже."
@ -662,6 +696,7 @@ 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 "Скопировано в буфер обмена"
@ -1281,6 +1316,7 @@ 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 "От"
@ -1341,10 +1377,6 @@ 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 "Начать"
@ -2168,6 +2200,10 @@ 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 "Платёж принят, но пока не отправлен"
@ -2185,7 +2221,7 @@ msgid "Payment details"
msgstr "Детали платежа"
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgid "Payment Request"
msgstr "Запрос платежа"
#: www/views/mercadoLibreCards.html:22
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "Вставить адрес"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "Перевод с кошелька на кошелек"
msgid "Transfer between wallets"
msgstr "Перевод между кошельками"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "Сканировать QR код"
msgid "Send Bitcoin faster!"
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 "Сохраняйте часто используемые адреса кошельков и отправляйте на них биткойны одним нажатием"
@ -2657,6 +2689,8 @@ 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 "Чтобы начать работу, вам нужно создать кошелёк и получить биткойн."
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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}}"
@ -3118,6 +3156,26 @@ 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
@ -3758,3 +3816,47 @@ msgstr "Bitcoin Cash бесплатно"
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 "По этому инвойсу платежи больше не принимаются"

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Swedish\n"
"Language: sv\n"
"PO-Revision-Date: 2018-07-27 08:44\n"
"PO-Revision-Date: 2018-08-21 03:40\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -41,7 +41,7 @@ msgstr "Fem stjärnor hjälper oss att göra {{appName}} bättre och mer åtkoml
#: www/views/mercadoLibre.html:18
#: www/views/mercadoLibre.html:40
msgid "<b>Only</b> redeemable on Mercado Livre (Brazil)"
msgstr ""
msgstr "<b>Only</b> redeemable on Mercado Livre (Brazil)"
#: src/js/controllers/feedback/send.js:27
#: www/views/feedback/complete.html:21
@ -79,7 +79,27 @@ msgstr "Kontonummer"
#: www/views/tab-home.html:61
msgid "Instant transactions with low fees"
msgstr ""
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"
@ -199,13 +219,27 @@ msgstr "Tillåt notificationer"
#: www/views/onboarding/disclaimer.html:14
msgid "Almost done! Let's review."
msgstr ""
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."
@ -359,7 +393,7 @@ msgstr ""
#: www/views/addressbook.add.html:38
#: www/views/includes/incomingDataMenu.html:29
msgid "Bitcoin Address"
msgstr ""
msgstr "Bitcoin-adress"
#: www/views/cashScan.html:4
msgid "Bitcoin Cash (BCH) Balances"
@ -392,7 +426,7 @@ msgstr ""
#: www/views/onboarding/tour.html:31
msgid "Bitcoin is a currency."
msgstr ""
msgstr "Bitcoin är en valuta."
#: www/views/onboarding/disclaimer.html:15
msgid "Bitcoin is different &ndash; it cannot be safely held with a bank or web service."
@ -412,7 +446,7 @@ msgstr ""
#: www/views/modals/txp-details.html:36
msgid "Broadcast Payment"
msgstr ""
msgstr "Sänd betalning"
#: src/js/controllers/modals/txpDetails.js:64
#: src/js/controllers/tx-details.js:81
@ -421,16 +455,16 @@ msgstr ""
#: src/js/services/onGoingProcess.js:11
msgid "Broadcasting transaction"
msgstr ""
msgstr "Sänder transaktion"
#: www/views/unsupported.html:6
msgid "Browser unsupported"
msgstr ""
msgstr "Webbläsaren stöds inte"
#: www/views/buyAmazon.html:5
#: www/views/buyMercadoLibre.html:6
msgid "Buy"
msgstr ""
msgstr "Köp"
#: www/views/includes/buyAndSellCard.html:3
msgid "Buy &amp; Sell Bitcoin"
@ -439,16 +473,16 @@ msgstr ""
#: www/views/tab-send.html:35
#: src/js/services/buyAndSellService.js:26
msgid "Buy Bitcoin"
msgstr ""
msgstr "Köp Bitcoin"
#: www/views/mercadoLibre.html:22
#: www/views/mercadoLibre.html:50
msgid "Buy a Gift Card"
msgstr ""
msgstr "Köp ett presentkort"
#: src/js/controllers/buyAmazon.js:334
msgid "Buy from"
msgstr ""
msgstr "Köp från"
#: src/js/services/onGoingProcess.js:40
msgid "Buying Bitcoin..."
@ -456,7 +490,7 @@ msgstr ""
#: src/js/services/onGoingProcess.js:12
msgid "Calculating fee"
msgstr ""
msgstr "Beräknar avgift"
#: src/js/controllers/buyAmazon.js:313
#: src/js/controllers/buyMercadoLibre.js:307
@ -475,15 +509,15 @@ msgstr ""
#: www/views/modals/bitpay-card-confirmation.html:8
#: www/views/modals/confirmation.html:13
msgid "Cancel"
msgstr ""
msgstr "Avbryt"
#: www/views/copayers.html:36
msgid "Cancel invitation"
msgstr ""
msgstr "Avbryt inbjudan"
#: src/js/controllers/onboarding/tour.js:52
msgid "Cannot Create Wallet"
msgstr ""
msgstr "Kan inte skapa plånbok"
#: src/js/services/profileService.js:442
msgid "Cannot join the same wallet more that once"
@ -491,19 +525,19 @@ msgstr ""
#: www/views/includes/bitpayCardsCard.html:2
msgid "Cards"
msgstr ""
msgstr "Kort"
#: www/views/modals/paypro.html:30
msgid "Certified by"
msgstr ""
msgstr "Certifierad av"
#: www/views/preferencesExternal.html:19
msgid "Check installation and retry."
msgstr ""
msgstr "Kontrollera installationen och försök igen."
#: www/views/tab-import-file.html:4
msgid "Choose a backup file from your computer"
msgstr ""
msgstr "Välj en backup-fil från din dator"
#: www/views/modals/wallets.html:9
msgid "Choose your destination wallet"
@ -662,6 +696,7 @@ 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 ""
@ -1281,6 +1316,7 @@ 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 ""
@ -1341,10 +1377,6 @@ 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 ""
@ -2168,6 +2200,10 @@ 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 ""
@ -2185,7 +2221,7 @@ msgid "Payment details"
msgstr ""
#: www/views/modals/paypro.html:6
msgid "Payment request"
msgid "Payment Request"
msgstr ""
#: www/views/mercadoLibreCards.html:22
@ -2621,7 +2657,7 @@ msgid "Paste Address"
msgstr ""
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgid "Transfer between wallets"
msgstr ""
#: www/views/tab-send.html:35
@ -2632,10 +2668,6 @@ msgstr ""
msgid "Send Bitcoin faster!"
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 ""
@ -2657,6 +2689,8 @@ 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 ""
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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 ""
@ -3118,6 +3156,26 @@ msgstr ""
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
@ -3758,3 +3816,47 @@ msgstr ""
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 ""

View file

@ -511,7 +511,7 @@ msgid "Cannot Create Wallet"
msgstr ""
#: src/js/services/profileService.js:442
msgid "Cannot join the same wallet more that once"
msgid "Cannot join the same wallet more than once"
msgstr ""
#: www/views/includes/bitpayCardsCard.html:2
@ -3874,4 +3874,27 @@ msgstr ""
#: www/views/paperWallet.html:104
msgid "No Bitcoin Core found."
#: 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 ""

File diff suppressed because it is too large Load diff

View file

@ -11,7 +11,7 @@ msgstr ""
"Last-Translator: emilold\n"
"Language-Team: Chinese Simplified\n"
"Language: zh\n"
"PO-Revision-Date: 2018-07-27 08:43\n"
"PO-Revision-Date: 2018-08-21 03:39\n"
#: www/views/modals/paypro.html:34
msgid "(Trusted)"
@ -81,6 +81,26 @@ msgstr "帐号"
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 "帐户"
@ -206,6 +226,20 @@ 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 "亚马逊服务器暂时无法访问,请稍候再试。"
@ -662,6 +696,7 @@ 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 "已复制到剪贴板"
@ -1281,6 +1316,7 @@ 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 "来自"
@ -1341,10 +1377,6 @@ 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 "马上体验"
@ -2168,6 +2200,10 @@ 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 "支付已被接受,但尚未广播"
@ -2185,8 +2221,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
@ -2621,8 +2657,8 @@ msgid "Paste Address"
msgstr "粘贴地址"
#: www/views/tab-send.html:27
msgid "Wallet to Wallet Transfer"
msgstr "钱包转账"
msgid "Transfer between wallets"
msgstr "钱包之间转账"
#: www/views/tab-send.html:35
msgid "Scan QR Code"
@ -2632,10 +2668,6 @@ msgstr "扫描二维码"
msgid "Send Bitcoin faster!"
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 "保存常用地址,只需点击一下即可将比特币发送到这些地址"
@ -2657,6 +2689,8 @@ 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 "若要开始,您将需要创建一个比特币的钱包,并获得一些比特币。"
@ -3061,6 +3095,14 @@ 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
@ -3102,10 +3144,6 @@ 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}}"
@ -3118,6 +3156,26 @@ 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
@ -3758,3 +3816,47 @@ msgstr "免费的 Bitcoin Cash"
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 "此发票不再接受付款"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

View file

@ -178,11 +178,17 @@ def codesign_app(config, args):
plistlib.writePlist(child_entitlements, tmp_child_entitlements)
info('Child entitlements: %s' % tmp_child_entitlements)
framework = glob(args.output, 'nwjs Framework.framework', returnOnFound=True)
system('codesign -f --verbose -s "%s" --entitlements %s --deep "%s"' % (identity, tmp_child_entitlements, framework))
helperApp = glob(args.output, 'nwjs Helper.app', returnOnFound=True)
system('codesign -f --verbose -s "%s" --entitlements %s --deep "%s"' % (identity, tmp_child_entitlements, helperApp))
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'):

View file

@ -5,7 +5,9 @@
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.application-groups</key>
<string>$GROUPID</string>
<array>
<string>299HJ3G3BP.com.bitcoin.mwallet.mac</string>
</array>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.security.network.client</key>

View file

@ -19,7 +19,8 @@ var modules = [
'copayApp.controllers',
'copayApp.directives',
'copayApp.addons',
'bitcoincom.directives'
'bitcoincom.directives',
'bitcoincom.services'
];
var copayApp = window.copayApp = angular.module('copayApp', modules);
@ -30,3 +31,4 @@ angular.module('copayApp.controllers', []);
angular.module('copayApp.directives', []);
angular.module('copayApp.addons', []);
angular.module('bitcoincom.directives', []);
angular.module('bitcoincom.services', []);

View file

@ -21,28 +21,14 @@ angular.module('copayApp.controllers').controller('addressbookViewController', f
});
$scope.sendTo = function() {
$ionicHistory.removeBackView();
sendFlowService.clear();
$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;
}
var stateParams = {
data: $scope.addressbookEntry.address,
toName: $scope.addressbookEntry.name,
toEmail: $scope.addressbookEntry.email,
coin: $scope.addressbookEntry.coin
};
var stateParams = {
toAddress: to,
toName: $scope.addressbookEntry.name,
toEmail: $scope.addressbookEntry.email,
coin: $scope.addressbookEntry.coin
};
sendFlowService.pushState(stateParams);
$state.transitionTo('tabs.send.origin');
}, 100);
sendFlowService.start(stateParams);
};
$scope.remove = function(addressbookEntry) {

View file

@ -68,13 +68,14 @@ function amountController(configService, $filter, gettextCatalog, $ionicHistory,
function onBeforeEnter(event, data) {
if (data.direction == "back") {
sendFlowService.popState();
sendFlowService.state.pop();
}
console.log('amount onBeforeEnter after back sendflow ', sendFlowService.state);
initCurrencies();
passthroughParams = sendFlowService.getStateClone();
passthroughParams = sendFlowService.state.getClone();
console.log('amount onBeforeEnter after back sendflow ', passthroughParams);
vm.fromWalletId = passthroughParams.fromWalletId;
vm.toWalletId = passthroughParams.toWalletId;
@ -214,7 +215,7 @@ function amountController(configService, $filter, gettextCatalog, $ionicHistory,
}
function goBack() {
$ionicHistory.goBack();
sendFlowService.router.goBack();
}
function paste(value) {
@ -467,11 +468,10 @@ function amountController(configService, $filter, gettextCatalog, $ionicHistory,
confirmData.thirdParty = vm.thirdParty;
}
sendFlowService.pushState(confirmData);
if (!confirmData.fromWalletId) {
$state.transitionTo('tabs.paymentRequest.confirm', confirmData);
} else {
$state.transitionTo('tabs.send.review', confirmData);
sendFlowService.goNext(confirmData);
$scope.useSendMax = null;
}
}

View file

@ -7,6 +7,8 @@ describe('amountController', function(){
platformInfo,
profileService,
rateService,
sendFlowService,
shapeshiftService,
$stateParams;
@ -39,9 +41,11 @@ describe('amountController', function(){
isIos: true
};
profileService = jasmine.createSpyObj(['getWallets']);
profileService = jasmine.createSpyObj(['getWallet', 'getWallets']);
rateService = jasmine.createSpyObj(['fromFiat', 'whenAvailable']);
sendFlowService = jasmine.createSpyObj(['getStateClone']);
shapeshiftService = jasmine.createSpyObj(['shiftIt']);
$stateParams = {};
@ -61,6 +65,11 @@ describe('amountController', function(){
stateName: 'ignoreme'
};
$ionicHistory.backView.and.returnValue(backView);
var wallet = {
};
profileService.getWallet.and.returnValue(wallet);
profileService.getWallets.and.returnValue([{}]);
rateService.fromFiat.and.returnValue(12); // satoshis or coins?
@ -80,22 +89,25 @@ describe('amountController', function(){
popupService: {},
rateService: rateService,
$scope: $scope,
sendFlowService: sendFlowService,
shapeshiftService: shapeshiftService,
$state: {},
$stateParams: $stateParams,
txFormatService: {},
walletService: {}
});
var data = {
stateParams: {
fromWalletId: 'fd56c1e7-e3ac-4fd9-8afc-27b9c1b3718b',
toAddress: 'qrup46avn8t466xxwlzs4qelht7cnwvesv2e29wf7s'
}
var sendFlowState = {
fromWalletId: 'fd56c1e7-e3ac-4fd9-8afc-27b9c1b3718b',
toAddress: 'qrup46avn8t466xxwlzs4qelht7cnwvesv2e29wf7s'
};
$scope.$emit('$ionicView.beforeEnter', data);
expect($scope.fromWalletId).toBe('fd56c1e7-e3ac-4fd9-8afc-27b9c1b3718b');
expect($scope.toAddress).toBe('qrup46avn8t466xxwlzs4qelht7cnwvesv2e29wf7s');
sendFlowService.getStateClone.and.returnValue(sendFlowState);
$scope.$emit('$ionicView.beforeEnter', {});
//expect($scope.fromWalletId).toBe('fd56c1e7-e3ac-4fd9-8afc-27b9c1b3718b');
//expect($scope.toAddress).toBe('qrup46avn8t466xxwlzs4qelht7cnwvesv2e29wf7s');
});
});

View file

@ -80,7 +80,7 @@ function reviewController(addressbookService, bitcoinCashJsService, bitcore, bit
function onBeforeEnter(event, data) {
console.log('walletSelector onBeforeEnter sendflow ', sendFlowService.state);
defaults = configService.getDefaults();
sendFlowData = sendFlowService.getStateClone();
sendFlowData = sendFlowService.state.getClone();
originWalletId = sendFlowData.fromWalletId;
satoshis = parseInt(sendFlowData.amount, 10);
toAddress = sendFlowData.toAddress;
@ -403,7 +403,7 @@ function reviewController(addressbookService, bitcoinCashJsService, bitcore, bit
}
function goBack() {
$ionicHistory.goBack();
sendFlowService.router.goBack();
}
function handleDestinationAsAddress(address, originCoin) {
@ -766,8 +766,12 @@ function reviewController(addressbookService, bitcoinCashJsService, bitcore, bit
((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');
}

View file

@ -6,22 +6,6 @@ angular.module('copayApp.controllers').controller('shapeshiftController', functi
$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.$on("$ionicView.beforeEnter", function(event, data) {
walletsBtc = profileService.getWallets({coin: 'btc'});
walletsBch = profileService.getWallets({coin: 'bch'});
@ -62,18 +46,7 @@ angular.module('copayApp.controllers').controller('shapeshiftController', functi
id: 'shapeshift'
}
};
// Starting new send flow, so ensure everything is reset
sendFlowService.clear();
$state.go('tabs.home').then(function() {
$ionicHistory.clearHistory();
$state.go('tabs.send').then(function() {
$timeout(function () {
sendFlowService.pushState(stateParams);
$state.transitionTo('tabs.send.origin');
}, 60);
});
});
sendFlowService.start(stateParams);
}
function showMyAddress() {

View file

@ -122,8 +122,7 @@ angular.module('copayApp.controllers').controller('tabHomeController',
};
$scope.startFreshSend = function() {
sendFlowService.clear();
$state.go('tabs.send');
sendFlowService.start();
}
$scope.openExternalLink = function() {

View file

@ -18,10 +18,10 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi
$scope.displayBalanceAsFiat = true;
$scope.requestSpecificAmount = function() {
sendFlowService.pushState({
toWalletId: $scope.wallet.credentials.walletId
sendFlowService.start({
toWalletId: $scope.wallet.credentials.walletId,
isRequestAmount: true
});
$state.go('tabs.paymentRequest.amount');
};
$scope.setAddress = function(newAddr, copyAddress) {

View file

@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.controllers').controller('tabScanController', function($scope, $log, $timeout, scannerService, incomingData, $state, $ionicHistory, $rootScope, $ionicNavBarDelegate) {
angular.module('copayApp.controllers').controller('tabScanController', function(gettextCatalog, popupService, $scope, $log, $timeout, scannerService, incomingDataService, $state, $ionicHistory, $rootScope, $ionicNavBarDelegate) {
var scannerStates = {
unauthorized: 'unauthorized',
@ -111,7 +111,18 @@ angular.module('copayApp.controllers').controller('tabScanController', function(
// Sometimes (testing in Chrome, when reading QR Code) data is an object
// that has a string data.result.
contents = contents.result || contents;
incomingData.redir(contents);
incomingDataService.redir(contents, function onError(err) {
if (err) {
var title = gettextCatalog.getString('Scan Failed');
popupService.showAlert(title, err.message, function onAlertShown() {
// Enable another scan since we won't receive incomingDataMenu.menuHidden
activate();
});
} else {
scannerService.resumePreview();
}
});
}
$rootScope.$on('incomingDataMenu.menuHidden', function() {

View file

@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.controllers').controller('tabSendController', function($scope, $rootScope, $log, $timeout, $ionicScrollDelegate, $ionicLoading, addressbookService, profileService, lodash, $state, walletService, incomingData, popupService, platformInfo, sendFlowService, bwcError, gettextCatalog, scannerService, configService, bitcoinCashJsService, $ionicPopup, $ionicNavBarDelegate, clipboardService) {
angular.module('copayApp.controllers').controller('tabSendController', function(bitcoinUriService, $scope, $log, $timeout, $ionicScrollDelegate, addressbookService, profileService, lodash, $state, walletService, platformInfo, sendFlowService, gettextCatalog, configService, $ionicPopup, $ionicNavBarDelegate, clipboardService, incomingDataService) {
var clipboardHasAddress = false;
var clipboardHasContent = false;
var originalList;
@ -29,7 +29,7 @@ angular.module('copayApp.controllers').controller('tabSendController', function(
$scope.$on("$ionicView.enter", function(event, data) {
var stateParams = sendFlowService.getStateClone();
var stateParams = sendFlowService.state.getClone();
$scope.fromWallet = profileService.getWallet(stateParams.fromWalletId);
clipboardService.readFromClipboard(function(text) {
@ -39,7 +39,9 @@ angular.module('copayApp.controllers').controller('tabSendController', function(
$scope.clipboardHasAddress = false;
$scope.clipboardHasContent = false;
if ((text.indexOf('bitcoincash:') === 0 || text[0] === 'C' || text[0] === 'H' || text[0] === 'p' || text[0] === 'q') && text.replace('bitcoincash:', '').length === 42) { // CashAddr
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;
@ -60,11 +62,6 @@ angular.module('copayApp.controllers').controller('tabSendController', function(
});
$scope.findContact = function(search) {
if (incomingData.redir(search)) {
return;
}
if (!search || search.length < 1) {
$scope.list = originalList;
$timeout(function() {
@ -73,12 +70,16 @@ angular.module('copayApp.controllers').controller('tabSendController', function(
return;
}
var result = lodash.filter(originalList, function(item) {
var val = item.name;
return lodash.startsWith(val.toLowerCase(), search.toLowerCase());
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;
});
$scope.list = result;
};
var hasWallets = function() {
@ -184,27 +185,18 @@ angular.module('copayApp.controllers').controller('tabSendController', function(
$log.debug('Got toAddress:' + toAddress + ' | ' + item.name);
var stateParams = sendFlowService.getStateClone();
stateParams.toAddress = toAddress,
var stateParams = sendFlowService.state.getClone();
stateParams.toAddress = toAddress;
stateParams.coin = item.coin;
sendFlowService.pushState(stateParams);
if (!stateParams.fromWalletId) { // If we have no toAddress or fromWallet
$state.transitionTo('tabs.send.origin');
} else {
$state.transitionTo('tabs.send.amount');
}
sendFlowService.start(stateParams);
});
};
$scope.startWalletToWalletTransfer = function() {
console.log('startWalletToWalletTransfer()');
var params = sendFlowService.getStateClone();
sendFlowService.pushState(params);
$state.transitionTo('tabs.send.wallet-to-wallet', {
fromWalletId: sendFlowService.fromWalletId
});
var params = sendFlowService.state.getClone();
params.isWalletTransfer = true;
sendFlowService.start(params);
}
// This could probably be enhanced refactoring the routes abstract states
@ -238,7 +230,7 @@ angular.module('copayApp.controllers').controller('tabSendController', function(
});
if (data.direction == "back") {
sendFlowService.clear();
sendFlowService.state.clear();
}
});

View file

@ -1,11 +1,13 @@
'use strict';
angular.module('copayApp.controllers').controller('tabsController', function($rootScope, $log, $scope, $state, $stateParams, $timeout, platformInfo, incomingData, lodash, popupService, gettextCatalog, scannerService, sendFlowService) {
angular.module('copayApp.controllers').controller('tabsController', function($rootScope, $log, $scope, $state, $stateParams, $timeout, platformInfo, incomingDataService, lodash, popupService, gettextCatalog, scannerService, sendFlowService) {
$scope.onScan = function(data) {
if (!incomingData.redir(data)) {
popupService.showAlert(gettextCatalog.getString('Error'), gettextCatalog.getString('Invalid data'));
}
incomingDataService.redir(data, function onError(err) {
if (err) {
popupService.showAlert(gettextCatalog.getString('Error'), err.message);
}
});
};
$scope.setScanFn = function(scanFn) {
@ -16,8 +18,7 @@ angular.module('copayApp.controllers').controller('tabsController', function($ro
};
$scope.startFreshSend = function() {
sendFlowService.clear();
$state.go('tabs.send');
sendFlowService.start();
};
$scope.importInit = function() {
@ -28,7 +29,6 @@ angular.module('copayApp.controllers').controller('tabsController', function($ro
};
$scope.chooseScanner = function() {
sendFlowService.clear();
var isWindowsPhoneApp = platformInfo.isCordova && platformInfo.isWP;
if (!isWindowsPhoneApp) {
@ -38,10 +38,14 @@ angular.module('copayApp.controllers').controller('tabsController', function($ro
scannerService.useOldScanner(function(err, contents) {
if (err) {
popupService.showAlert(gettextCatalog.getString('Error'), err);
return;
popupService.showAlert(gettextCatalog.getString('Error'), err.message);
} else {
incomingDataService.redir(contents, function onError(err) {
if (err) {
popupService.showAlert(gettextCatalog.getString('Error'), err.message);
}
});
}
incomingData.redir(contents);
});
};

View file

@ -26,27 +26,6 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
};
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;
@ -378,8 +357,6 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
});
$scope.$on("$ionicView.beforeEnter", function(event, data) {
sendFlowService.clear();
configService.whenAvailable(function (config) {
$scope.selectedPriceDisplay = config.wallet.settings.priceDisplay;
@ -477,16 +454,10 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun
}
$scope.goToSend = function() {
sendFlowService.startSend({
sendFlowService.start({
fromWalletId: $scope.wallet.id
});
// Go home first so that the Home tab works properly
$state.go('tabs.home').then(function () {
$ionicHistory.clearHistory();
$state.go('tabs.send');
});
};
$scope.goToReceive = function() {
$state.go('tabs.home', {

View file

@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.controllers').controller('walletSelectorController', function($scope, $rootScope, $state, $log, $ionicHistory, sendFlowService, configService, gettextCatalog, profileService, txFormatService) {
angular.module('copayApp.controllers').controller('walletSelectorController', function($scope, $state, sendFlowService, configService, gettextCatalog, profileService, txFormatService) {
var fromWalletId = '';
var priceDisplayAsFiat = false;
@ -12,31 +12,22 @@ angular.module('copayApp.controllers').controller('walletSelectorController', fu
function onBeforeEnter(event, data) {
if (data.direction == "back") {
sendFlowService.popState();
sendFlowService.state.pop();
}
console.log('walletSelector onBeforeEnter after back sendflow', sendFlowService.state);
$scope.params = sendFlowService.getStateClone();
$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;
switch($state.current.name) {
case 'tabs.send.wallet-to-wallet':
$scope.sendFlowTitle = gettextCatalog.getString('Transfer between wallets');
break;
case 'tabs.send.destination':
if ($scope.params.fromWalletId && !$scope.params.thirdParty) {
$scope.sendFlowTitle = gettextCatalog.getString('Transfer between wallets');
}
break;
default:
if (!$scope.params.thirdParty) {
$scope.sendFlowTitle = gettextCatalog.getString('Send');
}
// nop
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)
@ -99,21 +90,12 @@ angular.module('copayApp.controllers').controller('walletSelectorController', fu
$scope.requestAmountSecondary = fiatAmount;
$scope.requestCurrencySecondary = fiatCurrrency;
}
$scope.$apply();
}
});
}
}
function getNextStep(params) {
if (!params.toWalletId && !params.toAddress) { // If we have no toAddress or fromWallet
return 'tabs.send.destination';
} else if (!params.amount) { // If we have no amount
return 'tabs.send.amount';
} else { // If we do have them
return 'tabs.send.review';
}
}
function handleThirdPartyIfShapeshift() {
console.log($scope.thirdParty, $scope.coin);
if ($scope.thirdParty.id === 'shapeshift' && $scope.type === 'destination') { // Shapeshift wants to know the
@ -191,20 +173,17 @@ angular.module('copayApp.controllers').controller('walletSelectorController', fu
$scope.useWallet = function(wallet) {
var params = sendFlowService.getStateClone();
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.pushState(params);
var nextStep = getNextStep(params);
console.log('walletSelector nextStep', nextStep);
$state.transitionTo(nextStep, $scope.params);
sendFlowService.goNext(params);
};
$scope.goBack = function() {
$ionicHistory.goBack();
sendFlowService.router.goBack();
}
});

View file

@ -1,23 +1,28 @@
'use strict';
angular.module('copayApp.directives')
.directive('incomingDataMenu', function($timeout, $rootScope, $state, externalLinkService) {
.directive('incomingDataMenu', function($timeout, $rootScope, $state, externalLinkService, sendFlowService, bitcoinCashJsService) {
return {
restrict: 'E',
templateUrl: 'views/includes/incomingDataMenu.html',
link: function(scope, element, attrs) {
$rootScope.$on('incomingDataMenu.showMenu', function(event, data) {
$timeout(function() {
scope.data = data.data;
scope.type = data.type;
scope.showMenu = true;
scope.https = false;
scope.data = data;
if (scope.type === 'url') {
if (scope.data.indexOf('https://') === 0) {
scope.https = true;
}
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.showMenu = true;
});
});
scope.hide = function() {
@ -28,18 +33,9 @@ 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;
$state.go('tabs.send').then(function() {
$timeout(function() {
$state.transitionTo('tabs.send.amount', {
toAddress: bitcoinAddress,
noPrefix: noPrefixInAddress
});
}, 50);
sendFlowService.start({
data: bitcoinAddress
});
};
scope.addToAddressBook = function(bitcoinAddress) {

View file

@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.directives').directive('shapeshiftCoinTrader', function($interval, shapeshiftApiService, profileService, incomingData, ongoingProcess) {
angular.module('copayApp.directives').directive('shapeshiftCoinTrader', function($interval, shapeshiftApiService, profileService, incomingDataService, ongoingProcess) {
return {
restrict: 'E',
transclude: true,
@ -111,7 +111,8 @@ angular.module('copayApp.directives').directive('shapeshiftCoinTrader', function
orderId: $scope.depositInfo.orderId
};
if (incomingData.redir(sendAddress, 'shapeshift', shapeshiftData)) {
// How to handle this
if (incomingDataService.redir(sendAddress, 'shapeshift', shapeshiftData)) {
ongoingProcess.set('connectingShapeshift', false);
return;
}

View file

@ -0,0 +1,356 @@
'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 infoFromImport(data) {
var split = data.split('|');
// Copay seems to use extra parameter for coin.
if (split.length < 5 || split.length > 6) {
return null;
}
}
/*
For parsing:
BIP21
BIP72
returns:
{
amount: '',
amountInSatoshis: 0,
bareUrl: '',
coin: '',
copayInvitation: '',
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])) {
addressAndParams = trimmed;
} else {
// Something with a colon in the middle that we don't recognise
return parsed;
}
// Remove erroneous leading slashes
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 importRe = /^[123]|$/;
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 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 {
parsed.isValid = !!parsed.url; // BIP72
}
return parsed;
}
}
})();

View file

@ -0,0 +1,394 @@
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');
});
// 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');
});
});

View file

@ -0,0 +1,79 @@
'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;
});

View file

@ -1,475 +0,0 @@
'use strict';
angular.module('copayApp.services').factory('incomingData', function($log, $state, $timeout, $ionicHistory, bitcore, bitcoreCash, $rootScope, payproService, scannerService, sendFlowService, appConfigService, popupService, gettextCatalog, bitcoinCashJsService) {
var root = {};
root.showMenu = function(data) {
$rootScope.$broadcast('incomingDataMenu.showMenu', data);
};
root.redir = function(data, serviceId, serviceData) {
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, serviceId, serviceData) {
$state.go('tabs.send', {}, {
'reload': true,
'notify': $state.current.name == 'tabs.send' ? false : true
});
// Timeout is required to enable the "Back" button
$timeout(function() {
var params = sendFlowService.getStateClone();
if (amount) {
params.amount = amount;
}
if (addr) {
params.toAddress = addr;
params.displayAddress = originalAddress ? originalAddress : addr;
}
if (coin) {
params.coin = coin;
}
if (noPrefixInAddress) {
params.noPrefixInAddress = noPrefixInAddress;
}
if (serviceId) {
params.thirdParty = [];
params.thirdParty.id = serviceId;
params.thirdParty.data = serviceData;
sendFlowService.pushState(params);
$state.transitionTo('tabs.send.amount');
} else {
sendFlowService.pushState(params);
$state.transitionTo('tabs.send.origin');
}
}, 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 onGetPayProDetailsViaHttp(err, details) {
if (err) {
var message = err.toString();
if (typeof err.data === 'string') {
// i.e. 'This invoice is no longer accepting payments'
message = gettextCatalog.getString(err.data);
}
popupService.showAlert(gettextCatalog.getString('Error'), message)
} else {
handlePayPro(details, coin);
}
});
} else {
payproService.getPayProDetails(data, coin, function onGetPayProDetails(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, serviceId, serviceData);
else popupService.showAlert(gettextCatalog.getString('Error'), err);
} else handlePayPro(details, coin);
});
} else {
goSend(addr, amount, message, coin, serviceId, serviceData);
}
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, serviceId, serviceData);
else
popupService.showAlert(gettextCatalog.getString('Error'), err);
}
handlePayPro(details, coin);
});
} else {
goSend(addr, amount, message, coin, serviceId, serviceData);
}
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, serviceId, serviceData);
else
popupService.showAlert(gettextCatalog.getString('Error'), err);
}
handlePayPro(details, coin);
});
} else {
goSend(addr, amount, message, coin, serviceId, serviceData);
}
}
);
return true;
// Plain URL
} else if (/^https?:\/\//.test(data)) {
payproService.getPayProDetails(data, coin, function(err, details) {
if (err) {
if ($state.includes('tabs.scan')) {
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() {
var stateParams = {
toAddress: toAddress,
displayAddress: toAddress,
coin: coin,
noPrefix: 1
};
sendFlowService.pushState(stateParams);
$state.transitionTo('tabs.send.origin');
}, 100);
}
function handlePayPro(payProData, coin) {
console.log(payProData);
var toAddr = payProData.toAddress;
var amount = payProData.amount;
var paymentUrl = payProData.url;
var expires = payProData.expires;
var time = payProData.time;
if (coin === 'bch') {
var displayAddr = payProData.outputs[0].address;
toAddr = bitcoinCashJsService.readAddress('bitcoincash:' + displayAddr).legacy;
amount = payProData.outputs[0].amount;
paymentUrl = payProData.paymentUrl;
expires = Math.floor(new Date(expires).getTime() / 1000)
time = Math.ceil(new Date(time).getTime() / 1000)
}
var name = payProData.domain;
if (payProData.memo.indexOf('eGifter') > -1) {
name = 'eGifter'
} else if (paymentUrl.indexOf('https://bitpay.com') > -1) {
name = 'BitPay';
}
var thirdPartyData = {
id: 'bip70',
amount: amount,
caTrusted: true,
name: name,
domain: payProData.domain,
expires: expires,
memo: payProData.memo,
network: 'livenet',
requiredFeeRate: payProData.requiredFeeRate,
selfSigned: 0,
time: time,
displayAddress: displayAddr,
toAddress: toAddr,
url: paymentUrl,
verified: true
};
var stateParams = {
amount: thirdPartyData.amount,
toAddress: thirdPartyData.toAddress,
coin: coin,
thirdParty: thirdPartyData
};
// fee
if (thirdPartyData.requiredFeeRate) {
stateParams.requiredFeeRate = thirdPartyData.requiredFeeRate * 1024;
}
// This does not make sense, thirdPartyData gets added by stateParams below
//sendFlowService.pushState(thirdPartyData);
scannerService.pausePreview();
$state.go('tabs.send', {}, {
'reload': true,
'notify': $state.current.name == 'tabs.send' ? false : true
}).then(function() {
$timeout(function() {
sendFlowService.pushState(stateParams); // Need to do more here
$state.transitionTo('tabs.send.origin');
});
});
}
return root;
});

View file

@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.services').factory('openURLService', function($rootScope, $ionicHistory, $document, $log, $state, platformInfo, lodash, profileService, incomingData, appConfigService) {
angular.module('copayApp.services').factory('openURLService', function($rootScope, $ionicHistory, $document, $log, $state, platformInfo, lodash, profileService, incomingDataService, appConfigService) {
var root = {};
var handleOpenURL = function(args) {
@ -23,9 +23,12 @@ angular.module('copayApp.services').factory('openURLService', function($rootScop
document.addEventListener('handleopenurl', handleOpenURL, false);
if (!incomingData.redir(url)) {
$log.warn('Unknown URL! : ' + url);
}
incomingDataService.redir(url, function onError(err) {
if (err) {
$log.warn('Unknown URL! : ' + url);
popupService.showAlert(gettextCatalog.getString('Error'), err.message);
}
});
};
var handleResume = function() {

View file

@ -0,0 +1,85 @@
'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();
}
};
})();

View file

@ -3,14 +3,13 @@
(function(){
angular
.module('copayApp.services')
.factory('sendFlowService', sendFlowService);
.module('bitcoincom.services')
.factory('sendFlowStateService', sendFlowStateService);
function sendFlowService($log) {
function sendFlowStateService($log) {
var service = {
// A separate state variable so we can ensure it is cleared of everything,
// even other properties added that this service does not know about. (such as "coin")
// Variables
state: {
amount: '',
displayAddress: null,
@ -18,29 +17,55 @@ angular
sendMax: false,
thirdParty: null,
toAddress: '',
toWalletId: ''
toWalletId: '',
coin: '',
isRequestAmount: false,
isWalletTransfer: false
},
previousStates: [],
// Functions
init: init,
clear: clear,
getStateClone: getStateClone,
getClone: getClone,
map: map,
popState: popState,
pushState: pushState,
startSend: startSend
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() {
console.log("sendFlow clear()");
$log.debug("send-flow-state clear()");
clearCurrent();
service.previousStates = [];
}
/**
* Clear current state only
*/
function clearCurrent() {
console.log("sendFlow clearCurrent()");
$log.debug("send-flow-state clearCurrent()");
service.state = {
amount: '',
displayAddress: null,
@ -48,14 +73,17 @@ angular
sendMax: false,
thirdParty: null,
toAddress: '',
toWalletId: ''
toWalletId: '',
coin: '',
isRequestAmount: false,
isWalletTransfer: false
}
}
/**
* Handy for debugging
* Get a clone of the current state
*/
function getStateClone() {
function getClone() {
var currentState = {};
Object.keys(service.state).forEach(function forCurrentParam(key) {
if (typeof service.state[key] !== 'function' && key !== 'previousStates') {
@ -66,22 +94,21 @@ angular
}
/**
* Clears all previous state
* Fill in the current state from the params
* @param {Object} params
*/
function startSend(params) {
console.log('startSend()');
clear();
map(params);
}
function map(params) {
Object.keys(params).forEach(function forNewParam(key) {
service.state[key] = params[key];
});
};
function popState() {
console.log('sendFlow pop');
/**
* Pop state
*/
function pop() {
$log.debug('send-flow-state pop');
if (service.previousStates.length) {
var params = service.previousStates.pop();
clearCurrent();
@ -91,13 +118,25 @@ angular
}
};
function pushState(params) {
console.log('sendFlow push');
var currentParams = getStateClone();
/**
* 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;
};
};
})();

View file

@ -0,0 +1,149 @@
'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();
}
};
})();

View file

@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.services').factory('shapeshiftService', function ($http, $interval, $log, lodash, moment, ongoingProcess, shapeshiftApiService, storageService, configService, incomingData, platformInfo, servicesService) {
angular.module('copayApp.services').factory('shapeshiftService', function ($http, $interval, $log, lodash, moment, ongoingProcess, shapeshiftApiService, storageService, configService, incomingDataService, platformInfo, servicesService) {
var root = {};
root.ShiftState = 'Shift';
root.coinIn = '';
@ -111,7 +111,7 @@ angular.module('copayApp.services').factory('shapeshiftService', function ($http
toAddress: txData.deposit
};
//
// if (incomingData.redir(sendAddress, 'shapeshift', shapeshiftData)) {
// if (incomingDataService.redir(sendAddress, 'shapeshift', shapeshiftData)) {
ongoingProcess.set('connectingShapeshift', false);
// return;
// }

View file

@ -1,5 +1,5 @@
%button-standard {
width: 85%;
width: 90%;
max-width: 300px;
margin-left: auto;
margin-right: auto;

View file

@ -1,11 +1,11 @@
.fee-summary {
position: relative;
background-color: #F2F2F2;
box-sizing: border-box;
display: flex;
flex-direction: column;
width: 100%;
padding: 5px 12px 15px;
box-sizing: border-box;
background-color: #F2F2F2;
position: relative;
width: 100%;
&:before {
content: '';

View file

@ -59,6 +59,8 @@
.button {
font-weight: bold;
font-size: 19px;
line-height: 26px;
padding: 8px 6px;
}
}
.button-first-contact img {

View file

@ -6,8 +6,10 @@
}
.fee-summary {
position: absolute;
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 {

View file

@ -83,14 +83,14 @@
.button {
border: 2px solid;
border-radius: 47px;
padding: 0 15px 0 15px;
padding: 8px 2px 8px 2px;
text-align: center;
width: 100%;
max-width: 300px;
font-size: 19px;
font-weight: bolder;
min-height: auto;
line-height: 36px;
line-height: 19px;
}
}
.wallet-coin-logo {

View file

@ -105,7 +105,7 @@
width: auto;
margin: 2px 0 4px;
}
height: 60px;
min-height: 65px;
line-height: 16px;
margin-right: 0px;
width: 95%;

View file

@ -207,14 +207,14 @@
.button {
border: 2px solid;
border-radius: 47px;
padding: 0 15px 0 15px;
padding: 6px 2px 6px 2px;
text-align: center;
width: 100%;
max-width: 300px;
font-size: 19px;
font-weight: bolder;
min-height: auto;
line-height: 36px;
line-height: 19px;
}
}
}

View file

@ -17,7 +17,7 @@ module.exports = function(config) {
files: [
'node_modules/angular/angular.js',
'bitanalytics/bitanalytics-0.1.0.js',
'bitanalytics/bitanalytics.js',
// From Gruntfile.js
'bower_components/qrcode-generator/js/qrcode.js',

View file

@ -9,21 +9,21 @@
<img src="img/icon-bitcoin-small.svg">
</div>
<div class="incoming-data-menu__url__text">
{{data}}
{{data.original}}
</div>
</div>
</div>
<a class="incoming-data-menu__item item item-icon-right" ng-click="addToAddressBook(data)">
<a class="incoming-data-menu__item item item-icon-right" ng-click="addToAddressBook(data.toAddress)">
<img src="img/icon-contacts.svg">
<div class="incoming-data-menu__item__text" translate>Add as a contact</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__item item item-icon-right" ng-click="sendPaymentToAddress(data)">
<a class="incoming-data-menu__item item item-icon-right" ng-click="sendPaymentToAddress(data.toAddress)">
<img src="img/icon-send-alt.svg">
<div class="incoming-data-menu__item__text" translate>Send payment to this address</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data">
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data.original">
<img src="img/icon-paperclip.svg">
<div class="incoming-data-menu__item__text" translate>Copy to clipboard</div>
<i class="icon bp-arrow-right"></i>
@ -38,11 +38,11 @@
<div class="incoming-data-menu__header" translate>Text</div>
<div class="incoming-data-menu__url">
<div class="incoming-data-menu__url__text" style="border: 0;">
{{data}}
{{data.original}}
</div>
</div>
</div>
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data">
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data.original">
<img src="img/icon-paperclip.svg">
<div class="incoming-data-menu__item__text" translate>Copy to clipboard</div>
<i class="icon bp-arrow-right"></i>
@ -57,16 +57,40 @@
<div class="incoming-data-menu__header" translate>Private Key</div>
<div class="incoming-data-menu__url">
<div class="incoming-data-menu__url__text" style="border: 0;">
{{data}}
{{data.original}}
</div>
</div>
</div>
<a class="incoming-data-menu__item item item-icon-right" ng-click="scanPaperWallet(data)">
<a class="incoming-data-menu__item item item-icon-right" ng-click="scanPaperWallet(data.original)">
<img src="img/icon-import.svg">
<div class="incoming-data-menu__item__text" translate>Sweep paper wallet</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data">
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data.original">
<img src="img/icon-paperclip.svg">
<div class="incoming-data-menu__item__text" translate>Copy to clipboard</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__cancel item" ng-click="hide()" translate>
Cancel
</a>
</div>
<div ng-if="type === 'url'">
<div class="incoming-data-menu__item head">
<div class="incoming-data-menu__header" translate>URL</div>
<div class="incoming-data-menu__url">
<div class="incoming-data-menu__url__text" style="border: 0;">
{{data.original}}
</div>
</div>
</div>
<a class="incoming-data-menu__item item item-icon-right" ng-click="goToUrl(data.original)">
<img src="img/icon-link-external.svg">
<div class="incoming-data-menu__item__text" translate>Open in web browser</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data.original">
<img src="img/icon-paperclip.svg">
<div class="incoming-data-menu__item__text" translate>Copy to clipboard</div>
<i class="icon bp-arrow-right"></i>

View file

@ -31,7 +31,7 @@
<div ng-show="!showingPaymentReceived">
<div>
<button ng-show="addr" class="button button-standard button-small" ng-click="requestSpecificAmount()">
<span translate>Request Specific Amount</span>
<span translate>Request Specific amount</span>
</button><br/><br/>
</div>
<div copy-to-clipboard="wallet.coin == 'bch' && bchAddressType.type == 'cashaddr' ? 'bitcoincash:' + addr : addr">
@ -69,8 +69,8 @@
<!-- end of animation -->
<div ng-show="addr && wallet.coin == 'bch' && !showingPaymentReceived">
<label class="item-input item-select">
<div class="input-label" translate>
Address Type:
<div class="input-label">
<span translate>Address Type</span>:
</div>
<select ng-model="bchAddressType.type" ng-change="displayAddress(bchAddressType.type)">
<option value="cashaddr">Cash Address</option>