From cc8521d51eff33216ddda691745f87c000f9f3dd Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 20 Apr 2015 18:44:34 -0300 Subject: [PATCH 1/6] Removes unnecessary files --- public/views/devLogin.html | 2 - public/views/dummy-translations.html | 62 --------- public/views/importProfile.html | 67 --------- public/views/profile.html | 124 ----------------- public/views/settings.html | 60 -------- public/views/signin.html | 132 ------------------ public/views/warning.html | 26 ---- src/js/controllers/emailConfirmation.js | 6 - src/js/controllers/importProfile.js | 81 ----------- src/js/controllers/profile.js | 68 --------- src/js/controllers/settings.js | 26 ---- src/js/controllers/signOut.js | 5 - src/js/controllers/signin.js | 174 ------------------------ src/js/controllers/unsupported.js | 7 - src/js/controllers/walletForPayment.js | 47 ------- src/js/controllers/warning.js | 27 ---- 16 files changed, 914 deletions(-) delete mode 100644 public/views/devLogin.html delete mode 100644 public/views/dummy-translations.html delete mode 100644 public/views/importProfile.html delete mode 100644 public/views/profile.html delete mode 100644 public/views/settings.html delete mode 100644 public/views/signin.html delete mode 100644 public/views/warning.html delete mode 100644 src/js/controllers/emailConfirmation.js delete mode 100644 src/js/controllers/importProfile.js delete mode 100644 src/js/controllers/profile.js delete mode 100644 src/js/controllers/settings.js delete mode 100644 src/js/controllers/signOut.js delete mode 100644 src/js/controllers/signin.js delete mode 100644 src/js/controllers/unsupported.js delete mode 100644 src/js/controllers/walletForPayment.js delete mode 100644 src/js/controllers/warning.js diff --git a/public/views/devLogin.html b/public/views/devLogin.html deleted file mode 100644 index f58b8d2ee..000000000 --- a/public/views/devLogin.html +++ /dev/null @@ -1,2 +0,0 @@ -
-
diff --git a/public/views/dummy-translations.html b/public/views/dummy-translations.html deleted file mode 100644 index 862444a8f..000000000 --- a/public/views/dummy-translations.html +++ /dev/null @@ -1,62 +0,0 @@ -{{'Receive'|translate}} -{{'History'|translate}} -{{'Wrong password'|translate}} -{{'Copied to clipboard'|translate}} -{{'Please enter the required fields'|translate}} -{{'Import a backup'|translate}} -{{'Importing wallet - Reading backup...'|translate}} -{{'Importing wallet - Setting things up...'|translate}} -{{'Importing wallet - We are almost there...'|translate}} -{{'Error updating indexes:'|translate}} -{{'Please, select your backup file'|translate}} -{{'Please enter the required fields'|translate}} -{{'Fatal error connecting to Insight server'|translate}} -{{'The wallet is full'|translate}} -{{'Wallet network configuration missmatch'|translate}} -{{'The secret string you entered is invalid'|translate}} -{{'Transactions Proposals Purged'|translate}} -{{'transaction proposal purged'|translate}} -{{'Updating balance'|translate}} -{{'Scaning for transactions'|translate}} -{{'Using derived addresses from your wallet'|translate}} -{{'Finished'|translate}} -{{'The balance is updated using the derived addresses'|translate}} -{{'Login Required'|translate}} -{{'Please open wallet to complete payment'|translate}} -{{'Send'|translate}} -{{'Unable to send transaction proposal'|translate}} -{{'The transaction proposal has been created'|translate}} -{{'Form Error'|translate}} -{{'Please complete required fields'|translate}} -{{'Success'|translate}} -{{'New entry has been created'|translate}} -{{'There was an error sending the transaction'|translate}} -{{'Transaction rejected'|translate}} -{{'You rejected the transaction successfully'|translate}} -{{'There was an error signing the transaction'|translate}} -{{'Session will be closed'|translate}} -{{'Your session is about to expire due to inactivity in'|translate}} -{{'seconds'|translate}} -{{'Session closed'|translate}} -{{'Session closed because a long time of inactivity'|translate}} -{{'available.'|translate}} -{{'It\'s important that you update your wallet at https://copay.io'|translate}} -{{'Please update your wallet at https://copay.io'|translate}} -{{'Backup created'|translate}} -{{'Encrypted backup file saved'|translate}} -{{'Networking Error'|translate}} -{{'Could not connect to the Insight server. Check your settings and network configuration'|translate}} -{{'Received corrupt message from '|translate}} -{{'Transaction Update'|translate}} -{{'A transaction was signed by'|translate}} -{{'A transaction was rejected by'|translate}} -{{'Transaction Error'|translate}} -{{'Received corrupt transaction from'|translate}} -{{'New Transaction'|translate}} -{{'You have a pending transaction proposal'|translate}} -{{'You have'|translate}} -{{'pending transaction proposals'|translate}} -{{'Funds received!'|translate}} -{{'Transaction broadcasted'|translate}} -{{'Accessing your profile'|translate}} -{{'Signing out'|translate}} diff --git a/public/views/importProfile.html b/public/views/importProfile.html deleted file mode 100644 index ff6b4ef30..000000000 --- a/public/views/importProfile.html +++ /dev/null @@ -1,67 +0,0 @@ - -
-
-
-
- -
-
-
- Copay -
-
-
-

Import a profile

-
-
-
- -
- - {{error|translate}} - -
- -
-
- -
-
- -
-
- - -
-
-
- - -
- - -
- -
-
-
-
- diff --git a/public/views/profile.html b/public/views/profile.html deleted file mode 100644 index 5f7e70c7b..000000000 --- a/public/views/profile.html +++ /dev/null @@ -1,124 +0,0 @@ -
-
-
-
-
- -
-

