Merge pull request #1401 from cmgustavo/bug/01-typos-translate

Translation support for alerts/confirms/prompts
This commit is contained in:
Matias Alejo Garcia 2014-09-22 09:33:04 -03:00
commit 133369dd18
21 changed files with 397 additions and 112 deletions

View file

@ -97,7 +97,7 @@ angular.module('copayApp.controllers').controller('ImportController',
if (!backupFile) { if (!backupFile) {
$scope.loading = false; $scope.loading = false;
notification.error('Error', 'Please, select your backup file or paste the file contents'); notification.error('Error', 'Please, select your backup file');
$scope.loading = false; $scope.loading = false;
return; return;
} }

View file

@ -1,7 +1,7 @@
'use strict'; 'use strict';
angular.module('copayApp.controllers').controller('MoreController', angular.module('copayApp.controllers').controller('MoreController',
function($scope, $rootScope, $location, backupService, walletFactory, controllerUtils, notification, rateService) { function($scope, $rootScope, $location, $filter, backupService, walletFactory, controllerUtils, notification, rateService) {
var w = $rootScope.wallet; var w = $rootScope.wallet;
$scope.unitOpts = [{ $scope.unitOpts = [{
@ -80,7 +80,7 @@ angular.module('copayApp.controllers').controller('MoreController',
if (removed) { if (removed) {
controllerUtils.updateBalance(); controllerUtils.updateBalance();
} }
notification.info('Tx Proposals Purged', removed + ' transaction proposal purged'); notification.info('Transactions Proposals Purged', removed + ' ' + $filter('translate')('transaction proposal purged'));
}; };
$scope.updateIndexes = function() { $scope.updateIndexes = function() {
@ -88,7 +88,7 @@ angular.module('copayApp.controllers').controller('MoreController',
w.updateIndexes(function(err) { w.updateIndexes(function(err) {
notification.info('Scan Ended', 'Updating balance'); notification.info('Scan Ended', 'Updating balance');
if (err) { if (err) {
notification.error('Error', 'Error updating indexes: ' + err); notification.error('Error', $filter('translate')('Error updating indexes: ') + err);
} }
controllerUtils.updateAddressList(); controllerUtils.updateAddressList();
controllerUtils.updateBalance(function() { controllerUtils.updateBalance(function() {

View file

@ -109,7 +109,7 @@ angular.module('copayApp.controllers').controller('SendController',
$scope.submitForm = function(form) { $scope.submitForm = function(form) {
if (form.$invalid) { if (form.$invalid) {
var message = 'Unable to send transaction proposal.'; var message = 'Unable to send transaction proposal';
notification.error('Error', message); notification.error('Error', message);
return; return;
} }
@ -152,7 +152,7 @@ angular.module('copayApp.controllers').controller('SendController',
message += ' Message from server: ' + merchantData.ack.memo; message += ' Message from server: ' + merchantData.ack.memo;
message += ' For merchant: ' + merchantData.pr.pd.payment_url; message += ' For merchant: ' + merchantData.pr.pd.payment_url;
} }
notification.success('Success!', message); notification.success('Success', message);
$scope.loadTxs(); $scope.loadTxs();
} else { } else {
w.sendTx(ntxid, function(txid, merchantData) { w.sendTx(ntxid, function(txid, merchantData) {
@ -165,9 +165,9 @@ angular.module('copayApp.controllers').controller('SendController',
message += ' Message from server: ' + merchantData.ack.memo; message += ' Message from server: ' + merchantData.ack.memo;
message += ' For merchant: ' + merchantData.pr.pd.payment_url; message += ' For merchant: ' + merchantData.pr.pd.payment_url;
} }
notification.success('Transaction broadcast', message); notification.success('Transaction broadcasted', message);
} else { } else {
notification.error('Error', 'There was an error sending the transaction.'); notification.error('Error', 'There was an error sending the transaction');
} }
$scope.loading = false; $scope.loading = false;
$scope.loadTxs(); $scope.loadTxs();
@ -421,7 +421,7 @@ angular.module('copayApp.controllers').controller('SendController',
notification.error('Error', 'There was an error sending the transaction'); notification.error('Error', 'There was an error sending the transaction');
} else { } else {
if (!merchantData) { if (!merchantData) {
notification.success('Transaction broadcast', 'Transaction id: ' + txid); notification.success('Transaction broadcasted', 'Transaction id: ' + txid);
} else { } else {
var message = 'Transaction ID: ' + txid; var message = 'Transaction ID: ' + txid;
if (merchantData.pr.ca) { if (merchantData.pr.ca) {

View file

@ -1,6 +1,6 @@
'use strict'; 'use strict';
angular.module('copayApp.controllers').controller('SidebarController', function($scope, $rootScope, $sce, $location, $http, notification, controllerUtils) { angular.module('copayApp.controllers').controller('SidebarController', function($scope, $rootScope, $sce, $location, $http, $filter, notification, controllerUtils) {
$scope.menu = [{ $scope.menu = [{
'title': 'Receive', 'title': 'Receive',
@ -60,7 +60,7 @@ angular.module('copayApp.controllers').controller('SidebarController', function(
if ($rootScope.wallet) { if ($rootScope.wallet) {
$scope.$on('$idleWarn', function(a,countdown) { $scope.$on('$idleWarn', function(a,countdown) {
if (!(countdown%5)) if (!(countdown%5))
notification.warning('Session will be closed', 'Your session is about to expire due to inactivity in ' + countdown + ' seconds'); notification.warning('Session will be closed', $filter('translate')('Your session is about to expire due to inactivity in') + ' ' + countdown + ' ' + $filter('translate')('seconds'));
}); });
$scope.$on('$idleTimeout', function() { $scope.$on('$idleTimeout', function() {

View file

@ -1,14 +1,13 @@
'use strict'; 'use strict';
angular.module('copayApp.controllers').controller('VersionController', angular.module('copayApp.controllers').controller('VersionController',
function($scope, $rootScope, $http, notification) { function($scope, $rootScope, $http, $filter, notification) {
var w = $rootScope.wallet; var w = $rootScope.wallet;
$scope.version = copay.version; $scope.version = copay.version;
$scope.commitHash = copay.commitHash; $scope.commitHash = copay.commitHash;
$scope.networkName = w ? w.getNetworkName() : ''; $scope.networkName = w ? w.getNetworkName() : '';
$scope.defaultLanguage = config.defaultLanguage;
if (_.isUndefined($rootScope.checkVersion)) if (_.isUndefined($rootScope.checkVersion))
$rootScope.checkVersion = true; $rootScope.checkVersion = true;
@ -20,7 +19,7 @@ angular.module('copayApp.controllers').controller('VersionController',
}; };
var latestVersion = data[0].name.replace('v', '').split('.').map(toInt); var latestVersion = data[0].name.replace('v', '').split('.').map(toInt);
var currentVersion = copay.version.split('.').map(toInt); var currentVersion = copay.version.split('.').map(toInt);
var title = 'Copay ' + data[0].name + ' available.'; var title = 'Copay ' + data[0].name + ' ' + $filter('translate')('available.');
var content; var content;
if (currentVersion[0] < latestVersion[0]) { if (currentVersion[0] < latestVersion[0]) {
content = 'It\'s important that you update your wallet at https://copay.io'; content = 'It\'s important that you update your wallet at https://copay.io';

View file

@ -19,7 +19,7 @@ BackupService.prototype.download = function(wallet) {
var copayerName = this.getCopayer(wallet); var copayerName = this.getCopayer(wallet);
var filename = (copayerName ? copayerName + '-' : '') + walletName + '-keybackup.json.aes'; var filename = (copayerName ? copayerName + '-' : '') + walletName + '-keybackup.json.aes';
this.notifications.success('Backup created', 'Encrypted backup file saved.'); this.notifications.success('Backup created', 'Encrypted backup file saved');
var blob = new Blob([ew], { var blob = new Blob([ew], {
type: 'text/plain;charset=utf-8' type: 'text/plain;charset=utf-8'
}); });

View file

@ -2,7 +2,7 @@
var bitcore = require('bitcore'); var bitcore = require('bitcore');
angular.module('copayApp.services') angular.module('copayApp.services')
.factory('controllerUtils', function($rootScope, $sce, $location, notification, $timeout, uriHandler, rateService) { .factory('controllerUtils', function($rootScope, $sce, $location, $filter, notification, $timeout, uriHandler, rateService) {
var root = {}; var root = {};
root.redirIfLogged = function() { root.redirIfLogged = function() {
@ -51,7 +51,7 @@ angular.module('copayApp.services')
}); });
w.on('corrupt', function(peerId) { w.on('corrupt', function(peerId) {
notification.error('Error', 'Received corrupt message from ' + peerId); notification.error('Error', $filter('translate')('Received corrupt message from ') + peerId);
}); });
w.on('ready', function(myPeerID) { w.on('ready', function(myPeerID) {
$rootScope.wallet = w; $rootScope.wallet = w;
@ -111,13 +111,13 @@ angular.module('copayApp.services')
var user = w.publicKeyRing.nicknameForCopayer(e.cId); var user = w.publicKeyRing.nicknameForCopayer(e.cId);
switch (e.type) { switch (e.type) {
case 'signed': case 'signed':
notification.info('Transaction Update', 'A transaction was signed by ' + user); notification.info('Transaction Update', $filter('translate')('A transaction was signed by') + ' ' + user);
break; break;
case 'rejected': case 'rejected':
notification.info('Transaction Update', 'A transaction was rejected by ' + user); notification.info('Transaction Update', $filter('translate')('A transaction was rejected by') + ' ' + user);
break; break;
case 'corrupt': case 'corrupt':
notification.error('Transaction Error', 'Received corrupt transaction from ' + user); notification.error('Transaction Error', $filter('translate')('Received corrupt transaction from') + ' ' + user);
break; break;
} }
}); });
@ -142,7 +142,7 @@ angular.module('copayApp.services')
$rootScope.$watch('txAlertCount', function(txAlertCount) { $rootScope.$watch('txAlertCount', function(txAlertCount) {
if (txAlertCount && txAlertCount > 0) { if (txAlertCount && txAlertCount > 0) {
notification.info('New Transaction', ($rootScope.txAlertCount == 1) ? 'You have a pending transaction proposal' : 'You have ' + $rootScope.txAlertCount + ' pending transaction proposals', txAlertCount); notification.info('New Transaction', ($rootScope.txAlertCount == 1) ? 'You have a pending transaction proposal' : $filter('translate')('You have') + ' ' + $rootScope.txAlertCount + ' ' + $filter('translate')('pending transaction proposals'), txAlertCount);
} }
}); });
}; };

340
po/es.po
View file

@ -9,43 +9,40 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.9\n" "X-Generator: Poedit 1.6.8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: views/create.html #: views/create.html
msgid "(*) The limits are imposed by the bitcoin network." msgid "(*) The limits are imposed by the bitcoin network."
msgstr "(*) Los límites son impuestos por la red de bitcoin." msgstr "(*) Los límites son impuestos por la red de bitcoin."
#: views/dummy-translations.html
msgid "A transaction was rejected by"
msgstr "Una transacción fue rechazada por"
#: views/dummy-translations.html
msgid "A transaction was signed by"
msgstr "Una transacción fue firmada por"
#: views/more.html #: views/more.html
#, fuzzy
msgid "" msgid ""
"ALL Transactions Proposals will be discarted. This needs to be done on " "ALL Transactions Proposals will be discarted. This needs to be done on "
"<b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced " "<b>ALL</b> peers of a wallet, to prevent the old proposals to be resynced "
"again.\n" "again."
" </b></b>"
msgstr "" msgstr ""
"TODAS las Propuestas de Transacciones serán descartadas. Es necesario que lo " "TODAS las Propuestas de Transacciones serán descartadas. Es necesario que lo "
"hagan <b>TODOS<b> los compañeros del monedero, para prevenir que las viejas " "hagan <b>TODOS</b> los compañeros del monedero, para prevenir que las viejas "
"propuestas sean re sincronizadas de nuevo.\n" "propuestas sean re sincronizadas de nuevo."
" </b></b>"
#: views/modals/address-book.html #: views/send.html views/modals/address-book.html
msgid "Add Address" msgid "Add"
msgstr "Agregar Dirección" msgstr "Agregar"
#: views/modals/address-book.html
msgid "Add Address Book Entry"
msgstr "Nueva entrada"
#: views/send.html
msgid "Add New Entry"
msgstr "Nueva Entrada"
#: views/send.html views/modals/address-book.html #: views/send.html views/modals/address-book.html
msgid "Address" msgid "Address"
msgstr "Dirección" msgstr "Dirección"
#: views/send.html #: views/send.html views/modals/address-book.html
msgid "Address Book" msgid "Address Book"
msgstr "Libreta de Direcciones" msgstr "Libreta de Direcciones"
@ -82,6 +79,10 @@ msgstr "Volver"
msgid "Backup" msgid "Backup"
msgstr "Copia de Seguridad" msgstr "Copia de Seguridad"
#: views/dummy-translations.html
msgid "Backup created"
msgstr "Copia de Seguridad creada"
#: views/copayers.html #: views/copayers.html
msgid "Backup wallet" msgid "Backup wallet"
msgstr "Hacer copia de seguridad" msgstr "Hacer copia de seguridad"
@ -115,9 +116,8 @@ msgid "Certificate:"
msgstr "Certificado:" msgstr "Certificado:"
#: views/create.html #: views/create.html
#, fuzzy
msgid "Choose a password" msgid "Choose a password"
msgstr "Escribe tu contraseña" msgstr "Escribe una contraseña"
#: views/import.html #: views/import.html
msgid "Choose backup file from your computer" msgid "Choose backup file from your computer"
@ -147,10 +147,21 @@ msgstr "Continuar de todas maneras"
msgid "Copayers" msgid "Copayers"
msgstr "Compañeros" msgstr "Compañeros"
#: views/dummy-translations.html
msgid "Copied to clipboard"
msgstr "Copiado al portapapeles"
#: views/modals/qr-address.html #: views/modals/qr-address.html
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "Copiar al portapapeles" msgstr "Copiar al portapapeles"
#: views/dummy-translations.html
msgid ""
"Could not connect to the Insight server. Check your settings and network "
"configuration"
msgstr ""
"No se pudo conectar con el servidor Insight. Verifica la configuración de red"
#: views/home.html #: views/home.html
msgid "Create a new wallet" msgid "Create a new wallet"
msgstr "Crear un nuevo monedero" msgstr "Crear un nuevo monedero"
@ -205,14 +216,38 @@ msgstr "Descargar Archivo"
msgid "Empty. Create an alias for your addresses" msgid "Empty. Create an alias for your addresses"
msgstr "Vacío. Crea una etiqueta para tus direcciones" msgstr "Vacío. Crea una etiqueta para tus direcciones"
#: views/dummy-translations.html
msgid "Encrypted backup file saved"
msgstr "Archivo de copia de seguridad encriptado guardado"
#: views/dummy-translations.html
msgid "Error updating indexes:"
msgstr "Error al actualizar índices:"
#: views/create.html #: views/create.html
msgid "Family vacation funds" msgid "Family vacation funds"
msgstr "Fondos para vacaciones en familia" msgstr "Fondos para vacaciones en familia"
#: views/dummy-translations.html
msgid "Fatal error connecting to Insight server"
msgstr "Error fatal al conectar con el servidor Insight"
#: views/transactions.html views/includes/transaction.html #: views/transactions.html views/includes/transaction.html
msgid "Fee" msgid "Fee"
msgstr "Tasa" msgstr "Tasa"
#: views/dummy-translations.html
msgid "Finished"
msgstr "Finalizado"
#: views/dummy-translations.html
msgid "Form Error"
msgstr "Error en formulario"
#: views/dummy-translations.html
msgid "Funds received!"
msgstr "¡Fondos recibidos!"
#: views/join.html views/send.html #: views/join.html views/send.html
msgid "Get QR code" msgid "Get QR code"
msgstr "Obtener código QR" msgstr "Obtener código QR"
@ -234,45 +269,59 @@ msgstr ""
"Si todos los fondos fueron removidos de tu monedero y no deseas tener los " "Si todos los fondos fueron removidos de tu monedero y no deseas tener los "
"datos guardados en tu computadora, puedes eliminar tu monedero." "datos guardados en tu computadora, puedes eliminar tu monedero."
#: views/home.html #: views/dummy-translations.html views/home.html
msgid "Import a backup" msgid "Import a backup"
msgstr "Importar backup" msgstr "Importar una copia de seguridad"
#: views/import.html #: views/import.html
msgid "Import backup" msgid "Import backup"
msgstr "Importar copia de seguridad" msgstr "Importar copia de seguridad"
#: views/dummy-translations.html
msgid "Importing wallet - Reading backup..."
msgstr "Importando monedero - Leyendo archivo..."
#: views/dummy-translations.html
msgid "Importing wallet - Setting things up..."
msgstr "Importando monedero - Configurando..."
#: views/dummy-translations.html
msgid "Importing wallet - We are almost there..."
msgstr "Importando monedero - Finalizando..."
#: views/send.html #: views/send.html
msgid "Including fee of" msgid "Including fee of"
msgstr "Incluye tasa de" msgstr "Incluye tasa de"
#: views/settings.html #: views/settings.html
#, fuzzy msgid "Insight API server"
msgstr "Servidor de API Insight"
#: views/settings.html
msgid "" msgid ""
"Insight API server is open-source software. You can run your own instances, " "Insight API server is open-source software. You can run your own instances, "
"check <a href=\"http://insight.is\" target=\"_blank\">Insight API Homepage</" "check <a href=\"http://insight.is\" target=\"_blank\">Insight API Homepage</"
"a>" "a>"
msgstr "" msgstr ""
"Servidor API de insight es un software código-abierto. Puedes correr tu " "Servidor de API insight es un software código-abierto. Puedes correr tu "
"propia instancia en <a href=\"http://insight.is\" target=\"_blank\">Insight " "propia instancia en <a href=\"http://insight.is\" target=\"_blank\">Insight "
"API Homepage</a>" "API Homepage</a>"
#: views/settings.html
#, fuzzy
msgid "Insight API servers"
msgstr "Servidor API Insight"
#: views/send.html #: views/send.html
msgid "Insufficient funds" msgid "Insufficient funds"
msgstr "Fondos insuficientes" msgstr "Fondos insuficientes"
#: views/dummy-translations.html
msgid "It's important that you update your wallet at https://copay.io"
msgstr "Es importante que actualices tu monedero en https://copay.io"
#: views/more.html #: views/more.html
msgid "" msgid ""
"It's important to backup your wallet so that you can recover it in case of " "It's important to backup your wallet so that you can recover it in case of "
"disaster" "disaster"
msgstr "" msgstr ""
"Es importante hacer copia de seguridad de tu monedero para que puedas " "Es importante hacer copia de seguridad de tu monedero para que puedas "
"recuperarlo en caso de pérdidas" "recuperarlo en caso de pérdidas de datos de tu computadora"
#: views/join.html #: views/join.html
msgid "Join" msgid "Join"
@ -302,6 +351,14 @@ msgstr "Dejar mensaje privado a tus compañeros"
msgid "Locked" msgid "Locked"
msgstr "Bloqueado" msgstr "Bloqueado"
#: views/dummy-translations.html
msgid "Login Required"
msgstr "Inicio de Sesión Requerido"
#: views/includes/sidebar.html
msgid "Manual Update"
msgstr "Actualización Manual"
#: views/more.html #: views/more.html
msgid "Master Private Key" msgid "Master Private Key"
msgstr "Master Private Key" msgstr "Master Private Key"
@ -322,10 +379,22 @@ msgstr "Nombre"
msgid "Network Error. Attempting to reconnect..." msgid "Network Error. Attempting to reconnect..."
msgstr "Error de Red. Intentando reconectar..." msgstr "Error de Red. Intentando reconectar..."
#: views/dummy-translations.html
msgid "Networking Error"
msgstr "Error de Red"
#: views/dummy-translations.html
msgid "New Transaction"
msgstr "Nueva Transacción"
#: views/copayers.html #: views/copayers.html
msgid "New Wallet Created" msgid "New Wallet Created"
msgstr "Nuevo Monedero Creado" msgstr "Nuevo Monedero Creado"
#: views/dummy-translations.html
msgid "New entry has been created"
msgstr "Nueva entrada fue creada"
#: views/create.html #: views/create.html
msgid "Next" msgid "Next"
msgstr "Siguiente" msgstr "Siguiente"
@ -398,23 +467,40 @@ msgid "Payment Expiration:"
msgstr "Vencimiento de Pago:" msgstr "Vencimiento de Pago:"
#: views/more.html #: views/more.html
#, fuzzy
msgid "" msgid ""
"Pending Transactions Proposals will be discarted. This needs to be done on " "Pending Transactions Proposals will be discarted. This needs to be done on "
"<b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced " "<b>ALL</b> peers of a wallet, to prevent the old proposals to be resynced "
"again.\n" "again."
" </b></b>"
msgstr "" msgstr ""
"Las Propuestas de Transacciones Pendientes serán descartadas. Esto es " "Las Propuestas de Transacciones Pendientes serán descartadas. Esto es "
"necesario hacerlo con <b>TODOS</b> los compañeros del monedero, para " "necesario hacerlo con <b>TODOS</b> los compañeros del monedero, para "
"prevenir que viejas propuestas sean re sincronizadas de nuevo.\n" "prevenir que viejas propuestas sean re sincronizadas de nuevo."
" </b></b>"
#: views/dummy-translations.html
msgid "Please complete required fields"
msgstr "Por favor complete los campos requeridos"
#: views/dummy-translations.html
msgid "Please enter the required fields"
msgstr "Por favor ingrese los campos requeridos"
#: views/dummy-translations.html
msgid "Please open wallet to complete payment"
msgstr "Por favor abrir un monedero para completar el pago"
#: views/dummy-translations.html
msgid "Please update your wallet at https://copay.io"
msgstr "Por favor actualiza tu monedero de https://copay.io"
#: views/dummy-translations.html
msgid "Please, select your backup file"
msgstr "Por favor, selecciona el archivo de copia de seguridad"
#: views/uri-payment.html #: views/uri-payment.html
msgid "Preparing payment..." msgid "Preparing payment..."
msgstr "Preparando pago..." msgstr "Preparando pago..."
#: views/create.html views/join.html #: views/join.html
msgid "Private Key (Hex)" msgid "Private Key (Hex)"
msgstr "Clave Privada (Hex)" msgstr "Clave Privada (Hex)"
@ -446,6 +532,14 @@ msgstr "Listo"
msgid "Receive" msgid "Receive"
msgstr "Recibir" msgstr "Recibir"
#: views/dummy-translations.html
msgid "Received corrupt message from"
msgstr "Se recibió un mensaje corrupto de"
#: views/dummy-translations.html
msgid "Received corrupt transaction from"
msgstr "Se recibió una transacción corrupta de"
#: views/includes/transaction.html #: views/includes/transaction.html
msgid "Reject" msgid "Reject"
msgstr "Rechazar" msgstr "Rechazar"
@ -454,7 +548,7 @@ msgstr "Rechazar"
msgid "Repeat password" msgid "Repeat password"
msgstr "Repite la contraseña" msgstr "Repite la contraseña"
#: views/import.html views/join.html #: views/import.html views/join.html views/modals/address-book.html
msgid "Required" msgid "Required"
msgstr "Requerido" msgstr "Requerido"
@ -470,6 +564,10 @@ msgstr "Explorar"
msgid "Scan Wallet Addresses" msgid "Scan Wallet Addresses"
msgstr "Explorar Direcciones del Monedero" msgstr "Explorar Direcciones del Monedero"
#: views/dummy-translations.html
msgid "Scaning for transactions"
msgstr "Explorando transacciones"
#: views/import.html #: views/import.html
msgid "Select a backup file" msgid "Select a backup file"
msgstr "Seleccionar el archivo de copia de seguridad" msgstr "Seleccionar el archivo de copia de seguridad"
@ -482,6 +580,10 @@ msgstr "Seleccione las firmas requeridas (*)"
msgid "Select total number of copayers (*)" msgid "Select total number of copayers (*)"
msgstr "Seleccione el total de compañeros (*)" msgstr "Seleccione el total de compañeros (*)"
#: views/dummy-translations.html
msgid "Send"
msgstr "Enviar"
#: views/send.html #: views/send.html
msgid "Send Proposals" msgid "Send Proposals"
msgstr "Enviar Propuestas" msgstr "Enviar Propuestas"
@ -502,6 +604,18 @@ msgstr "Enviado"
msgid "Server Says:" msgid "Server Says:"
msgstr "Mensaje del Servidor:" msgstr "Mensaje del Servidor:"
#: views/dummy-translations.html
msgid "Session closed"
msgstr "Sesión cerrada"
#: views/dummy-translations.html
msgid "Session closed because a long time of inactivity"
msgstr "La sesión fue cerrada por mucho tiempo de inactividad"
#: views/dummy-translations.html
msgid "Session will be closed"
msgstr "La sesión se cerrará"
#: views/home.html views/more.html #: views/home.html views/more.html
msgid "Settings" msgid "Settings"
msgstr "Configuración" msgstr "Configuración"
@ -543,6 +657,34 @@ msgstr "Ignorar propuestas de transacciones desde la Copia de Seguridad"
msgid "Skipping fields: {{skipFields}}" msgid "Skipping fields: {{skipFields}}"
msgstr "Saltear campos: {{skipFields}}" msgstr "Saltear campos: {{skipFields}}"
#: views/dummy-translations.html
msgid "Success"
msgstr "Listo"
#: views/dummy-translations.html
msgid "The balance is updated using the derived addresses"
msgstr "El balance es actualizado utilizando direcciones derivadas"
#: views/dummy-translations.html
msgid "The secret string you entered is invalid"
msgstr "La palabra secreta ingresada no es válida"
#: views/dummy-translations.html
msgid "The transaction proposal has been created"
msgstr "La propuesta de transacción fue creada"
#: views/dummy-translations.html
msgid "The wallet is full"
msgstr "El monedero esta completo"
#: views/dummy-translations.html
msgid "There was an error sending the transaction"
msgstr "Hubo un error al enviar la transacción"
#: views/dummy-translations.html
msgid "There was an error signing the transaction"
msgstr "Hubo un error al firmar la transacción"
#: views/warning.html #: views/warning.html
msgid "This wallet appears to be currently open." msgid "This wallet appears to be currently open."
msgstr "Este monedero parece estar actualmente abierto." msgstr "Este monedero parece estar actualmente abierto."
@ -560,8 +702,8 @@ msgstr ""
"sincronización de direcciones a los demás compañeros conectados." "sincronización de direcciones a los demás compañeros conectados."
#: views/send.html #: views/send.html
msgid "To:" msgid "To"
msgstr "Para:" msgstr "A"
#: views/transactions.html #: views/transactions.html
msgid "Total" msgid "Total"
@ -571,26 +713,62 @@ msgstr "Total"
msgid "Total amount for this transaction:" msgid "Total amount for this transaction:"
msgstr "Cantidad total de esta transacción:" msgstr "Cantidad total de esta transacción:"
#: views/dummy-translations.html
msgid "Transaction Error"
msgstr "Error en Transacción"
#: views/includes/transaction.html #: views/includes/transaction.html
msgid "Transaction ID" msgid "Transaction ID"
msgstr "ID Transacción" msgstr "ID de Transacción"
#: views/transactions.html #: views/transactions.html
msgid "Transaction Proposals" msgid "Transaction Proposals"
msgstr "Propuestas de Transacción" msgstr "Propuestas de Transacción"
#: views/dummy-translations.html
msgid "Transaction Update"
msgstr "Actualización de una Transacción"
#: views/dummy-translations.html
msgid "Transaction broadcasted"
msgstr "Transacción transmitida"
#: views/includes/transaction.html #: views/includes/transaction.html
msgid "Transaction finally rejected" msgid "Transaction finally rejected"
msgstr "Transacción finalmente rechazada"
#: views/dummy-translations.html
msgid "Transaction rejected"
msgstr "Transacción rechazada" msgstr "Transacción rechazada"
#: views/dummy-translations.html
msgid "Transactions Proposals Purged"
msgstr "Propuestas de Transacciones Purgadas"
#: views/dummy-translations.html
msgid "Unable to send transaction proposal"
msgstr "No se puede enviar propuesta de transacción"
#: views/dummy-translations.html
msgid "Updating balance"
msgstr "Actualizando balance"
#: views/send.html #: views/send.html
msgid "Use all funds" msgid "Use all funds"
msgstr "Todos los fondos" msgstr "Todos los fondos"
#: views/create.html
msgid "Use test network"
msgstr "Red de prueba"
#: views/join.html #: views/join.html
msgid "User information" msgid "User information"
msgstr "Información de Usuario" msgstr "Información de Usuario"
#: views/dummy-translations.html
msgid "Using derived addresses from your wallet"
msgstr "Usando direcciones derivadas de tu monedero"
#: views/modals/address-book.html #: views/modals/address-book.html
msgid "Valid" msgid "Valid"
msgstr "Válido" msgstr "Válido"
@ -627,14 +805,29 @@ msgstr "Unidad del monedero"
msgid "Wallet name" msgid "Wallet name"
msgstr "Nombre del monedero" msgstr "Nombre del monedero"
#: views/dummy-translations.html
msgid "Wallet network configuration missmatch"
msgstr "Configuración de la Red del monedero no coinciden"
#: views/warning.html #: views/warning.html
msgid "Warning!" msgid "Warning!"
msgstr "¡Advertencia!" msgstr "¡Advertencia!"
#: views/create.html #: views/dummy-translations.html
#, fuzzy msgid "Wrong password"
msgid "Your Password" msgstr "Contraseña incorrecta"
msgstr "Tu contraseña"
#: views/dummy-translations.html
msgid "You have"
msgstr "Tienes"
#: views/dummy-translations.html
msgid "You have a pending transaction proposal"
msgstr "Tienes una propuesta de transacción pendiente"
#: views/dummy-translations.html
msgid "You rejected the transaction successfully"
msgstr "Rechazaste la transacción con éxito"
#: views/more.html #: views/more.html
msgid "" msgid ""
@ -652,10 +845,14 @@ msgstr "Tu nombre"
msgid "Your name (optional)" msgid "Your name (optional)"
msgstr "Tu nombre (opcional)" msgstr "Tu nombre (opcional)"
#: views/open.html #: views/create.html views/open.html
msgid "Your password" msgid "Your password"
msgstr "Tu contraseña" msgstr "Tu contraseña"
#: views/dummy-translations.html
msgid "Your session is about to expire due to inactivity in"
msgstr "Tu sesión está va a expirar por inactividad en"
#: views/import.html #: views/import.html
msgid "Your wallet password" msgid "Your wallet password"
msgstr "Contraseña de tu monedero" msgstr "Contraseña de tu monedero"
@ -664,6 +861,10 @@ msgstr "Contraseña de tu monedero"
msgid "advanced options" msgid "advanced options"
msgstr "opciones avanzadas" msgstr "opciones avanzadas"
#: views/dummy-translations.html
msgid "available."
msgstr "disponible."
#: views/addresses.html #: views/addresses.html
msgid "change" msgid "change"
msgstr "vuelto" msgstr "vuelto"
@ -673,9 +874,8 @@ msgid "first seen at"
msgstr "Visto el" msgstr "Visto el"
#: views/transactions.html #: views/transactions.html
#, fuzzy
msgid "mined" msgid "mined"
msgstr "Minado el" msgstr "minado el"
#: views/send.html #: views/send.html
msgid "not valid" msgid "not valid"
@ -689,18 +889,30 @@ msgstr "de"
msgid "optional" msgid "optional"
msgstr "opcional" msgstr "opcional"
#: views/dummy-translations.html
msgid "pending transaction proposals"
msgstr "propuestas de transacciones pendientes"
#: views/copayers.html #: views/copayers.html
msgid "people have" msgid "people have"
msgstr "personas" msgstr "personas"
#: views/send.html views/modals/address-book.html #: views/send.html
msgid "required" msgid "required"
msgstr "requerido" msgstr "requerido"
#: views/dummy-translations.html
msgid "seconds"
msgstr "segundos"
#: views/send.html #: views/send.html
msgid "too long!" msgid "too long!"
msgstr "¡demasiado largo!" msgstr "¡demasiado largo!"
#: views/dummy-translations.html
msgid "transaction proposal purged"
msgstr "propuestas de transacciones purgadas"
#: views/send.html #: views/send.html
msgid "valid!" msgid "valid!"
msgstr "¡válido!" msgstr "¡válido!"
@ -717,6 +929,29 @@ msgstr "deben unirse"
msgid "{{tx.missingSignatures}} signatures missing" msgid "{{tx.missingSignatures}} signatures missing"
msgstr "Faltan {{tx.missingSignatures}} firmas" msgstr "Faltan {{tx.missingSignatures}} firmas"
#~ msgid "Scan Ended"
#~ msgstr "Búsqueda Finalizada"
#~ msgid "There is an error in the form."
#~ msgstr "Hubo un error en el formulario."
#, fuzzy
#~ msgid "Wrong password que parece"
#~ msgstr "Contraseña incorrecta"
#~ msgid "Add Address"
#~ msgstr "Agregar Dirección"
#~ msgid "Add Address Book Entry"
#~ msgstr "Nueva entrada"
#~ msgid "Add New Entry"
#~ msgstr "Nueva Entrada"
#, fuzzy
#~ msgid "Your Password"
#~ msgstr "Tu contraseña"
#~ msgid "Bitcoin Network" #~ msgid "Bitcoin Network"
#~ msgstr "Red Bitcoin" #~ msgstr "Red Bitcoin"
@ -744,9 +979,6 @@ msgstr "Faltan {{tx.missingSignatures}} firmas"
#~ msgid "Your Wallet Password" #~ msgid "Your Wallet Password"
#~ msgstr "Contraseña de tu Monedero" #~ msgstr "Contraseña de tu Monedero"
#~ msgid "Send"
#~ msgstr "Enviar"
#~ msgid "" #~ msgid ""
#~ "{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}} wallet" #~ "{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}} wallet"
#~ msgstr "Monedero {{requiredCopayers}}-de-{{totalCopayers}}" #~ msgstr "Monedero {{requiredCopayers}}-de-{{totalCopayers}}"

View file

@ -319,6 +319,7 @@ describe("Unit: Controllers", function() {
describe("Unit: Version Controller", function() { describe("Unit: Version Controller", function() {
var scope, $httpBackendOut; var scope, $httpBackendOut;
var GH = 'https://api.github.com/repos/bitpay/copay/tags'; var GH = 'https://api.github.com/repos/bitpay/copay/tags';
beforeEach(angular.mock.module('copayApp'));
beforeEach(inject(function($controller, $injector) { beforeEach(inject(function($controller, $injector) {
$httpBackend = $injector.get('$httpBackend'); $httpBackend = $injector.get('$httpBackend');
$httpBackend.when('GET', GH) $httpBackend.when('GET', GH)

View file

@ -24,8 +24,8 @@
<input id="Name" type="text" placeholder="{{'Name'|translate}}" class="form-control" ng-model="$parent.myNickname"> <input id="Name" type="text" placeholder="{{'Name'|translate}}" class="form-control" ng-model="$parent.myNickname">
</div> </div>
<div> <div>
<label for="walletPassword"> <label translate for="walletPassword">
<span translate>Your Password</span> Your password
</label> </label>
<input id="walletPassword" type="password" placeholder="{{'Choose a password'|translate}}" class="form-control" ng-model="$parent.walletPassword" name="walletPassword" check-strength="passwordStrength" tooltip-html-unsafe="Password strength: <input id="walletPassword" type="password" placeholder="{{'Choose a password'|translate}}" class="form-control" ng-model="$parent.walletPassword" name="walletPassword" check-strength="passwordStrength" tooltip-html-unsafe="Password strength:
<i>{{passwordStrength}}</i><br/><span <i>{{passwordStrength}}</i><br/><span
@ -42,7 +42,7 @@
<div class="text-left line-sidebar-t"> <div class="text-left line-sidebar-t">
<input id="network-name" type="checkbox" ng-model="networkName" ng-true-value="testnet" ng-false-value="livenet" class="form-control" ng-click="changeNetwork()" ng-checked="networkName == 'testnet' ? true : false"> <input id="network-name" type="checkbox" ng-model="networkName" ng-true-value="testnet" ng-false-value="livenet" class="form-control" ng-click="changeNetwork()" ng-checked="networkName == 'testnet' ? true : false">
<label for="network-name">Use test network</label> <label for="network-name" translate>Use test network</label>
</div> </div>
</div> </div>
@ -53,7 +53,7 @@
</a> </a>
<div ng-hide="hideAdv"> <div ng-hide="hideAdv">
<p> <p>
<input type="text" placeholder="{{'Private Key (Hex)'|translate}}" name="private" ng-model="private"> <input type="text" placeholder="BIP32 master extended private key (hex)" name="private" ng-model="private">
</div> </div>
</div> </div>

View file

@ -1,3 +1,60 @@
<span translate>Receive</span> {{'Receive'|translate}}
<span translate>History</span> {{'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}}

View file

@ -1,7 +1,7 @@
<div class="import" ng-controller="ImportController"> <div class="import" ng-controller="ImportController">
<div data-alert class="loading-screen" ng-show="loading"> <div data-alert class="loading-screen" ng-show="loading">
<i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i> <i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i>
{{ importStatus }} {{ importStatus|translate }}
</div> </div>
<div class="row" ng-init="choosefile=0; pastetext=0" ng-show="!loading"> <div class="row" ng-init="choosefile=0; pastetext=0" ng-show="!loading">

View file

@ -10,12 +10,11 @@
class="ellipsis" class="ellipsis"
tooltip="ID: {{copayer.peerId}}" tooltip="ID: {{copayer.peerId}}"
tooltip-placement="bottom"> tooltip-placement="bottom">
<small class="text-gray" ng-show="copayer.index == 0"><i class="fi-check m5r"></i><span translate>Me</span></small> <small class="text-gray" ng-show="copayer.index == 0">
<i class="fi-check m5r"></i>{{'Me'|translate}}</small>
<small class="text-gray" ng-show="copayer.index > 0"><i class="fi-check m5r"></i>{{copayer.nick}}</small> <small class="text-gray" ng-show="copayer.index > 0"><i class="fi-check m5r"></i>{{copayer.nick}}</small>
</div> </div>
<div translate class="success label m10t" ng-show="isBackupReady(copayer)"> <div translate class="success label m10t" ng-show="isBackupReady(copayer)">Ready</div>
Ready
</div>
</div> </div>
</div> </div>

View file

@ -15,9 +15,7 @@
width="30"> width="30">
<div class="ellipsis" tooltip-placement="top" tooltip="{{copayer.nick}}"> <div class="ellipsis" tooltip-placement="top" tooltip="{{copayer.nick}}">
<small class="text-gray" ng-show="copayer.index == 0"> <small class="text-gray" ng-show="copayer.index == 0">{{'Me'|translate}}</small>
<span translate>Me</span>
</small>
<small class="text-gray" ng-show="copayer.index > 0">{{copayer.nick}}</small> <small class="text-gray" ng-show="copayer.index > 0">{{copayer.nick}}</small>
</div> </div>
</div> </div>

View file

@ -15,7 +15,7 @@
<span class="size-12 right">{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}}</span> <span class="size-12 right">{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}}</span>
</p> </p>
<div class="line-sidebar-t"> <div class="line-sidebar-t">
<span translate>Balance</span> {{'Balance'|translate}}
<span class="gray small side-bar right" title="Manual Refresh"><i class="size-16 fi-refresh"></i></span> <span class="gray small side-bar right" title="Manual Refresh"><i class="size-16 fi-refresh"></i></span>
<span ng-if="$root.updatingBalance"> <span ng-if="$root.updatingBalance">
<i class="fi-bitcoin-circle icon-rotate spinner"></i> <i class="fi-bitcoin-circle icon-rotate spinner"></i>
@ -25,7 +25,7 @@
</span> </span>
</div> </div>
<div class="m10t" ng-show="lockedBalance"> <div class="m10t" ng-show="lockedBalance">
<span translate>Locked</span> {{'Locked'|translate}}
<span ng-if="$root.updatingBalance"> <span ng-if="$root.updatingBalance">
<i class="fi-bitcoin-circle icon-rotate spinner"></i> <i class="fi-bitcoin-circle icon-rotate spinner"></i>
</span> </span>
@ -43,7 +43,7 @@
</li> </li>
<li> <li>
<a href="#" class="db p20h" title="Close" <a href="#" class="db p20h" title="Close"
ng-click="signout()"><i class="size-24 m20r fi-power"></i> <span translate>Close</span></a> ng-click="signout()"><i class="size-24 m20r fi-power"></i> {{'Close'|translate}}</a>
</li> </li>
</ul> </ul>

View file

@ -11,12 +11,12 @@
<a href="#!/receive" class="name-wallet" tooltip-placement="bottom" tooltip="ID: {{$root.wallet.id}}"> <a href="#!/receive" class="name-wallet" tooltip-placement="bottom" tooltip="ID: {{$root.wallet.id}}">
<span>{{$root.wallet.getName()}}</span> <span>{{$root.wallet.getName()}}</span>
</a> </a>
<a class="button gray small side-bar right" title="Manual Refresh" <a class="button gray small side-bar right" title="{{'Manual Update'|translate}}"
ng-disabled="$root.loading" ng-disabled="$root.loading"
ng-click="refresh()"><i class="size-16 fi-refresh"></i></a> ng-click="refresh()"><i class="size-16 fi-refresh"></i></a>
</div> </div>
<div class="founds size-14 m10v"> <div class="founds size-14 m10v">
<span translate>Balance</span> {{'Balance'|translate}}
<span ng-if="$root.updatingBalance"> <span ng-if="$root.updatingBalance">
<i class="fi-bitcoin-circle icon-rotate spinner"></i> <i class="fi-bitcoin-circle icon-rotate spinner"></i>
</span> </span>
@ -29,7 +29,7 @@
tooltip-placement="bottom">{{totalBalance || 0 |noFractionNumber}} {{$root.wallet.settings.unitName}} tooltip-placement="bottom">{{totalBalance || 0 |noFractionNumber}} {{$root.wallet.settings.unitName}}
</span> </span>
<div class="m10t" ng-show="lockedBalance"> <div class="m10t" ng-show="lockedBalance">
<span translate>Locked</span> &nbsp; {{'Locked'|translate}} &nbsp;
<span ng-if="$root.updatingBalance"> <span ng-if="$root.updatingBalance">
<i class="fi-bitcoin-circle icon-rotate spinner"></i> <i class="fi-bitcoin-circle icon-rotate spinner"></i>
</span> </span>
@ -56,7 +56,7 @@
</li> </li>
<li> <li>
<a href="#!/" class="db p20h" title="Close" <a href="#!/" class="db p20h" title="Close"
ng-click="signout()"><i class="size-21 m20r fi-power"></i> <span translate>Close</span></a> ng-click="signout()"><i class="size-21 m20r fi-power"></i> {{'Close'|translate}}</a>
</li> </li>
</ul> </ul>

View file

@ -1,5 +1,5 @@
<div ng-controller="VersionController"> <div ng-controller="VersionController">
<small>v{{version}} ({{defaultLanguage}})</small> <small>v{{version}}</small>
<small>#{{commitHash}}</small> <small>#{{commitHash}}</small>
<small ng-if="networkName ==='testnet' || networkName ==='livenet'">[ {{networkName}} ]</small> <small ng-if="networkName ==='testnet' || networkName ==='livenet'">[ {{networkName}} ]</small>
</div> </div>

View file

@ -1,22 +1,21 @@
<h2 translate>Add Address Book Entry</h2> <h2 translate>Address Book</h2>
<form name="addressBookForm" ng-submit="submitAddressBook(addressBookForm)" novalidate> <form name="addressBookForm" ng-submit="submitAddressBook(addressBookForm)" novalidate>
<label for="newaddress"><span translate>Address</span> <label for="newaddress"><span translate>Address</span>
<small translate ng-hide="!addressBookForm.newaddress.$pristine || newaddress">required</small> <small translate ng-hide="!addressBookForm.newaddress.$pristine || newaddress">Required</small>
<small translate class="is-valid" ng-show="!addressBookForm.newaddress.$invalid && newaddress">Valid</small> <small translate class="is-valid" ng-show="!addressBookForm.newaddress.$invalid && newaddress">Valid</small>
<small translate class="has-error" ng-show="addressBookForm.newaddress.$invalid && newaddress"> <small translate class="has-error" ng-show="addressBookForm.newaddress.$invalid && newaddress">Not valid</small>
Not valid</small>
<input type="text" id="newaddress" name="newaddress" ng-disabled="loading" <input type="text" id="newaddress" name="newaddress" ng-disabled="loading"
placeholder="{{'Address'|translate}}" ng-model="newaddress" valid-address required> placeholder="{{'Address'|translate}}" ng-model="newaddress" valid-address required>
</label> </label>
<label for="newlabel"><span translate>Label</span> <label for="newlabel"><span translate>Label</span>
<small translate ng-hide="!addressBookForm.newlabel.$pristine || newlabel">required</small> <small translate ng-hide="!addressBookForm.newlabel.$pristine || newlabel">Required</small>
<input type="text" id="newlabel" name="newlabel" ng-disabled="loading" <input type="text" id="newlabel" name="newlabel" ng-disabled="loading"
placeholder="{{'Label'|translate}}" ng-model="newlabel" required> placeholder="{{'Label'|translate}}" ng-model="newlabel" required>
</label> </label>
<a translate class="button warning small default" ng-click="cancel()">Cancel</a> <a translate class="button warning small default" ng-click="cancel()">Cancel</a>
<input type="submit" class="button small primary right" <input type="submit" class="button small primary right"
ng-disabled="addressBookForm.$invalid || loading" ng-disabled="addressBookForm.$invalid || loading"
value="{{'Add Address'|translate}}"> value="{{'Add'|translate}}">
</form> </form>
<a class="close-reveal-modal" ng-click="cancel()">&#215;</a> <a class="close-reveal-modal" ng-click="cancel()">&#215;</a>

View file

@ -33,7 +33,7 @@
<h3><i class="fi-minus-circle m10r"></i> <span translate> Delete Wallet </span></h3> <h3><i class="fi-minus-circle m10r"></i> <span translate> Delete Wallet </span></h3>
<p translate class="large-8 columns text-gray">If all funds have been removed from your wallet and you do not wish to have the wallet data stored on your computer anymore, you can delete your wallet.</p> <p translate class="large-8 columns text-gray">If all funds have been removed from your wallet and you do not wish to have the wallet data stored on your computer anymore, you can delete your wallet.</p>
<div class="large-4 columns"> <div class="large-4 columns">
<a translate class="button warning expand" ng-really-message="'Are you sure to delete this wallet from this computer?'|translate" ng-really-click="deleteWallet()"> Delete</a> <a translate class="button warning expand" ng-really-message="{{'Are you sure to delete this wallet from this computer?'|translate}}" ng-really-click="deleteWallet()"> Delete</a>
</div> </div>
</div> </div>
<p> <p>
@ -73,7 +73,7 @@
<div class="oh large-12 columns panel"> <div class="oh large-12 columns panel">
<h3><i class="fi-minus-circle m10r"></i> <span translate>Purge Pending Transaction Proposals</span> </h3> <h3><i class="fi-minus-circle m10r"></i> <span translate>Purge Pending Transaction Proposals</span> </h3>
<p translate class="large-8 columns text-gray"> <p translate class="large-8 columns text-gray">
Pending Transactions Proposals will be discarted. This needs to be done on <b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced again. Pending Transactions Proposals will be discarted. This needs to be done on <b>ALL</b> peers of a wallet, to prevent the old proposals to be resynced again.
</p> </p>
<div class="large-4 columns"> <div class="large-4 columns">
<a translate class="button warning expand" ng-click="purge()"> <a translate class="button warning expand" ng-click="purge()">
@ -84,7 +84,7 @@
<div class="oh large-12 columns panel"> <div class="oh large-12 columns panel">
<h3><i class="fi-minus-circle m10r"></i> <span translate>Purge ALL Transaction Proposals</span> </h3> <h3><i class="fi-minus-circle m10r"></i> <span translate>Purge ALL Transaction Proposals</span> </h3>
<p translate class="large-8 columns text-gray"> <p translate class="large-8 columns text-gray">
ALL Transactions Proposals will be discarted. This needs to be done on <b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced again. ALL Transactions Proposals will be discarted. This needs to be done on <b>ALL</b> peers of a wallet, to prevent the old proposals to be resynced again.
</p> </p>
<div class="large-4 columns"> <div class="large-4 columns">
<a translate class="button warning expand" ng-click="purge(true)"> <a translate class="button warning expand" ng-click="purge(true)">

View file

@ -14,7 +14,7 @@
<div class="row collapse"> <div class="row collapse">
<div class="large-12 columns"> <div class="large-12 columns">
<div class="row collapse"> <div class="row collapse">
<label for="address"><span translate>To:</span> <label for="address"><span translate>To</span>
<small translate ng-hide="!sendForm.address.$pristine || address">required</small> <small translate ng-hide="!sendForm.address.$pristine || address">required</small>
<small translate class="is-valid" ng-show="!sendForm.address.$invalid && address">valid!</small> <small translate class="is-valid" ng-show="!sendForm.address.$invalid && address">valid!</small>
<small translate class="has-error" ng-show="sendForm.address.$invalid && address">not valid</small> <small translate class="has-error" ng-show="sendForm.address.$invalid && address">not valid</small>
@ -181,7 +181,7 @@
<tr> <tr>
<th translate>Label</th> <th translate>Label</th>
<th translate>Address</th> <th translate>Address</th>
<th class="hide-for-small-only" translate>Creator</th> <th ng-class="{'hide-for-small-only' : $root.wallet.isShared()}" ng-show="$root.wallet.isShared()" translate>Creator</th>
<th class="hide-for-small-only" translate>Date</th> <th class="hide-for-small-only" translate>Date</th>
<th class="hide-for-small-only">&nbsp;</th> <th class="hide-for-small-only">&nbsp;</th>
</tr> </tr>
@ -192,14 +192,14 @@
ng-class="{'addressbook-disabled': info.hidden}"> ng-class="{'addressbook-disabled': info.hidden}">
<td><a ng-click="copyAddress(addr)" title="Copy address">{{info.label}}</a></td> <td><a ng-click="copyAddress(addr)" title="Copy address">{{info.label}}</a></td>
<td class="size-12">{{addr}} <span class="btn-copy" clip-copy="addr"></span></td> <td class="size-12">{{addr}} <span class="btn-copy" clip-copy="addr"></span></td>
<td class="hide-for-small-only">{{$root.wallet.publicKeyRing.nicknameForCopayer(info.copayerId)}}</td> <td ng-show="$root.wallet.isShared()" ng-class="{'hide-for-small-only' : $root.wallet.isShared()}">{{$root.wallet.publicKeyRing.nicknameForCopayer(info.copayerId)}}</td>
<td class="hide-for-small-only"><time>{{info.createdTs | amCalendar}}</time></td> <td class="hide-for-small-only"><time>{{info.createdTs | amCalendar}}</time></td>
<td class="hide-for-small-only" width="5"><a ng-click="toggleAddressBookEntry(addr)">{{info.hidden ? <td class="hide-for-small-only" width="5"><a ng-click="toggleAddressBookEntry(addr)">{{info.hidden ?
'Enable' : 'Disable'}}</a></td> 'Enable' : 'Disable'}}</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<button translate class="button tiny primary text-center" ng-click="openAddressBookModal()">Add New Entry</button> <button translate class="button tiny primary text-center" ng-click="openAddressBookModal()">Add</button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -14,7 +14,7 @@
</select> </select>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend translate>Insight API servers</legend> <legend translate>Insight API server</legend>
<label for="insight-livenet">Livenet</label> <label for="insight-livenet">Livenet</label>
<input type="text" ng-model="insightLivenet" class="form-control" name="insight-livenet"> <input type="text" ng-model="insightLivenet" class="form-control" name="insight-livenet">
<label for="insight-testnet">Testnet</label> <label for="insight-testnet">Testnet</label>