- Profile - - [ Needs Backup ] - -

- It's important to backup your profile so that you can recover it in case of disaster. The backup will include all your profile's wallets -
-
-
-
-
- -
-
- - -
-

Backup options

- - -
-
-
- -
-
-

Copy backup in a safe place

-
- - -
-
- - Copy this text as it is in a safe place (notepad or email) -
-
-
- -
-
- -
-
-
- Your current server usage quotas are: {{perItem}}kB per wallet and up to {{nrWallets}} wallets. -
-
- - Confirm your email address to increase storage usage limits. -
-
-
-
- -
- - - -
-
-
-

- Delete Profile -

-

Permanently delete this profile and all its wallets. WARNING: this action cannot be reversed.

- -
-

Are you sure you want to delete this profile?

-
-
- -
-
- -
-
-
-
-
-
-
-
diff --git a/public/views/settings.html b/public/views/settings.html deleted file mode 100644 index b5597c4d2..000000000 --- a/public/views/settings.html +++ /dev/null @@ -1,60 +0,0 @@ -
-

{{$root.title|translate}}

-
-
- Copay -
-
-

Settings

-
-
-
- -
- - {{message|translate}} - -
-
- Bitcore wallet service -
- -
- - Not valid -
-
-
- -
- - - Bitcore wallet service is open-source software. You can run your own instances, check - Github repository - -
- -
- -
-
diff --git a/public/views/signin.html b/public/views/signin.html deleted file mode 100644 index b3a942af5..000000000 --- a/public/views/signin.html +++ /dev/null @@ -1,132 +0,0 @@ -
- - -
-
-
- -
-
-
- -
-
-

Disclaimer

-

- The software you are about to use is free, open source, and unsupported beta software. It is important to understand - that beta software refers to software that is undergoing testing and has not officially been released, could have - bugs, and may not act in a reliable fashion. Because the software is currently in beta, it is possible but not certain - that you may lose bitcoin or the value of your bitcoin. It is recommended that you store only nominal amounts of - bitcoins. You acknowledge that your use of this software is at your own discretion and in compliance with all - applicable laws. You are responsible for safekeeping your login IDs, passwords, private key pairs, PINs and any other - codes you use to access the software. IF YOU HAVE NOT SEPARATELY STORED A BACKUP OF ANY WALLET ADDRESSES AND PRIVATE - KEY PAIRS MAINTAINED IN YOUR ACCOUNT, YOU ACKNOWLEDGE AND AGREE THAT ANY BITCOINS YOU HAVE ASSOCIATED WITH SUCH WALLET - ADDRESSES WILL BECOME INACCESSIBLE IF YOU DO NOT HAVE YOUR ACCOUNT PASSWORD AND/OR PIN. All transaction requests are - irreversible. The authors of the software, employees and affiliates of Bitpay, copyright holders, and BitPay, Inc. - cannot retrieve your private keys or passwords if you lose or forget them and cannot guarantee transaction - confirmation as they do not have control over the Bitcoin network. You agree to provide accurate and complete - information in connection with your use of the account. You assume any and all risk associated with the use of the - software. To the fullest extent permitted by law, this software is provided “as is” and no representations or - warranties can be made of any kind, express or implied, including but not limited to the warranties of - merchantability, fitness or a particular purpose and noninfringement. In no event shall the authors of the software, - employees and affiliates of Bitpay, copyright holders, or BitPay, Inc. be held liable for any claim, damages or other - liability, whether in an action of contract, tort, or otherwise, arising from, out of or in connection with the - software or the use or other dealings in the software. We reserve the right to modify this disclaimer from time to - time. -

- -
-
- -
-
- -
- Copay -
-
- -
-

Enter PIN

-

Set up a PIN

-

Repeat PIN

-
-
- -
- - {{signin.error|translate}} - -
-
-
- -
-

Signin

-
-
- -
-
- Please sign in to make the payment -
-
-
-
-
- -
- - {{error|translate}} - -
- -
- - -
-
- - -
- - - - -
- - -
-
-
-
- - diff --git a/public/views/warning.html b/public/views/warning.html deleted file mode 100644 index 44d40ff74..000000000 --- a/public/views/warning.html +++ /dev/null @@ -1,26 +0,0 @@ -
-
- Copay -
-
-

Warning!

-

- This wallet appears to be currently open. -
- Opening the wallet in multiple browser tabs could lead to unexpected results -

-
-
- -
-
-
-
-
- diff --git a/src/js/controllers/emailConfirmation.js b/src/js/controllers/emailConfirmation.js deleted file mode 100644 index 8ae1d2d0e..000000000 --- a/src/js/controllers/emailConfirmation.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('EmailConfirmationController', function($scope, $rootScope, $location) { - $rootScope.fromEmailConfirmation = true; - $location.path('/'); -}); diff --git a/src/js/controllers/importProfile.js b/src/js/controllers/importProfile.js deleted file mode 100644 index 72d38d122..000000000 --- a/src/js/controllers/importProfile.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('importProfileController', - function($scope, $rootScope, $timeout, notification, isMobile, isCordova, identityService) { - this.importStatus = 'Importing profile - Reading backup...'; - this.hideAdv = true; - this.isSafari = isMobile.Safari(); - this.isCordova = isCordova; - - window.ignoreMobilePause = true; - $scope.$on('$destroy', function() { - $timeout(function(){ - window.ignoreMobilePause = false; - }, 100); - }); - - var reader = new FileReader(); - - var updateStatus = function(status) { - this.importStatus = status; - } - - var _importBackup = function(str) { - var password = this.password; - updateStatus('Importing profile - Setting things up...'); - - identityService.importProfile(str,password, function(err, iden) { - if (err) { - $rootScope.starting = false; - copay.logger.warn(err); - if ((err.toString() || '').match('BADSTR')) { - this.error = 'Bad password or corrupt profile file'; - } else if ((err.toString() || '').match('EEXISTS')) { - this.error = 'Profile already exists'; - } else { - this.error = 'Unknown error'; - } - $timeout(function() { - $rootScope.$digest(); - }, 1); - } - }); - }; - - this.getFile = function() { - // If we use onloadend, we need to check the readyState. - reader.onloadend = function(evt) { - if (evt.target.readyState == FileReader.DONE) { // DONE == 2 - var encryptedObj = evt.target.result; - _importBackup(encryptedObj); - } - }; - }; - - this.import = function(form) { - - if (form.$invalid) { - this.error = 'Please enter the required fields'; - return; - } - var backupFile = this.file; - var backupText = form.backupText.$modelValue; - var password = form.password.$modelValue; - - if (!backupFile && !backupText) { - this.error = 'Please, select your backup file'; - return; - } - - $rootScope.starting = true; - - $timeout(function() { - - if (backupFile) { - reader.readAsBinaryString(backupFile); - } else { - _importBackup(backupText); - } - }, 100); - }; - }); diff --git a/src/js/controllers/profile.js b/src/js/controllers/profile.js deleted file mode 100644 index b7d39ffc7..000000000 --- a/src/js/controllers/profile.js +++ /dev/null @@ -1,68 +0,0 @@ -'use strict'; -angular.module('copayApp.controllers').controller('ProfileController', function($scope, $rootScope, $location, $modal, $filter, $timeout, backupService, identityService, isMobile, isCordova, notification) { - $scope.username = $rootScope.iden.getName(); - $scope.isSafari = isMobile.Safari(); - $scope.isCordova = isCordova; - - $rootScope.title = 'Profile'; - $scope.hideAdv = true; - - $scope.downloadProfileBackup = function() { - backupService.profileDownload($rootScope.iden); - }; - - $scope.viewProfileBackup = function() { - $scope.loading = true; - $timeout(function() { - $scope.backupProfilePlainText = backupService.profileEncrypted($rootScope.iden); - }, 100); - }; - - $scope.copyProfileBackup = function() { - var ep = backupService.profileEncrypted($rootScope.iden); - window.cordova.plugins.clipboard.copy(ep); - window.plugins.toast.showShortCenter('Copied to clipboard'); - }; - - $scope.sendProfileBackup = function() { - if (isMobile.Android() || isMobile.Windows()) { - window.ignoreMobilePause = true; - } - window.plugins.toast.showShortCenter('Preparing backup...'); - var name = $rootScope.iden.fullName; - var ep = backupService.profileEncrypted($rootScope.iden); - var properties = { - subject: 'Copay Profile Backup: ' + name, - body: 'Here is the encrypted backup of the profile ' + name + ': \n\n' + ep + '\n\n To import this backup, copy all text between {...}, including the symbols {}', - isHtml: false - }; - window.plugin.email.open(properties); - }; - - $scope.init = function() { - if ($rootScope.quotaPerItem) { - $scope.perItem = $filter('noFractionNumber')($rootScope.quotaPerItem / 1000, 1); - $scope.nrWallets = parseInt($rootScope.quotaItems) - 1; - } - // no need to add event handlers here. Wallet deletion is handle by callback. - }; - - $scope.deleteProfile = function() { - $scope.loading = true; - identityService.deleteProfile(function(err, res) { - $scope.loading = false; - if (err) { - log.warn(err); - notification.error('Error', 'Could not delete profile'); - $timeout(function() { - $scope.$digest(); - }); - } else { - $location.path('/'); - $timeout(function() { - notification.success('Success', 'Profile successfully deleted'); - }); - } - }); - }; -}); diff --git a/src/js/controllers/settings.js b/src/js/controllers/settings.js deleted file mode 100644 index c494f859b..000000000 --- a/src/js/controllers/settings.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('settingsController', function(configService, applicationService) { - var config; - - this.init = function() { - config = configService.get(); - this.bws = config.bws.url; - }; - - this.save = function() { - if (!this.bws) return; - config.bws.url = this.bws; - var res = configService.set(config); - if (res) { - applicationService.restart(); - } - }; - - this.reset = function() { - if (configService.reset()) { - applicationService.restart(); - } - }; - -}); diff --git a/src/js/controllers/signOut.js b/src/js/controllers/signOut.js deleted file mode 100644 index 5bc2258ed..000000000 --- a/src/js/controllers/signOut.js +++ /dev/null @@ -1,5 +0,0 @@ -angular.module('copayApp.controllers').controller('signOutController', function(identityService) { - - identityService.signout(); - -}); diff --git a/src/js/controllers/signin.js b/src/js/controllers/signin.js deleted file mode 100644 index 1dd083686..000000000 --- a/src/js/controllers/signin.js +++ /dev/null @@ -1,174 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('signinController', - function($rootScope, $timeout, $window, go, notification, profileService, pinService, applicationService, isMobile, isCordova, localStorageService) { - - var KEY = 'CopayDisclaimer'; - var _credentials; - - this.init = function() { - this.isMobile = isMobile.any(); - this.isWindowsPhoneApp = isMobile.Windows() && isCordova; - this.hideForWP = 0; - this.attempt = 0; - this.digits = []; - this.defined = []; - this.askForPin = 0; - - // This is only for backwards compat, insight api should link to #!/confirmed directly - if (getParam('confirmed')) { - var hashIndex = window.location.href.indexOf('/?'); - window.location = window.location.href.substr(0, hashIndex) + '#!/confirmed'; - return; - } - - if ($rootScope.fromEmailConfirmation) { - this.confirmedEmail = true; - $rootScope.fromEmailConfirmation = false; - } - - if ($rootScope.wallet) { - go.walletHome(); - } - - }; - - this.clear = function() { - pinService.clearPin(this); - }; - - this.press = function(digit) { - pinService.pressPin(this, digit); - }; - - this.skip = function() { - pinService.skipPin(this); - }; - - this.agreeDisclaimer = function() { - if (localStorageService.set(KEY, true)) { - this.showDisclaimer = null; - } - }; - - this.formFocus = function() { - if (this.isWindowsPhoneApp) { - this.hideForWP = true; - $timeout(function() { - this.$digest(); - }, 1); - } - }; - - this.openWithPin = function(pin) { - - if (!pin) { - this.error = 'Please enter the required fields'; - return; - } - $rootScope.starting = true; - - $timeout(function() { - var credentials = pinService.get(pin, function(err, credentials) { - if (err || !credentials) { - $rootScope.starting = null; - this.error = 'Wrong PIN'; - this.clear(); - $timeout(function() { - this.error = null; - }, 2000); - return; - } - this.open(credentials.email, credentials.password); - }); - }, 100); - }; - - this.openWallets = function() { - var iden = $rootScope.iden; - $rootScope.hideNavigation = false; - $rootScope.starting = true; - iden.openWallets(); - }; - - this.createPin = function(pin) { - preconditions.checkArgument(pin); - preconditions.checkState($rootScope.iden); - preconditions.checkState(_credentials && _credentials.email); - $rootScope.starting = true; - - $timeout(function() { - pinService.save(pin, _credentials.email, _credentials.password, function(err) { - _credentials.password = ''; - _credentials = null; - this.askForPin = 0; - $rootScope.hasPin = true; - $rootScope.starting = null; - this.openWallets(); - }); - }, 100); - }; - - this.openWithCredentials = function(form) { - if (form && form.$invalid) { - this.error = 'Please enter the required fields'; - return; - } - - this.open(form.email.$modelValue, form.password.$modelValue); - }; - - - this.pinLogout = function() { - pinService.clear(function() { - copay.logger.debug('PIN erased'); - delete $rootScope['hasPin']; - applicationService.restart(); - }); - }; - - this.open = function(username, password) { - $rootScope.starting = true; - profileService.open(username, password, function(err) { - if (err) { - $rootScope.starting = false; - $rootScope.hasPin = false; - pinService.clear(function() {}); - this.error = 'Unknown error'; - return; - } - - // mobile - if (this.isMobile && !$rootScope.hasPin) { - _credentials = { - email: email, - password: password, - }; - this.askForPin = 1; - $rootScope.starting = false; - $rootScope.hideNavigation = true; - $timeout(function() { - $rootScope.$digest(); - }, 1); - } - // no mobile - else { - // this.openWallets(); - } - }); - }; - - function getParam(sname) { - var params = location.search.substr(location.search.indexOf("?") + 1); - var sval = ""; - params = params.split("&"); - // split param and value into individual pieces - for (var i = 0; i < params.length; i++) { - var temp = params[i].split("="); - if ([temp[0]] == sname) { - sval = temp[1]; - } - } - return sval; - } - }); diff --git a/src/js/controllers/unsupported.js b/src/js/controllers/unsupported.js deleted file mode 100644 index ff2dcac3b..000000000 --- a/src/js/controllers/unsupported.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -angular.module('copayApp.controllers').controller('unsupportedController', function($state) { - if (localStorage && localStorage.length > 0) { - $state.go('signin'); - } -}); diff --git a/src/js/controllers/walletForPayment.js b/src/js/controllers/walletForPayment.js deleted file mode 100644 index 497d075e4..000000000 --- a/src/js/controllers/walletForPayment.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; -angular.module('copayApp.controllers').controller('walletForPaymentController', function($rootScope, $scope, $modal, identityService, go) { - - // INIT: (not it a function, since there is no associated html) - - var ModalInstanceCtrl = function($scope, $modalInstance, identityService) { - $scope.loading = true; - preconditions.checkState($rootScope.iden); - - var iden = $rootScope.iden; - iden.on('newWallet', function() { - $scope.setWallets(); - }); - - $scope.setWallets = function() { - $scope.wallets = $rootScope.iden.getWallets(); - }; - - $scope.ok = function(w) { - $modalInstance.close(w); - }; - - $scope.cancel = function() { - $rootScope.pendingPayment = null; - $modalInstance.close(); - }; - }; - - var modalInstance = $modal.open({ - templateUrl: 'views/modals/walletSelection.html', - windowClass: 'full', - controller: ModalInstanceCtrl, - }); - - modalInstance.result.then(function(w) { - if (w) { - identityService.setFocusedWallet(w); - $rootScope.walletForPaymentSet = true; - } else { - $rootScope.pendingPayment = null; - } - go.walletHome(); - }, function() { - $rootScope.pendingPayment = null; - go.walletHome(); - }); -}); diff --git a/src/js/controllers/warning.js b/src/js/controllers/warning.js deleted file mode 100644 index 62f42b94b..000000000 --- a/src/js/controllers/warning.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; -angular.module('copayApp.controllers').controller('WarningController', function($scope, $rootScope, $location, identityService) { - - $scope.checkLock = function() { - if (!$rootScope.tmp || !$rootScope.tmp.getLock()) { - console.log('[warning.js.7] TODO LOCK'); //TODO - } - }; - - $scope.signout = function() { - identityService.signout(); - }; - - $scope.ignoreLock = function() { - var w = $rootScope.tmp; - delete $rootScope['tmp']; - - if (!w) { - $location.path('/'); - } else { - w.ignoreLock = 1; - $scope.loading = true; - //controllerUtils.startNetwork(w, $scope); - // TODO - } - }; -}); From f1fe437f7b774b4c55e7e367b7992b6b2e2b36d1 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 20 Apr 2015 18:47:36 -0300 Subject: [PATCH 2/6] Added templates for translates --- .gitignore | 3 +- po/template.pot | 749 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 750 insertions(+), 2 deletions(-) create mode 100644 po/template.pot diff --git a/.gitignore b/.gitignore index e02c6fa81..7f26c1ac0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ # translation -po/* -!po/*.po +po/*.mo src/js/translations.js # version diff --git a/po/template.pot b/po/template.pot new file mode 100644 index 000000000..93923a29e --- /dev/null +++ b/po/template.pot @@ -0,0 +1,749 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Project-Id-Version: \n" + +#: public/views/splash/1.html +msgid "* In case you need to import wallets from previous Copay versions go to Menu" +msgstr "" + +#: public/views/modals/txp-details.html +msgid "* Only transactions created by yourself with no peer signatures can be removed" +msgstr "" + +#: public/views/backup.html +msgid "* You can safely install your backup on other device and use your wallet from many devices at the same time." +msgstr "" + +#: public/views/modals/address-book.html +msgid "Add" +msgstr "" + +#: public/views/modals/address-book.html +msgid "Add a new entry" +msgstr "" + +#: public/views/modals/address-book.html +msgid "Add entry" +msgstr "" + +#: public/views/includes/sidebar.html +msgid "Add wallet" +msgstr "" + +#: public/views/paymentUri.html +#: public/views/modals/address-book.html +#: public/views/modals/qr-address.html +msgid "Address" +msgstr "" + +#: public/views/modals/address-book.html +msgid "Address Book" +msgstr "" + +#: public/views/preferences.html +msgid "Alternative Currency" +msgstr "" + +#: public/views/paymentUri.html +#: public/views/send.html +msgid "Amount" +msgstr "" + +#: public/views/send.html +msgid "Amount in" +msgstr "" + +#: public/views/send.html +msgid "Available Balance" +msgstr "" + +#: public/views/create.html +#: public/views/join.html +msgid "BIP32 master extended private key" +msgstr "" + +#: public/views/includes/topbar.html +msgid "Back" +msgstr "" + +#: public/views/preferences.html +msgid "Backup" +msgstr "" + +#: public/views/receive.html +msgid "Backup now" +msgstr "" + +#: public/views/backup.html +msgid "Backup options" +msgstr "" + +#: public/views/receive.html +msgid "Before receiving funds, it is highly recommended you backup your wallet keys." +msgstr "" + +#: public/views/paymentUri.html +msgid "Bitcoin URI is NOT valid!" +msgstr "" + +#: public/views/send.html +msgid "Bitcoin address" +msgstr "" + +#: public/views/preferences.html +msgid "Bitcore Wallet Service" +msgstr "" + +#: public/views/preferencesBwsUrl.html +msgid "Bitcore Wallet Service URL" +msgstr "" + +#: public/views/modals/tx-details.html +msgid "Blockchain" +msgstr "" + +#: public/views/modals/txp-details.html +msgid "Broadcast Transaction" +msgstr "" + +#: public/views/unsupported.html +msgid "Browser unsupported" +msgstr "" + +#: public/views/modals/txp-details.html +msgid "But not broadcasted. Try to send manually" +msgstr "" + +#: public/views/includes/password.html +msgid "CANCEL" +msgstr "" + +#: public/views/copayers.html +#: public/views/send.html +#: public/views/modals/address-book.html +#: public/views/modals/confirmation.html +msgid "Cancel" +msgstr "" + +#: public/views/modals/paypro.html +msgid "Certified by:" +msgstr "" + +#: public/views/import.html +msgid "Choose backup file from your computer" +msgstr "" + +#: public/views/modals/address-book.html +#: public/views/modals/copayers.html +#: public/views/modals/paypro.html +#: public/views/modals/qr-address.html +#: public/views/modals/scanner.html +#: public/views/modals/tx-details.html +#: public/views/modals/txp-details.html +#: public/views/modals/walletSelection.html +msgid "Close" +msgstr "" + +#: public/views/preferences.html +msgid "Color" +msgstr "" + +#: public/views/modals/tx-details.html +msgid "Confirmations:" +msgstr "" + +#: public/views/modals/copayers.html +msgid "Copayers" +msgstr "" + +#: public/views/backup.html +msgid "Copy backup in a safe place" +msgstr "" + +#: public/views/backup.html +msgid "Copy this text as it is in a safe place (notepad or email)" +msgstr "" + +#: public/views/backup.html +#: public/views/modals/qr-address.html +msgid "Copy to clipboard" +msgstr "" + +#: public/views/includes/offline.html +msgid "Could not connect to Wallet Service" +msgstr "" + +#: public/views/create.html +#: public/views/walletHome.html +msgid "Create" +msgstr "" + +#: public/views/add.html +msgid "Create new wallet" +msgstr "" + +#: public/views/includes/sidebar.html +msgid "Create, join or import" +msgstr "" + +#: public/views/create.html +#: public/views/createProfile.html +msgid "Creating wallet..." +msgstr "" + +#: public/views/modals/address-book.html +msgid "Creator" +msgstr "" + +#: public/views/modals/address-book.html +msgid "Date" +msgstr "" + +#: public/views/modals/tx-details.html +msgid "Date:" +msgstr "" + +#: public/views/preferences.html +msgid "Delete" +msgstr "" + +#: public/views/backup.html +msgid "Download backup" +msgstr "" + +#: public/views/includes/password.html +msgid "ENTER" +msgstr "" + +#: public/views/modals/address-book.html +msgid "Empty. Create an alias for your addresses" +msgstr "" + +#: public/views/preferences.html +msgid "Encrypt Private Key" +msgstr "" + +#: public/views/includes/password.html +msgid "Enter your password" +msgstr "" + +#: public/views/modals/address-book.html +msgid "Entry" +msgstr "" + +#: public/views/modals/paypro.html +msgid "Expires:" +msgstr "" + +#: public/views/create.html +msgid "Family vacation funds" +msgstr "" + +#: public/views/send.html +msgid "Fetching Payment Information..." +msgstr "" + +#: public/views/receive.html +msgid "Generate new address" +msgstr "" + +#: public/views/receive.html +msgid "Generating a new address..." +msgstr "" + +#: public/views/history.html +msgid "Getting transactions..." +msgstr "" + +#: public/views/preferences.html +msgid "Global settings" +msgstr "" + +#: public/views/create.html +#: public/views/join.html +msgid "Hide" +msgstr "" + +#: public/views/importLegacy.html +msgid "Import" +msgstr "" + +#: public/views/import.html +msgid "Import backup" +msgstr "" + +#: public/views/add.html +msgid "Import from Copay Beta 0.9" +msgstr "" + +#: public/views/importLegacy.html +msgid "Import from the Cloud?" +msgstr "" + +#: public/views/add.html +msgid "Import wallet" +msgstr "" + +#: public/views/import.html +msgid "Importing wallet..." +msgstr "" + +#: public/views/modals/tx-details.html +#: public/views/modals/txp-details.html +msgid "Information" +msgstr "" + +#: public/views/create.html +#: public/views/join.html +msgid "John" +msgstr "" + +#: public/views/join.html +msgid "Join" +msgstr "" + +#: public/views/add.html +msgid "Join shared wallet" +msgstr "" + +#: public/views/join.html +msgid "Joining shared wallet..." +msgstr "" + +#: public/views/modals/address-book.html +msgid "Label" +msgstr "" + +#: public/views/importLegacy.html +msgid "Learn more about Wallet Migration" +msgstr "" + +#: public/views/modals/walletSelection.html +msgid "Loading..." +msgstr "" + +#: public/views/paymentUri.html +msgid "Make a payment to" +msgstr "" + +#: public/views/create.html +msgid "Master extended private key" +msgstr "" + +#: public/views/includes/copayers.html +#: public/views/modals/copayers.html +msgid "Me" +msgstr "" + +#: public/views/modals/paypro.html +#: public/views/modals/tx-details.html +msgid "Merchant Message:" +msgstr "" + +#: public/views/paymentUri.html +msgid "Message" +msgstr "" + +#: public/views/history.html +msgid "More" +msgstr "" + +#: public/views/walletHome.html +msgid "Multisignature wallet" +msgstr "" + +#: public/views/receive.html +msgid "My Bitcoin address:" +msgstr "" + +#: public/views/walletHome.html +msgid "No pending spend proposals at the moment." +msgstr "" + +#: public/views/send.html +#: public/views/modals/address-book.html +msgid "Not valid" +msgstr "" + +#: public/views/send.html +msgid "Note" +msgstr "" + +#: public/views/modals/tx-details.html +msgid "Note:" +msgstr "" + +#: public/views/modals/confirmation.html +msgid "OK" +msgstr "" + +#: public/views/modals/tx-status.html +msgid "OKAY" +msgstr "" + +#: public/views/walletHome.html +msgid "Opening Wallet..." +msgstr "" + +#: public/views/import.html +#: public/views/importLegacy.html +msgid "Password" +msgstr "" + +#: public/views/includes/password.html +msgid "Password cannot be recovered. Be sure to write it down" +msgstr "" + +#: public/views/import.html +msgid "Paste backup plain text code" +msgstr "" + +#: public/views/join.html +msgid "Paste wallet secret here" +msgstr "" + +#: public/views/modals/tx-status.html +msgid "Payment Sent" +msgstr "" + +#: public/views/modals/paypro.html +msgid "Payment protocol request" +msgstr "" + +#: public/views/send.html +msgid "Payment to" +msgstr "" + +#: public/views/preferencesDeleteWallet.html +msgid "Permanently delete this wallet. WARNING: this action cannot be reversed." +msgstr "" + +#: public/views/walletHome.html +msgid "Personal Wallet" +msgstr "" + +#: public/views/walletHome.html +msgid "Preferences" +msgstr "" + +#: public/views/modals/scanner.html +msgid "QR-Scanner" +msgstr "" + +#: public/views/walletHome.html +msgid "Recreate" +msgstr "" + +#: public/views/walletHome.html +msgid "Recreating Wallet on BWS..." +msgstr "" + +#: public/views/modals/txp-details.html +msgid "Reject" +msgstr "" + +#: public/views/modals/txp-details.html +msgid "Remove" +msgstr "" + +#: public/views/backup.html +#: public/views/includes/password.html +msgid "Repeat Password" +msgstr "" + +#: public/views/backup.html +msgid "Repeat password" +msgstr "" + +#: public/views/import.html +#: public/views/join.html +#: public/views/modals/address-book.html +msgid "Required" +msgstr "" + +#: public/views/includes/password.html +msgid "SET" +msgstr "" + +#: public/views/receive.html +msgid "SKIP BACKUP" +msgstr "" + +#: public/views/splash/1.html +msgid "START" +msgstr "" + +#: public/views/preferencesBwsUrl.html +msgid "Save" +msgstr "" + +#: public/views/walletHome.html +msgid "Scanning Wallet funds..." +msgstr "" + +#: public/views/modals/tx-details.html +msgid "See it on the blockchain" +msgstr "" + +#: public/views/import.html +msgid "Select a backup file" +msgstr "" + +#: public/views/paymentUri.html +msgid "Select a wallet" +msgstr "" + +#: public/views/modals/walletSelection.html +msgid "Select a wallet to make the payment" +msgstr "" + +#: public/views/create.html +msgid "Select required signatures" +msgstr "" + +#: public/views/create.html +msgid "Select total number of copayers" +msgstr "" + +#: public/views/send.html +msgid "Send" +msgstr "" + +#: public/views/backup.html +msgid "Send by email" +msgstr "" + +#: public/views/importLegacy.html +msgid "Server" +msgstr "" + +#: public/views/includes/password.html +msgid "Set up a Password" +msgstr "" + +#: public/views/backup.html +msgid "Set up a Password for your backup" +msgstr "" + +#: public/views/receive.html +msgid "Share address" +msgstr "" + +#: public/views/copayers.html +msgid "Share secret" +msgstr "" + +#: public/views/copayers.html +msgid "Share this secret with your copayers" +msgstr "" + +#: public/views/receive.html +msgid "Share this with anyone to have them send you payments. To protect your privacy, new addresses are generated automatically once you use them." +msgstr "" + +#: public/views/create.html +#: public/views/join.html +msgid "Show" +msgstr "" + +#: public/views/modals/txp-details.html +msgid "Sign" +msgstr "" + +#: public/views/modals/tx-details.html +msgid "Signatures" +msgstr "" + +#: public/views/includes/pin.html +msgid "Skip" +msgstr "" + +#: public/views/walletHome.html +msgid "Spend proposals" +msgstr "" + +#: public/views/backup.html +msgid "This wallet have its private key encrypted. Exporting a backup will keep the private key encrypted on the backup." +msgstr "" + +#: public/views/walletHome.html +msgid "This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information." +msgstr "" + +#: public/views/send.html +#: public/views/includes/transaction.html +msgid "To" +msgstr "" + +#: public/views/modals/paypro.html +#: public/views/modals/tx-details.html +msgid "To:" +msgstr "" + +#: public/views/walletHome.html +msgid "Total Locked Balance" +msgstr "" + +#: public/views/modals/tx-details.html +msgid "Transaction" +msgstr "" + +#: public/views/modals/txp-details.html +msgid "Transaction accepted..." +msgstr "" + +#: public/views/modals/txp-details.html +msgid "Transaction finally rejected" +msgstr "" + +#: public/views/modals/txp-details.html +msgid "Transaction proposal" +msgstr "" + +#: public/views/modals/txp-details.html +msgid "Transaction sent!" +msgstr "" + +#: public/views/includes/offline.html +msgid "Trying to reconnnect..." +msgstr "" + +#: public/views/history.html +#: public/views/modals/tx-details.html +msgid "Unconfirmed" +msgstr "" + +#: public/views/preferences.html +msgid "Unit" +msgstr "" + +#: public/views/walletHome.html +msgid "Unsent transactions" +msgstr "" + +#: public/views/modals/paypro.html +msgid "Untrusted" +msgstr "" + +#: public/views/walletHome.html +msgid "Updating Balance..." +msgstr "" + +#: public/views/walletHome.html +msgid "Updating Pending Transactions..." +msgstr "" + +#: public/views/walletHome.html +msgid "Updating Status..." +msgstr "" + +#: public/views/create.html +msgid "Use test network" +msgstr "" + +#: public/views/backup.html +msgid "View backup" +msgstr "" + +#: public/views/modals/address-book.html +msgid "Visible" +msgstr "" + +#: public/views/receive.html +msgid "WARNING: Backup needed" +msgstr "" + +#: public/views/walletHome.html +msgid "WARNING: Wallet not registered" +msgstr "" + +#: public/views/splash/1.html +msgid "WELCOME TO" +msgstr "" + +#: public/views/copayers.html +msgid "Waiting for copayers" +msgstr "" + +#: public/views/copayers.html +msgid "Waiting..." +msgstr "" + +#: public/views/join.html +msgid "Wallet Secret" +msgstr "" + +#: public/views/join.html +msgid "Wallet Secret is not valid!" +msgstr "" + +#: public/views/copayers.html +msgid "Wallet incomplete and broken" +msgstr "" + +#: public/views/create.html +msgid "Wallet name" +msgstr "" + +#: public/views/preferencesDeleteWallet.html +msgid "Warning!" +msgstr "" + +#: public/views/walletHome.html +msgid "You do not have any wallet" +msgstr "" + +#: public/views/backup.html +#: public/views/import.html +msgid "Your backup password" +msgstr "" + +#: public/views/create.html +#: public/views/join.html +msgid "Your nickname" +msgstr "" + +#: public/views/includes/password.html +msgid "Your password" +msgstr "" + +#: public/views/importLegacy.html +msgid "Your profile password" +msgstr "" + +#: public/views/create.html +#: public/views/join.html +msgid "advanced options" +msgstr "" + +#: public/views/modals/qr-address.html +msgid "change" +msgstr "" + +#: public/views/send.html +msgid "in pending transactions" +msgstr "" + +#: public/views/copayers.html +#: public/views/create.html +#: public/views/walletHome.html +msgid "of" +msgstr "" + +#: public/views/send.html +msgid "optional" +msgstr "" + +#: public/views/send.html +msgid "too long!" +msgstr "" + +#: public/views/create.html +msgid "wallet" +msgstr "" + +#: public/views/preferences.html +msgid "{{index.walletName}} settings" +msgstr "" From 95bfd555f299bcae2e417b77a36a023ec128a1b0 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 20 Apr 2015 18:48:17 -0300 Subject: [PATCH 3/6] Fix unsupported pages if browser not support localStorage --- Gruntfile.js | 1 + src/js/routes.js | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 575fd0f64..c062a6aef 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -79,6 +79,7 @@ module.exports = function(grunt) { angular: { src: [ 'bower_components/fastclick/lib/fastclick.js', + 'bower_components/modernizr/modernizr.js', 'bower_components/qrcode-generator/js/qrcode.js', 'bower_components/qrcode-decoder-js/lib/qrcode-decoder.js', 'bower_components/moment/min/moment-with-locales.js', diff --git a/src/js/routes.js b/src/js/routes.js index 7ceea95a4..ae6b1def7 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -7,6 +7,11 @@ if (window && window.navigator) { var isaosp = (rxaosp && rxaosp[1] < 537); if (!window.cordova && isaosp) unsupported = true; + if (!Modernizr.localstorage) + unsupported = true; + if (unsupported) { + window.location = '#/unsupported'; + } } @@ -463,11 +468,6 @@ angular $rootScope.$emit('Animation/SwipeLeft'); } - if (unsupported) { - $state.transitionTo('unsupported'); - event.preventDefault(); - } - if (!profileService.profile && toState.needProfile) { // Try to open local profile From 6d9d750952762b04e88e4470c19f3f08aefdde41 Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 20 Apr 2015 18:48:42 -0300 Subject: [PATCH 4/6] Fix minor texts for translates --- public/views/importLegacy.html | 2 +- public/views/preferences.html | 2 +- public/views/send.html | 2 +- public/views/unsupported.html | 8 ++++---- public/views/walletHome.html | 5 ++--- src/css/main.css | 6 ------ 6 files changed, 9 insertions(+), 16 deletions(-) diff --git a/public/views/importLegacy.html b/public/views/importLegacy.html index 57778fdf7..b3cf0078e 100644 --- a/public/views/importLegacy.html +++ b/public/views/importLegacy.html @@ -32,7 +32,7 @@ diff --git a/public/views/preferences.html b/public/views/preferences.html index bfcb9397c..8dca6a62e 100644 --- a/public/views/preferences.html +++ b/public/views/preferences.html @@ -15,7 +15,7 @@ -

 

+

 

  • Backup diff --git a/public/views/send.html b/public/views/send.html index 98e2b0e48..d05de233a 100644 --- a/public/views/send.html +++ b/public/views/send.html @@ -119,7 +119,7 @@
    - {{send.onGoingProcess}}... + {{send.onGoingProcess|translate}}...
    diff --git a/public/views/unsupported.html b/public/views/unsupported.html index 17d572160..a8d8502ac 100644 --- a/public/views/unsupported.html +++ b/public/views/unsupported.html @@ -1,10 +1,10 @@ -
    +
    - Copay + Copay
    -

    Browser unsupported

    -

    +

    Browser unsupported

    +

    Copay does not support your browser. Please use a current version of Google Chrome, Mozilla Firefox, Internet Explorer, Safari, or Opera.
    diff --git a/public/views/walletHome.html b/public/views/walletHome.html index ea59d50a6..c527cb240 100644 --- a/public/views/walletHome.html +++ b/public/views/walletHome.html @@ -50,7 +50,7 @@
    Multisignature wallet Personal Wallet - - Testnet + - Testnet

    @@ -64,8 +64,7 @@
    -This wallet is not registered at the given Bitcore Wallet Service (BWS). -You can recreate it from the local information. + This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information.
    Date: Mon, 20 Apr 2015 18:56:45 -0300 Subject: [PATCH 5/6] Commented auto-detect language --- src/js/routes.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/js/routes.js b/src/js/routes.js index ae6b1def7..ef538d08a 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -419,18 +419,20 @@ angular }) .run(function($rootScope, $state, $log, gettextCatalog, uriHandler, isCordova, amMoment, profileService) { - var userLang, androidLang; + // Auto-detect browser language + // Commented for now (default: English) + //var userLang, androidLang; + // + //if (navigator && navigator.userAgent && (androidLang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) { + // userLang = androidLang[1]; + //} else { + // // works for iOS and Android 4.x + // userLang = navigator.userLanguage || navigator.language; + //} - if (navigator && navigator.userAgent && (androidLang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) { - userLang = androidLang[1]; - } else { - // works for iOS and Android 4.x - userLang = navigator.userLanguage || navigator.language; - } - - userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; - gettextCatalog.setCurrentLanguage(userLang); - amMoment.changeLocale(userLang); + //userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; + //gettextCatalog.setCurrentLanguage(userLang); + //amMoment.changeLocale(userLang); // Register URI handler, not for mobileApp if (!isCordova) { From 0b4cfe0614d9e96dff65040d8f9da56606f0836b Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Mon, 20 Apr 2015 18:59:17 -0300 Subject: [PATCH 6/6] Fix karma test --- test/karma.conf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/karma.conf.js b/test/karma.conf.js index bce8dc7e8..3b2cb70bd 100644 --- a/test/karma.conf.js +++ b/test/karma.conf.js @@ -16,12 +16,12 @@ module.exports = function(config) { // list of files / patterns to load in the browser files: [ 'bower_components/fastclick/lib/fastclick.js', + 'bower_components/modernizr/modernizr.js', 'bower_components/qrcode-generator/js/qrcode.js', 'bower_components/qrcode-decoder-js/lib/qrcode-decoder.js', 'bower_components/moment/min/moment-with-locales.js', 'bower_components/angular/angular.js', 'bower_components/angular-ui-router/release/angular-ui-router.js', - 'bower_components/angular-local-storage/dist/angular-local-storage.js', 'bower_components/angular-foundation/mm-foundation.js', 'bower_components/angular-foundation/mm-foundation-tpls.js', 'bower_components/angular-animate/angular-animate.js',