mirror of https://github.com/BTCPrivate/copay.git
Merge pull request #1300 from cmgustavo/feature/multilanguage-support
Feature/multilanguage support
This commit is contained in:
commit
a0eded69af
|
@ -45,6 +45,11 @@ js/copayMain.js
|
|||
css/copay.min.css
|
||||
css/vendors.min.css
|
||||
|
||||
# translation
|
||||
po/*
|
||||
!po/*.po
|
||||
js/translations.js
|
||||
|
||||
webapp
|
||||
browser-extensions/chrome/copay-chrome-extension
|
||||
browser-extensions/chrome/copay-chrome-extension.zip
|
||||
|
|
27
Gruntfile.js
27
Gruntfile.js
|
@ -8,6 +8,7 @@ module.exports = function(grunt) {
|
|||
grunt.loadNpmTasks('grunt-contrib-cssmin');
|
||||
grunt.loadNpmTasks('grunt-contrib-concat');
|
||||
grunt.loadNpmTasks('grunt-contrib-uglify');
|
||||
grunt.loadNpmTasks('grunt-angular-gettext');
|
||||
|
||||
// Project Configuration
|
||||
grunt.initConfig({
|
||||
|
@ -105,7 +106,8 @@ module.exports = function(grunt) {
|
|||
'lib/angular-qrcode/qrcode.js',
|
||||
'lib/ng-idle/angular-idle.min.js',
|
||||
'lib/angular-foundation/mm-foundation.min.js',
|
||||
'lib/angular-foundation/mm-foundation-tpls.min.js'
|
||||
'lib/angular-foundation/mm-foundation-tpls.min.js',
|
||||
'lib/angular-gettext/dist/angular-gettext.min.js'
|
||||
],
|
||||
dest: 'lib/angularjs-all.js'
|
||||
},
|
||||
|
@ -117,6 +119,7 @@ module.exports = function(grunt) {
|
|||
'js/routes.js',
|
||||
'js/services/*.js',
|
||||
'js/controllers/*.js',
|
||||
'js/translations.js',
|
||||
'js/mobile.js', // PLACEHOLDER: CORDOVA SRIPT
|
||||
'js/init.js'
|
||||
],
|
||||
|
@ -146,10 +149,28 @@ module.exports = function(grunt) {
|
|||
'lib/vendors.js': ['lib/vendors.js']
|
||||
}
|
||||
}
|
||||
},
|
||||
nggettext_extract: {
|
||||
pot: {
|
||||
files: {
|
||||
'po/template.pot': ['index.html', 'views/*.html', 'views/**/*.html']
|
||||
}
|
||||
},
|
||||
},
|
||||
nggettext_compile: {
|
||||
all: {
|
||||
options: {
|
||||
module: 'copayApp'
|
||||
},
|
||||
files: {
|
||||
'js/translations.js': ['po/*.po']
|
||||
}
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
grunt.registerTask('default', ['shell:dev', 'concat', 'cssmin']);
|
||||
grunt.registerTask('prod', ['shell:prod', 'concat', 'cssmin', 'uglify']);
|
||||
grunt.registerTask('default', ['shell:dev', 'nggettext_compile', 'concat', 'cssmin']);
|
||||
grunt.registerTask('prod', ['shell:prod', 'nggettext_compile', 'concat', 'cssmin', 'uglify']);
|
||||
grunt.registerTask('translate', ['nggettext_extract']);
|
||||
|
||||
};
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"angular-route": "~1.2.14",
|
||||
"angular-qrcode": "~3.1.0",
|
||||
"angular-mocks": "~1.2.14",
|
||||
"angular-gettext": "~1.1.0",
|
||||
"mocha": "~1.18.2",
|
||||
"chai": "~1.9.1",
|
||||
"crypto-js": "http://crypto-js.googlecode.com/files/CryptoJS%20v3.1.2.zip",
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
'use strict';
|
||||
var defaultConfig = {
|
||||
defaultLanguage: 'en',
|
||||
// DEFAULT network (livenet or testnet)
|
||||
networkName: 'testnet',
|
||||
forceNetwork: false,
|
||||
|
|
|
@ -24,6 +24,7 @@ var copayApp = window.copayApp = angular.module('copayApp', [
|
|||
'mm.foundation',
|
||||
'monospaced.qrcode',
|
||||
'ngIdle',
|
||||
'gettext',
|
||||
'copayApp.filters',
|
||||
'copayApp.services',
|
||||
'copayApp.controllers',
|
||||
|
|
|
@ -9,6 +9,22 @@ angular.module('copayApp.controllers').controller('SettingsController', function
|
|||
$scope.insightPort = config.blockchain.port;
|
||||
$scope.insightSecure = config.blockchain.schema === 'https';
|
||||
$scope.forceNetwork = config.forceNetwork;
|
||||
$scope.defaultLanguage = config.defaultLanguage || 'en';
|
||||
|
||||
$scope.availableLanguages = [{
|
||||
name: 'English',
|
||||
isoCode: 'en',
|
||||
}, {
|
||||
name: 'Spanish',
|
||||
isoCode: 'es',
|
||||
}];
|
||||
|
||||
for (var ii in $scope.availableLanguages) {
|
||||
if ($scope.defaultLanguage === $scope.availableLanguages[ii].isoCode) {
|
||||
$scope.selectedLanguage = $scope.availableLanguages[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$scope.unitOpts = [{
|
||||
name: 'Satoshis (100,000,000 satoshis = 1BTC)',
|
||||
|
@ -90,7 +106,8 @@ angular.module('copayApp.controllers').controller('SettingsController', function
|
|||
alternativeName: $scope.selectedAlternative.name,
|
||||
alternativeIsoCode: $scope.selectedAlternative.isoCode,
|
||||
|
||||
version: copay.version
|
||||
version: copay.version,
|
||||
defaultLanguage: $scope.selectedLanguage.isoCode
|
||||
}));
|
||||
|
||||
// Go home reloading the application
|
||||
|
|
|
@ -6,6 +6,7 @@ angular.module('copayApp.controllers').controller('VersionController',
|
|||
$scope.version = copay.version;
|
||||
$scope.commitHash = copay.commitHash;
|
||||
$scope.networkName = config.networkName;
|
||||
$scope.defaultLanguage = config.defaultLanguage;
|
||||
|
||||
$http.get('https://api.github.com/repos/bitpay/copay/tags').success(function(data) {
|
||||
var toInt = function(s) {
|
||||
|
|
|
@ -79,7 +79,8 @@ angular
|
|||
$idleProvider.warningDuration(20); // in seconds
|
||||
$keepaliveProvider.interval(2); // in seconds
|
||||
})
|
||||
.run(function($rootScope, $location, $idle) {
|
||||
.run(function($rootScope, $location, $idle, gettextCatalog) {
|
||||
gettextCatalog.currentLanguage = config.defaultLanguage;
|
||||
$idle.watch();
|
||||
$rootScope.$on('$routeChangeStart', function(event, next, current) {
|
||||
if (!localStorage || localStorage.length < 1) {
|
||||
|
|
|
@ -28,6 +28,7 @@ module.exports = function(config) {
|
|||
'lib/angular-route/angular-route.min.js',
|
||||
'lib/angular-foundation/mm-foundation.min.js',
|
||||
'lib/angular-foundation/mm-foundation-tpls.min.js',
|
||||
'lib/angular-gettext/dist/angular-gettext.min.js',
|
||||
'lib/inherits/inherits.js',
|
||||
'lib/bitcore.js',
|
||||
'lib/underscore/underscore.js',
|
||||
|
@ -49,6 +50,7 @@ module.exports = function(config) {
|
|||
'js/directives.js',
|
||||
'js/filters.js',
|
||||
'js/controllers/*.js',
|
||||
'js/translations.js',
|
||||
'js/init.js',
|
||||
|
||||
//Test-Specific Code
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
"grunt-markdown": "0.5.0",
|
||||
"grunt-mocha-test": "0.8.2",
|
||||
"grunt-shell": "0.6.4",
|
||||
"grunt-angular-gettext": "^0.2.15",
|
||||
"istanbul": "0.2.10",
|
||||
"karma": "0.12.9",
|
||||
"karma-chrome-launcher": "0.1.3",
|
||||
|
|
|
@ -0,0 +1,704 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Copay\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.6.8\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: views/create.html
|
||||
msgid "(*) The limits are imposed by the bitcoin network."
|
||||
msgstr "(*) Los límites son impuestos por la red de bitcoin."
|
||||
|
||||
#: views/more.html
|
||||
msgid ""
|
||||
"ALL Transactions Proposals will be discarted. This need to be done on "
|
||||
"<b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced "
|
||||
"again.\n"
|
||||
" </b></b>"
|
||||
msgstr ""
|
||||
"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 "
|
||||
"propuestas sean re sincronizadas de nuevo.\n"
|
||||
" </b></b>"
|
||||
|
||||
#: views/modals/address-book.html
|
||||
msgid "Add Address"
|
||||
msgstr "Agregar Dirección"
|
||||
|
||||
#: 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
|
||||
msgid "Address"
|
||||
msgstr "Dirección"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Address Book"
|
||||
msgstr "Libreta de Direcciones"
|
||||
|
||||
#: views/addresses.html
|
||||
msgid "Addresses"
|
||||
msgstr "Direcciones"
|
||||
|
||||
#: views/settings.html
|
||||
msgid "Alternative Currency"
|
||||
msgstr "Moneda Alternativa"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Amount"
|
||||
msgstr "Importe"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Amount in"
|
||||
msgstr "Importe en"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Are you sure to delete this wallet from this computer?"
|
||||
msgstr "¿Estas seguro de borrar este monedero de tu computadora?"
|
||||
|
||||
#: views/join.html views/open.html
|
||||
msgid "Authenticating and looking for peers..."
|
||||
msgstr "Autenticando y buscando compañeros..."
|
||||
|
||||
#: views/create.html views/import.html views/join.html views/open.html
|
||||
#: views/settings.html views/warning.html views/errors/404.html
|
||||
msgid "Back"
|
||||
msgstr "Volver"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Backup"
|
||||
msgstr "Copia de Seguridad"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "Backup wallet"
|
||||
msgstr "Hacer copia de seguridad"
|
||||
|
||||
#: views/includes/sidebar-mobile.html views/includes/sidebar.html
|
||||
msgid "Balance"
|
||||
msgstr "Balance"
|
||||
|
||||
#: views/includes/sidebar-mobile.html views/includes/sidebar.html
|
||||
msgid "Balance locked in pending transaction proposals"
|
||||
msgstr "Balance bloqueado en las propuestas de transacción pendientes"
|
||||
|
||||
#: views/settings.html
|
||||
msgid "Bitcoin Network"
|
||||
msgstr "Red Bitcoin"
|
||||
|
||||
#: views/includes/transaction.html
|
||||
msgid "Broadcast Transaction"
|
||||
msgstr "Emitir Transacción"
|
||||
|
||||
#: views/unsupported.html
|
||||
msgid "Browser unsupported"
|
||||
msgstr "Navegador no soportado"
|
||||
|
||||
#: views/send.html views/modals/address-book.html
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: views/import.html
|
||||
msgid "Choose backup file from your computer"
|
||||
msgstr "Seleccione el archivo backup de su computadora"
|
||||
|
||||
#: views/create.html views/join.html
|
||||
msgid "Choose your password"
|
||||
msgstr "Escribe tu contraseña"
|
||||
|
||||
#: views/includes/sidebar-mobile.html views/includes/sidebar.html
|
||||
msgid "Close"
|
||||
msgstr "Cerrar"
|
||||
|
||||
#: views/transactions.html
|
||||
msgid "Confirmations"
|
||||
msgstr "Confirmaciones"
|
||||
|
||||
#: views/warning.html
|
||||
msgid "Continue anyways"
|
||||
msgstr "Continuar de todas maneras"
|
||||
|
||||
#: views/includes/peer-list.html
|
||||
msgid "Copayers"
|
||||
msgstr "Compañeros"
|
||||
|
||||
#: views/modals/qr-address.html
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copiar al portapapeles"
|
||||
|
||||
#: views/home.html
|
||||
msgid "Create a new wallet"
|
||||
msgstr "Crear un nuevo monedero"
|
||||
|
||||
#: views/home.html
|
||||
msgid "Create a wallet"
|
||||
msgstr "Crea un monedero"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Create new wallet"
|
||||
msgstr "Crear nuevo monedero"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Create {{requiredCopayers}}-of-{{totalCopayers}} wallet"
|
||||
msgstr "Crea monedero {{requiredCopayers}}-de-{{totalCopayers}}"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Creating wallet..."
|
||||
msgstr "Creando monedero..."
|
||||
|
||||
#: views/send.html
|
||||
msgid "Creator"
|
||||
msgstr "Creador"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Delete Wallet"
|
||||
msgstr "Borrar Monedero"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "Delete wallet"
|
||||
msgstr "Borrar monedero"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "Download Backup"
|
||||
msgstr "Descargar Copia de Seguridad"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Download File"
|
||||
msgstr "Descargar Archivo"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "Download seed backup"
|
||||
msgstr "Descargar copia de seguridad"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Empty. Create an alias for your addresses"
|
||||
msgstr "Vacío. Crea una etiqueta para tus direcciones"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Family vacation funds"
|
||||
msgstr "Fondos para vacaciones en familia"
|
||||
|
||||
#: views/transactions.html views/includes/transaction.html
|
||||
msgid "Fee"
|
||||
msgstr "Tasa"
|
||||
|
||||
#: views/join.html
|
||||
msgid "Get QR code"
|
||||
msgstr "Obtener código QR"
|
||||
|
||||
#: views/create.html views/import.html views/join.html views/more.html
|
||||
#: views/transactions.html
|
||||
msgid "Hide"
|
||||
msgstr "Ocultar"
|
||||
|
||||
#: views/dummy-translations.html
|
||||
msgid "History"
|
||||
msgstr "Historial"
|
||||
|
||||
#: views/more.html
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Si todos los fondos fueron removidos de tu monedero y no deseas tener los "
|
||||
"datos guardados en tu computadora, puedes eliminar tu monedero."
|
||||
|
||||
#: views/home.html
|
||||
msgid "Import a backup"
|
||||
msgstr "Importar backup"
|
||||
|
||||
#: views/import.html
|
||||
msgid "Import backup"
|
||||
msgstr "Importar copia de seguridad"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Including fee of"
|
||||
msgstr "Incluye tasa de"
|
||||
|
||||
#: views/settings.html
|
||||
msgid "Insight API server"
|
||||
msgstr "Servidor API Insight"
|
||||
|
||||
#: views/settings.html
|
||||
msgid ""
|
||||
"Insight API server is open-source software. You can run your own instance, "
|
||||
"check <a href=\"http://insight.is\" target=\"_blank\">Insight API Homepage</"
|
||||
"a>"
|
||||
msgstr ""
|
||||
"Servidor API de insight es un software código-abierto. Puedes correr tu "
|
||||
"propia instancia en <a href=\"http://insight.is\" target=\"_blank\">Insight "
|
||||
"API Homepage</a>"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Insufficient funds"
|
||||
msgstr "Fondos insuficientes"
|
||||
|
||||
#: views/more.html
|
||||
msgid ""
|
||||
"It's important to backup your wallet so that you can recover it in case of "
|
||||
"disaster"
|
||||
msgstr ""
|
||||
"Es importante hacer copia de seguridad de tu monedero para que puedas "
|
||||
"recuperarlo en caso de pérdidas"
|
||||
|
||||
#: views/join.html
|
||||
msgid "Join"
|
||||
msgstr "Unirse"
|
||||
|
||||
#: views/home.html views/join.html
|
||||
msgid "Join a Wallet in Creation"
|
||||
msgstr "Unirse a un monedero"
|
||||
|
||||
#: views/send.html views/modals/address-book.html
|
||||
msgid "Label"
|
||||
msgstr "Etiqueta"
|
||||
|
||||
#: views/settings.html
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
|
||||
#: views/transactions.html
|
||||
msgid "Last transactions"
|
||||
msgstr "Últimas transacciones"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Leave a private message to your copayers"
|
||||
msgstr "Dejar mensaje privado a tus compañeros"
|
||||
|
||||
#: views/includes/sidebar-mobile.html views/includes/sidebar.html
|
||||
msgid "Locked"
|
||||
msgstr "Bloqueado"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Master Private Key"
|
||||
msgstr "Master Private Key"
|
||||
|
||||
#: views/includes/copayer.html views/includes/peer-list.html
|
||||
msgid "Me"
|
||||
msgstr "Yo"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: views/settings.html
|
||||
msgid ""
|
||||
"Network has been fixed to <strong>{{networkName}}</strong> in this setup. "
|
||||
"See <a href=\"https://copay.io\">copay.io</a> for options to use Copay on "
|
||||
"both livenet and testnet."
|
||||
msgstr ""
|
||||
"La red fue fijada a <strong>{{networkName}}</strong> para esta "
|
||||
"configuración. Ver <a href=\"https://copay.io\">copay.io</a> para más "
|
||||
"opciones de uso de Copay en livenet y testnet."
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "New Wallet Created"
|
||||
msgstr "Nuevo Monedero Creado"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Next"
|
||||
msgstr "Siguiente"
|
||||
|
||||
#: views/transactions.html
|
||||
msgid "No transactions proposals yet."
|
||||
msgstr "Sin propuestas de transacciones aún."
|
||||
|
||||
#: views/transactions.html
|
||||
msgid "No transactions yet."
|
||||
msgstr "Aún no hay transacciones."
|
||||
|
||||
#: views/send.html views/modals/address-book.html
|
||||
msgid "Not valid"
|
||||
msgstr "No válido"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Notes"
|
||||
msgstr "Notas"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "One person has"
|
||||
msgstr "Una persona"
|
||||
|
||||
#: views/includes/transaction.html
|
||||
msgid "One signature missing"
|
||||
msgstr "Falta una firma"
|
||||
|
||||
#: views/open.html
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: views/open.html
|
||||
msgid "Open Wallet"
|
||||
msgstr "Abrir Monedero"
|
||||
|
||||
#: views/home.html
|
||||
msgid "Open a wallet"
|
||||
msgstr "Abrir un monedero"
|
||||
|
||||
#: views/modals/qr-address.html
|
||||
msgid "Open in external application"
|
||||
msgstr "Abrir en una aplicación externa"
|
||||
|
||||
#: views/warning.html
|
||||
msgid ""
|
||||
"Opening the wallet in multiple browser tabs could lead to unexpected results"
|
||||
msgstr ""
|
||||
"Abrir el monedero en varias ventanas del mismo navegador podría conducir a "
|
||||
"resultados inesperados"
|
||||
|
||||
#: views/errors/404.html
|
||||
msgid "Page not found"
|
||||
msgstr "Página no encontrada"
|
||||
|
||||
#: views/import.html
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: views/join.html
|
||||
msgid "Paste wallet secret here"
|
||||
msgstr "Pegar código secreto del monedero aquí"
|
||||
|
||||
#: views/more.html
|
||||
msgid ""
|
||||
"Pending Transactions Proposals will be discarted. This need to be done on "
|
||||
"<b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced "
|
||||
"again.\n"
|
||||
" </b></b>"
|
||||
msgstr ""
|
||||
"Las Propuestas de Transacciones Pendientes serán descartadas. Esto es "
|
||||
"necesario hacerlo con <b>TODOS</b> los compañeros del monedero, para "
|
||||
"prevenir que viejas propuestas sean re sincronizadas de nuevo.\n"
|
||||
" </b></b>"
|
||||
|
||||
#: views/settings.html
|
||||
msgid "Port"
|
||||
msgstr "Puerto"
|
||||
|
||||
#: views/uri-payment.html
|
||||
msgid "Preparing payment..."
|
||||
msgstr "Preparando pago..."
|
||||
|
||||
#: views/create.html views/join.html
|
||||
msgid "Private Key (Hex)"
|
||||
msgstr "Clave Privada (Hex)"
|
||||
|
||||
#: views/includes/transaction.html
|
||||
msgid "Proposal ID"
|
||||
msgstr "ID de Propuesta"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Purge"
|
||||
msgstr "Purgar"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Purge ALL Transaction Proposals"
|
||||
msgstr "Purgar TODAS las Propuestas de Transacciones"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Purge All"
|
||||
msgstr "Purgar Todo"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Purge Pending Transaction Proposals"
|
||||
msgstr "Purgar Propuestas de Transacciones Pendientes"
|
||||
|
||||
#: views/includes/copayer.html
|
||||
msgid "Ready"
|
||||
msgstr "Listo"
|
||||
|
||||
#: views/dummy-translations.html
|
||||
msgid "Receive"
|
||||
msgstr "Recibir"
|
||||
|
||||
#: views/includes/transaction.html
|
||||
msgid "Reject"
|
||||
msgstr "Rechazar"
|
||||
|
||||
#: views/create.html views/join.html
|
||||
msgid "Repeat password"
|
||||
msgstr "Repite la contraseña"
|
||||
|
||||
#: views/create.html views/import.html views/join.html
|
||||
msgid "Required"
|
||||
msgstr "Requerido"
|
||||
|
||||
#: views/settings.html
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Scan"
|
||||
msgstr "Explorar"
|
||||
|
||||
#: views/more.html
|
||||
msgid "Scan Wallet Addresses"
|
||||
msgstr "Explorar Direcciones del Monedero"
|
||||
|
||||
#: views/import.html
|
||||
msgid "Select a backup file"
|
||||
msgstr "Seleccionar el archivo de copia de seguridad"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Select required signatures (*)"
|
||||
msgstr "Seleccione las firmas requeridas (*)"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Select total number of copayers (*)"
|
||||
msgstr "Seleccione el total de compañeros (*)"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Send"
|
||||
msgstr "Enviar"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Send Proposals"
|
||||
msgstr "Enviar Propuestas"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Send all funds"
|
||||
msgstr "Enviar todos los fondos"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Send to"
|
||||
msgstr "Enviar a"
|
||||
|
||||
#: views/includes/transaction.html
|
||||
msgid "Sent"
|
||||
msgstr "Enviado"
|
||||
|
||||
#: views/home.html views/more.html
|
||||
msgid "Settings"
|
||||
msgstr "Configuración"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "Share this secret with your other copayers"
|
||||
msgstr "Compartir el código secreto con tus otros compañeros"
|
||||
|
||||
#: views/create.html views/import.html views/join.html views/more.html
|
||||
#: views/transactions.html
|
||||
msgid "Show"
|
||||
msgstr "Mostrar"
|
||||
|
||||
#: views/addresses.html
|
||||
msgid "Show all"
|
||||
msgstr "Ver todo"
|
||||
|
||||
#: views/addresses.html
|
||||
msgid "Show less"
|
||||
msgstr "Ver menos"
|
||||
|
||||
#: views/includes/transaction.html
|
||||
msgid "Sign"
|
||||
msgstr "Firmar"
|
||||
|
||||
#: views/import.html
|
||||
msgid "Skipping fields: {{skipFields}}"
|
||||
msgstr "Saltear campos: {{skipFields}}"
|
||||
|
||||
#: views/warning.html
|
||||
msgid "This wallet appears to be currently open."
|
||||
msgstr "Este monedero parece estar actualmente abierto."
|
||||
|
||||
#: views/more.html
|
||||
msgid ""
|
||||
"This will scan the blockchain looking for addresses derived from your "
|
||||
"wallet, in case you have funds in addresses not yet generated (e.g.: you "
|
||||
"restored an old backup). This will also trigger a syncronization of "
|
||||
"addresses to other connected peers."
|
||||
msgstr ""
|
||||
"Esto verificará la blockchain buscando direcciones derivadas de tu monedero, "
|
||||
"en caso de tener fondo en direcciones que no fueron generadas aún (por ej.: "
|
||||
"si restauraste una copia de seguridad antigua). Esto también activará la "
|
||||
"sincronización de direcciones a los demás compañeros conectados."
|
||||
|
||||
#: views/send.html
|
||||
msgid "To address"
|
||||
msgstr "Dirección"
|
||||
|
||||
#: views/transactions.html
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: views/includes/transaction.html
|
||||
msgid "Transaction ID"
|
||||
msgstr "ID Transacción"
|
||||
|
||||
#: views/transactions.html
|
||||
msgid "Transaction Proposals"
|
||||
msgstr "Propuestas de Transacción"
|
||||
|
||||
#: views/includes/transaction.html
|
||||
msgid "Transaction finally rejected"
|
||||
msgstr "Transacción rechazada"
|
||||
|
||||
#: views/settings.html
|
||||
msgid "Use SSL"
|
||||
msgstr "Usar SSL"
|
||||
|
||||
#: views/send.html
|
||||
msgid "Use all funds"
|
||||
msgstr "Todos los fondos"
|
||||
|
||||
#: views/join.html
|
||||
msgid "User information"
|
||||
msgstr "Información de Usuario"
|
||||
|
||||
#: views/send.html views/modals/address-book.html
|
||||
msgid "Valid"
|
||||
msgstr "Válido"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "Waiting Copayers for {{$root.wallet.getName()}}"
|
||||
msgstr "Esperando compañeros a {{$root.wallet.getName()}}"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "Waiting copayers"
|
||||
msgstr "Esperando compañeros"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "Waiting for other copayers to make a Backup"
|
||||
msgstr "Esperando que los otros compañeros hagan su copia de seguridad"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "Waiting..."
|
||||
msgstr "Esperando..."
|
||||
|
||||
#: views/join.html
|
||||
msgid "Wallet Secret"
|
||||
msgstr "Código Secreto del Monedero"
|
||||
|
||||
#: views/join.html
|
||||
msgid "Wallet Secret is not valid!"
|
||||
msgstr "¡El código secreto no es válido!"
|
||||
|
||||
#: views/settings.html
|
||||
msgid "Wallet Unit"
|
||||
msgstr "Unidad del monedero"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Wallet name"
|
||||
msgstr "Nombre del monedero"
|
||||
|
||||
#: views/warning.html
|
||||
msgid "Warning!"
|
||||
msgstr "¡Advertencia!"
|
||||
|
||||
#: views/create.html
|
||||
msgid "Your Wallet Password"
|
||||
msgstr "Contraseña de tu Monedero"
|
||||
|
||||
#: views/more.html
|
||||
msgid ""
|
||||
"Your master private key contains the information to sign <b>any</b> "
|
||||
"transaction on this wallet. Handle with care."
|
||||
msgstr ""
|
||||
"Tu \"master private key\" contiene la información para firmar <b>cualquier</"
|
||||
"b> transacción de este monedero. Tenga cuidado al usar."
|
||||
|
||||
#: views/create.html
|
||||
msgid "Your name"
|
||||
msgstr "Tu nombre"
|
||||
|
||||
#: views/join.html
|
||||
msgid "Your name (optional)"
|
||||
msgstr "Tu nombre (opcional)"
|
||||
|
||||
#: views/open.html
|
||||
msgid "Your password"
|
||||
msgstr "Tu contraseña"
|
||||
|
||||
#: views/import.html
|
||||
msgid "Your wallet password"
|
||||
msgstr "Contraseña de tu monedero"
|
||||
|
||||
#: views/create.html views/import.html views/join.html views/more.html
|
||||
msgid "advanced options"
|
||||
msgstr "opciones avanzadas"
|
||||
|
||||
#: views/addresses.html
|
||||
msgid "change"
|
||||
msgstr "vuelto"
|
||||
|
||||
#: views/transactions.html
|
||||
msgid "first seen at"
|
||||
msgstr "Visto el"
|
||||
|
||||
#: views/transactions.html
|
||||
msgid "mined at"
|
||||
msgstr "Minado el"
|
||||
|
||||
#: views/send.html
|
||||
msgid "not valid"
|
||||
msgstr "no válido"
|
||||
|
||||
#: views/copayers.html views/includes/peer-list.html
|
||||
msgid "of"
|
||||
msgstr "de"
|
||||
|
||||
#: views/send.html
|
||||
msgid "optional"
|
||||
msgstr "opcional"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "people have"
|
||||
msgstr "personas"
|
||||
|
||||
#: views/send.html views/modals/address-book.html
|
||||
msgid "required"
|
||||
msgstr "requerido"
|
||||
|
||||
#: views/send.html
|
||||
msgid "too long!"
|
||||
msgstr "¡demasiado largo!"
|
||||
|
||||
#: views/send.html
|
||||
msgid "valid!"
|
||||
msgstr "¡válido!"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "yet to backup the wallet."
|
||||
msgstr "deben hacer su copia de seguridad"
|
||||
|
||||
#: views/copayers.html
|
||||
msgid "yet to join."
|
||||
msgstr "deben unirse"
|
||||
|
||||
#: views/includes/transaction.html
|
||||
msgid "{{tx.missingSignatures}} signatures missing"
|
||||
msgstr "Faltan {{tx.missingSignatures}} firmas"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}} wallet"
|
||||
#~ msgstr "Monedero {{requiredCopayers}}-de-{{totalCopayers}}"
|
||||
|
||||
#~ msgid "« Back"
|
||||
#~ msgstr "« Volver"
|
||||
|
||||
#~ msgid "Fees"
|
||||
#~ msgstr "Tasas"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Wallet\n"
|
||||
#~ " name"
|
||||
#~ msgstr ""
|
||||
#~ "Nombre del\n"
|
||||
#~ " monedero"
|
|
@ -1,7 +1,7 @@
|
|||
<div class="addresses" ng-controller="AddressesController">
|
||||
<div ng-show='$root.wallet.isReady()'>
|
||||
<h1>
|
||||
Addresses
|
||||
<span translate>Addresses</span>
|
||||
<span class="button primary small side-bar" ng-click="newAddr()" ng-disabled="loading" loading="Creating"><i class="fi-plus"></i></span>
|
||||
</h1>
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
|||
<contact address="{{addr.address}}" tooltip-popup-delay="500" tooltip tooltip-placement="right"/>
|
||||
</span>
|
||||
<span class="btn-copy" clip-copy="addr.address"> </span>
|
||||
<small class="label" ng-if="addr.isChange">change</small>
|
||||
<small translate class="label" ng-if="addr.isChange">change</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -32,8 +32,8 @@
|
|||
</div>
|
||||
|
||||
<a class="secondary radius" ng-click="showAll=!showAll" ng-show="(addresses|removeEmpty).length != (addresses|removeEmpty|limitAddress).length">
|
||||
<span ng-if="!showAll">Show all</span>
|
||||
<span ng-if="showAll">Show less</span>
|
||||
<span translate ng-if="!showAll">Show all</span>
|
||||
<span translate ng-if="showAll">Show less</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
<div class="box-setup oh">
|
||||
<div ng-if="!$root.wallet.publicKeyRing.isComplete()">
|
||||
<img ng-if="$root.fromSetup && !isMobile" class="right m15t" src="img/step-3.svg" alt="Step 3">
|
||||
<h1 class="text-primary line-sidebar-b">Waiting copayers</h1>
|
||||
<h3>Share this secret with your other copayers</h3>
|
||||
<h1 translate class="text-primary line-sidebar-b">Waiting copayers</h1>
|
||||
<h3 translate>Share this secret with your other copayers</h3>
|
||||
<div class="panel">
|
||||
<qrcode size="350" data="{{$root.wallet.getSecret()}}"></qrcode>
|
||||
<div class="secret text-gray size-14">
|
||||
|
@ -20,30 +20,31 @@
|
|||
<div style="clear:both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<h1 class="text-white line-sidebar-b" ng-if="$root.wallet && $root.wallet.publicKeyRing.isComplete()">New Wallet Created </h1>
|
||||
<h1 class="text-white line-sidebar-b" ng-if="$root.wallet &&
|
||||
$root.wallet.publicKeyRing.isComplete()" translate>New Wallet Created</h1>
|
||||
<div class="row" ng-show="$root.wallet.publicKeyRing.isComplete()">
|
||||
<div class="large-4 small-6 columns text-left">
|
||||
<h3>Download Backup</h3>
|
||||
<h3 translate>Download Backup</h3>
|
||||
</div>
|
||||
<div class="large-8 small-6 columns text-right">
|
||||
<h3 class="ellipsis">
|
||||
<small class="text-gray">
|
||||
<b>{{$root.wallet.getName()}}</b> :
|
||||
{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}}
|
||||
{{$root.wallet.requiredCopayers}}-{{'of'|translate}}-{{$root.wallet.totalCopayers}}
|
||||
</small>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="large-10 small-9 columns text-left">
|
||||
<h4 class="ellipsis" ng-show="!$root.wallet.publicKeyRing.isComplete()">
|
||||
<h4 translate class="ellipsis" ng-show="!$root.wallet.publicKeyRing.isComplete()">
|
||||
Waiting Copayers for {{$root.wallet.getName()}}
|
||||
</h4>
|
||||
</div>
|
||||
<div class="large-2 small-3 columns text-right">
|
||||
<h4 ng-show="$root.wallet && !$root.wallet.publicKeyRing.isComplete()">
|
||||
<small class="text-gray">
|
||||
{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}} wallet
|
||||
{{$root.wallet.requiredCopayers}}-{{'of'|translate}}-{{$root.wallet.totalCopayers}}
|
||||
</small>
|
||||
</h4>
|
||||
</div>
|
||||
|
@ -61,53 +62,55 @@
|
|||
width="70">
|
||||
<p class="size-12 text-white text-light m0">
|
||||
<i class="fi-loop icon-rotate spinner"></i>
|
||||
Waiting...
|
||||
<span translate>Waiting...</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-show="$root.wallet.publicKeyRing.remainingCopayers() > 1">
|
||||
<div class="line-sidebar-b" ng-if="$root.wallet && $root.wallet.publicKeyRing.isComplete()"></div>
|
||||
<div class="text-gray m10t" ng-if="$root.wallet && $root.wallet.publicKeyRing.isComplete()">
|
||||
<i class="text-white fi-loop icon-rotate spinner"></i> Waiting for other
|
||||
copayers to make a Backup
|
||||
<i class="text-white fi-loop icon-rotate spinner"></i>
|
||||
<span translate>Waiting for other copayers to make a Backup</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-right">
|
||||
<a class="text-warning" ng-really-click="deleteWallet()"
|
||||
<a translate class="text-warning" ng-really-click="deleteWallet()"
|
||||
ng-really-message="Are you sure to delete this wallet from this
|
||||
computer?">Delete wallet</a>
|
||||
<span class="text-gray">|</span>
|
||||
<a class="text-primary m20r" ng-click="downloadBackup()"
|
||||
<a translate class="text-primary m20r" ng-click="downloadBackup()"
|
||||
ng-show="!$root.wallet.publicKeyRing.isComplete()">Download seed backup</a>
|
||||
<button class="button primary m0"
|
||||
ng-click="backup()"
|
||||
ng-show="!$root.wallet.publicKeyRing.isBackupReady()"
|
||||
ng-disabled="!$root.wallet.publicKeyRing.isComplete()">
|
||||
<span ng-show="$root.wallet.publicKeyRing.isComplete()" >
|
||||
<span translate ng-show="$root.wallet.publicKeyRing.isComplete()" >
|
||||
Backup wallet
|
||||
</span>
|
||||
<span ng-show="!$root.wallet.publicKeyRing.isComplete()" >
|
||||
<span ng-show="$root.wallet.publicKeyRing.remainingCopayers() > 1">
|
||||
{{ $root.wallet.publicKeyRing.remainingCopayers() }} people have
|
||||
{{ $root.wallet.publicKeyRing.remainingCopayers() }} <span
|
||||
translate>people have</span>
|
||||
</span>
|
||||
<span ng-show="$root.wallet.publicKeyRing.remainingCopayers() == 1">
|
||||
<span translate ng-show="$root.wallet.publicKeyRing.remainingCopayers() == 1">
|
||||
One person has
|
||||
</span>
|
||||
yet to join.
|
||||
<span translate>yet to join.</span>
|
||||
</span>
|
||||
</button>
|
||||
<button class="button primary"
|
||||
disabled="disabled"
|
||||
ng-show="$root.wallet.publicKeyRing.isBackupReady()">
|
||||
<span ng-show="$root.wallet.publicKeyRing.remainingBackups() > 1">
|
||||
{{ $root.wallet.publicKeyRing.remainingBackups() }} people have
|
||||
{{ $root.wallet.publicKeyRing.remainingBackups() }} <span
|
||||
translate>people have</span>
|
||||
</span>
|
||||
<span ng-show="$root.wallet.publicKeyRing.remainingBackups() == 1">
|
||||
<span translate ng-show="$root.wallet.publicKeyRing.remainingBackups() == 1">
|
||||
One person has
|
||||
</span>
|
||||
yet to backup the wallet.
|
||||
<span translate>yet to backup the wallet.</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div ng-controller="CreateController">
|
||||
<div data-alert class="loading-screen" ng-show="loading">
|
||||
<i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
Creating wallet...
|
||||
<span translate>Creating wallet...</span>
|
||||
</div>
|
||||
<div class="setup" ng-show="!loading">
|
||||
<form name="setupForm" ng-submit="create(setupForm)" novalidate>
|
||||
|
@ -14,19 +14,21 @@
|
|||
<div class="box-setup oh">
|
||||
<img ng-if="!isSetupWalletPage && !isMobile" class="right m15t" src="img/step-1.svg" alt="Step 1">
|
||||
<img ng-if="isSetupWalletPage && !isMobile" class="right m15t" src="img/step-2.svg" alt="Step 2">
|
||||
<h1 class="text-secondary line-sidebar-b">Create new wallet</h1>
|
||||
<label ng-show="!isSetupWalletPage">Wallet name
|
||||
<input type="text" placeholder="Family vacation funds" class="form-control" ng-model="walletName">
|
||||
<h1 translate class="text-secondary line-sidebar-b">Create new wallet</h1>
|
||||
<label ng-show="!isSetupWalletPage"><span translate>Wallet name</span>
|
||||
<input type="text" placeholder="{{'Family vacation funds'|translate}}" class="form-control" ng-model="walletName">
|
||||
</label>
|
||||
<div class="row" ng-show="isSetupWalletPage">
|
||||
<div ng-if="totalCopayers > 1">
|
||||
<label for="Name">Your name</label>
|
||||
<input id="Name" type="text" placeholder="Name" class="form-control" ng-model="$parent.myNickname">
|
||||
<label translate for="Name">Your name</label>
|
||||
<input id="Name" type="text" placeholder="{{'Name'|translate}}" class="form-control" ng-model="$parent.myNickname">
|
||||
</div>
|
||||
<div>
|
||||
<label for="walletPassword">Your Wallet Password <small data-options="disable_for_touch:true" class="has-tip text-gray" tooltip="doesn't need to be shared" >Required</small>
|
||||
<label for="walletPassword"><span translate>Your Wallet Password</span>
|
||||
<small translate data-options="disable_for_touch:true" class="has-tip text-gray" tooltip="doesn't need to be shared" >Required</small>
|
||||
</label>
|
||||
<input id="walletPassword" type="password" placeholder="Choose your password" class="form-control"
|
||||
<input id="walletPassword" type="password"
|
||||
placeholder="{{'Choose your password'|translate}}" class="form-control"
|
||||
ng-model="$parent.walletPassword"
|
||||
name="walletPassword"
|
||||
check-strength="passwordStrength"
|
||||
|
@ -38,7 +40,7 @@
|
|||
tooltip-placement="top">
|
||||
|
||||
<input type="password"
|
||||
placeholder="Repeat password"
|
||||
placeholder="{{'Repeat password'|translate}}"
|
||||
name="walletPasswordConfirm"
|
||||
ng-model="walletPasswordConfirm"
|
||||
match="walletPassword"
|
||||
|
@ -46,14 +48,14 @@
|
|||
</div>
|
||||
|
||||
<a class="expand small" ng-click="hideAdv=!hideAdv">
|
||||
<span ng-hide="!hideAdv">Show</span>
|
||||
<span ng-hide="hideAdv">Hide</span>
|
||||
advanced options
|
||||
<span translate ng-hide="!hideAdv">Show</span>
|
||||
<span translate ng-hide="hideAdv">Hide</span>
|
||||
<span translate>advanced options</span>
|
||||
</a>
|
||||
<div ng-hide="hideAdv">
|
||||
<p>
|
||||
<input type="text"
|
||||
placeholder="Private Key (Hex)"
|
||||
placeholder="{{'Private Key (Hex)'|translate}}"
|
||||
name="private"
|
||||
ng-model="private"
|
||||
>
|
||||
|
@ -62,13 +64,13 @@
|
|||
</div>
|
||||
<div class="row" ng-show="!isSetupWalletPage">
|
||||
<div class="large-6 medium-6 columns">
|
||||
<label>Select total number of copayers (*)
|
||||
<label><span translate>Select total number of copayers (*)</span>
|
||||
<select ng-model="totalCopayers" ng-options="totalCopayers as totalCopayers for totalCopayers in TCValues">
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="large-6 medium-6 columns">
|
||||
<label>Select required signatures (*)
|
||||
<label><span translate>Select required signatures (*)</span>
|
||||
<select ng-model="requiredCopayers" ng-options="requiredCopayers as requiredCopayers for requiredCopayers in RCValues" ng-disabled="totalCopayers == 1">
|
||||
</select>
|
||||
</label>
|
||||
|
@ -83,15 +85,16 @@
|
|||
width="50px">
|
||||
</div>
|
||||
</div>
|
||||
<p class="comment" ng-show="totalCopayers>1 && !isSetupWalletPage">(*) The limits are imposed by the bitcoin network.</p>
|
||||
<p translate class="comment" ng-show="totalCopayers>1 && !isSetupWalletPage">(*) The limits are imposed by the bitcoin network.</p>
|
||||
<div class="text-right">
|
||||
<a ng-show="!isSetupWalletPage" class="back-button m20r" href="#!/">« Back</a>
|
||||
<a ng-show="!isSetupWalletPage" class="back-button m20r"
|
||||
href="#!/">« <span translate>Back</span></a>
|
||||
<a ng-show="isSetupWalletPage" class="back-button m20r"
|
||||
ng-click="setupWallet()">« Back</a>
|
||||
<button ng-show="isSetupWalletPage" type="submit" class="button secondary m0" ng-disabled="setupForm.$invalid || loading">
|
||||
ng-click="setupWallet()">« <span translate>Back</span></a>
|
||||
<button translate ng-show="isSetupWalletPage" type="submit" class="button secondary m0" ng-disabled="setupForm.$invalid || loading">
|
||||
Create {{requiredCopayers}}-of-{{totalCopayers}} wallet
|
||||
</button>
|
||||
<a class="button secondary m0" ng-show="!isSetupWalletPage"
|
||||
<a translate class="button secondary m0" ng-show="!isSetupWalletPage"
|
||||
ng-click="setupWallet()">Next</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<span translate>Receive</span>
|
||||
<span translate>History</span>
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<img src="img/logo-negative-beta.svg" alt="Copay">
|
||||
</div>
|
||||
<h1 class="text-center text-white">404</h1>
|
||||
<h3 class="text-center text-white">Page not found</h3>
|
||||
<p class="text-center"><a href="#!/">go back...</a></p>
|
||||
<h3 translate class="text-center text-white">Page not found</h3>
|
||||
<p class="text-center"><a href="#!/">« <span translate>Back</span></a></p>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -6,21 +6,23 @@
|
|||
</div>
|
||||
<div class="large-8 columns line-dashed-setup-v">
|
||||
<div class="button-setup" ng-show="hasWallets">
|
||||
<a class="text-white" href="#!/open">Open a wallet</a>
|
||||
<a translate class="text-white" href="#!/open">Open a wallet</a>
|
||||
</div>
|
||||
<div class="button-setup" ng-show="!hasWallets">
|
||||
<a class="text-secondary" href="#!/create">Create a new wallet</a>
|
||||
<a translate class="text-secondary" href="#!/create">Create a new wallet</a>
|
||||
</div>
|
||||
<div class="button-setup">
|
||||
<a class="text-primary" href="#!/join">Join a Wallet in Creation</a>
|
||||
<a translate class="text-primary" href="#!/join">Join a Wallet in Creation</a>
|
||||
</div>
|
||||
<div class="button-setup" ng-show="hasWallets">
|
||||
<a class="text-secondary" href="#!/create">Create a wallet</a>
|
||||
<a translate class="text-secondary" href="#!/create">Create a wallet</a>
|
||||
</div>
|
||||
|
||||
<div class="footer-setup">
|
||||
<a class="right size-12 text-gray" href="#!/settings"><i class="m10r size-14 fi-wrench"></i>Settings</a>
|
||||
<a class="left size-12 text-gray" href="#!/import"><i class="m10r size-14 fi-upload"></i>Import a backup</a>
|
||||
<a class="right size-12 text-gray" href="#!/settings"><i class="m10r
|
||||
size-14 fi-wrench"></i><span translate>Settings</span></a>
|
||||
<a class="left size-12 text-gray" href="#!/import"><i class="m10r
|
||||
size-14 fi-upload"></i><span translate>Import a backup</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -12,30 +12,32 @@
|
|||
<div class="large-8 columns line-dashed-setup-v">
|
||||
|
||||
<div class="box-setup">
|
||||
<h1 class="text-white line-sidebar-b">{{title}}</h1>
|
||||
<h1 class="text-white line-sidebar-b">{{title|translate}}</h1>
|
||||
<form name="importForm" ng-submit="import(importForm)" novalidate>
|
||||
<fieldset>
|
||||
<legend for="backupFile" class="m10b"> Choose backup file from your computer <i class="fi-laptop"></i></legend>
|
||||
<input type="file" class="form-control" placeholder="Select a backup file" name="backupFile" ng-model="backupFile" ng-file-select>
|
||||
<legend for="backupFile" class="m10b"> <span translate>Choose backup file from your computer</span> <i class="fi-laptop"></i></legend>
|
||||
<input type="file" class="form-control"
|
||||
placeholder="{{'Select a backup file'|translate}}" name="backupFile" ng-model="backupFile" ng-file-select>
|
||||
|
||||
|
||||
<label for="password">Password <small>Required</small></label>
|
||||
<input type="password" class="form-control" placeholder="Your wallet password" name="password" ng-model="password" required>
|
||||
<label for="password"><span translate>Password</span> <small translate>Required</small></label>
|
||||
<input type="password" class="form-control"
|
||||
placeholder="{{'Your wallet password'|translate}}" name="password" ng-model="password" required>
|
||||
|
||||
<a class="expand small" ng-click="hideAdv=!hideAdv">
|
||||
<span ng-hide="!hideAdv">Show</span>
|
||||
<span ng-hide="hideAdv">Hide</span>
|
||||
advanced options
|
||||
<span translate ng-hide="!hideAdv">Show</span>
|
||||
<span translate ng-hide="hideAdv">Hide</span>
|
||||
<span translate>advanced options</span>
|
||||
</a>
|
||||
|
||||
|
||||
<div ng-hide="hideAdv">
|
||||
<label>
|
||||
<input type="checkbox" class="form-control" name="skipPublicKeyRing" ng-model="skipPublicKeyRing"> Skip public keys from peers
|
||||
<input translate type="checkbox" class="form-control" name="skipPublicKeyRing" ng-model="skipPublicKeyRing">Skip public keys from peers
|
||||
</label>
|
||||
|
||||
<label>
|
||||
<input type="checkbox" class="form-control" name="skipTxProposals" ng-model="skipTxProposals"> Skip transaction proposals from Backup
|
||||
<input translate type="checkbox" class="form-control" name="skipTxProposals" ng-model="skipTxProposals">Skip transaction proposals from Backup
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
@ -43,13 +45,13 @@
|
|||
</fieldset>
|
||||
<div data-alert ng-show="skipFields">
|
||||
<i class="size-18 fi-alert"></i>
|
||||
Skipping fields: {{skipFields}}
|
||||
<span translate>Skipping fields: {{skipFields}}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="text-right">
|
||||
<a class="back-button text-white m20r" href="#!/">« Back</a>
|
||||
<button type="submit" class="button primary m0" ng-disabled="importForm.$invalid" loading="Importing">
|
||||
<a class="back-button text-white m20r" href="#!/">« <span translate>Back</span></a>
|
||||
<button translate type="submit" class="button primary m0" ng-disabled="importForm.$invalid" loading="Importing">
|
||||
Import backup
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
class="ellipsis"
|
||||
tooltip="ID: {{copayer.peerId}}"
|
||||
tooltip-placement="bottom">
|
||||
<small class="text-gray" ng-show="copayer.index == 0"><i class="fi-check m5r"></i>Me</small>
|
||||
<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>{{copayer.nick}}</small>
|
||||
</div>
|
||||
|
||||
<div class="success label m10t" ng-show="isBackupReady(copayer)">
|
||||
<div translate class="success label m10t" ng-show="isBackupReady(copayer)">
|
||||
Ready
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
<img ng-src="{{noti.image}}" ng-switch-default />
|
||||
</div>
|
||||
<div class="dr-notification-content">
|
||||
<h3 class="dr-notification-title">{{noti.title}}</h3>
|
||||
<div class="dr-notification-text">{{noti.content}}</div>
|
||||
<h3 class="dr-notification-title">{{noti.title|translate}}</h3>
|
||||
<div class="dr-notification-text">{{noti.content|translate}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<div ng-controller="CopayersController" class="copayers">
|
||||
<h3>
|
||||
<i class="fi-torsos-all size-21 m20r"></i>
|
||||
Copayers
|
||||
<span translate>Copayers</span>
|
||||
<small class="m15l">
|
||||
{{$root.wallet.requiredCopayers}} of {{$root.wallet.totalCopayers}}
|
||||
{{$root.wallet.requiredCopayers}} <span translate>of</span> {{$root.wallet.totalCopayers}}
|
||||
</small>
|
||||
</h3>
|
||||
|
||||
|
@ -15,7 +15,9 @@
|
|||
width="30">
|
||||
|
||||
<div class="ellipsis" tooltip-placement="top" tooltip="{{copayer.nick}}">
|
||||
<small class="text-gray" ng-show="copayer.index == 0">Me</small>
|
||||
<small class="text-gray" ng-show="copayer.index == 0">
|
||||
<span translate>Me</span>
|
||||
</small>
|
||||
<small class="text-gray" ng-show="copayer.index > 0">{{copayer.nick}}</small>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<span class="size-12 right">{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}}</span>
|
||||
</p>
|
||||
<div class="line-sidebar-t">
|
||||
Balance
|
||||
<span translate>Balance</span>
|
||||
<span class="gray small side-bar right" title="Manual Refresh"><i class="size-16 fi-refresh"></i></span>
|
||||
<span ng-if="$root.updatingBalance">
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
|
@ -24,12 +24,12 @@
|
|||
</span>
|
||||
</div>
|
||||
<div class="m10t" ng-show="lockedBalance">
|
||||
Locked
|
||||
<span translate>Locked</span>
|
||||
<span ng-if="$root.updatingBalance">
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
</span>
|
||||
<span ng-show="!$root.updatingBalance">{{lockedBalance || 0|noFractionNumber}} {{$root.unitName}}
|
||||
</span> <i class="fi-info medium" tooltip="Balance locked in pending transaction proposals" tooltip-placement="bottom"></i>
|
||||
</span> <i class="fi-info medium" tooltip="{{'Balance locked in pending transaction proposals'|translate}}" tooltip-placement="bottom"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line-sidebar-t p0"></div>
|
||||
|
@ -42,7 +42,7 @@
|
|||
</li>
|
||||
<li>
|
||||
<a href="#" class="db p20h" title="Close"
|
||||
ng-click="signout()"><i class="size-24 m20r fi-power"></i> Close</a>
|
||||
ng-click="signout()"><i class="size-24 m20r fi-power"></i> <span translate>Close</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
ng-click="refresh()"><i class="size-16 fi-refresh"></i></a>
|
||||
</div>
|
||||
<div class="founds size-14 m10v">
|
||||
Balance
|
||||
<span translate>Balance</span>
|
||||
<span ng-if="$root.updatingBalance">
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
</span>
|
||||
|
@ -29,7 +29,7 @@
|
|||
tooltip-placement="bottom">{{totalBalance || 0 |noFractionNumber}} {{$root.unitName}}
|
||||
</span>
|
||||
<div class="m10t" ng-show="lockedBalance">
|
||||
Locked
|
||||
<span translate>Locked</span>
|
||||
<span ng-if="$root.updatingBalance">
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
</span>
|
||||
|
@ -40,7 +40,7 @@
|
|||
tooltip="{{lockedBalanceAlternative |noFractionNumber:2}} {{alternativeIsoCode}}"
|
||||
tooltip-trigger="mouseenter"
|
||||
tooltip-placement="bottom">{{lockedBalance || 0|noFractionNumber}} {{$root.unitName}}
|
||||
</span> <i class="fi-info medium" tooltip="Balance locked in pending transaction proposals" tooltip-placement="bottom"></i>
|
||||
</span> <i class="fi-info medium" tooltip="{{'Balance locked in pending transaction proposals'|translate}}" tooltip-placement="bottom"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line-sidebar"></div>
|
||||
|
@ -48,7 +48,7 @@
|
|||
<ul class="side-nav">
|
||||
<li data-ng-repeat="item in menu" ui-route="{{item.link}}" class="nav-item" data-ng-class="{active: isActive(item)}">
|
||||
<a href="#!/{{item.link}}" ng-click="toggleCollapse()" class="db p20h">
|
||||
<i class="size-21 m20r {{item.icon}}"></i> {{item.title}}
|
||||
<i class="size-21 m20r {{item.icon}}"></i> {{item.title|translate}}
|
||||
<span class="right">
|
||||
<span class="label alert" ng-if="item.link=='send' && $root.pendingTxCount > 0">{{$root.pendingTxCount}}</span>
|
||||
</span>
|
||||
|
@ -56,7 +56,7 @@
|
|||
</li>
|
||||
<li>
|
||||
<a href="#!/" class="db p20h" title="Close"
|
||||
ng-click="signout()"><i class="size-21 m20r fi-power"></i> Close</a>
|
||||
ng-click="signout()"><i class="size-21 m20r fi-power"></i> <span translate>Close</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -72,51 +72,51 @@
|
|||
<div ng-show="!tx.signedByUs && !tx.rejectedByUs && !tx.finallyRejected && tx.missingSignatures">
|
||||
<div class="hide-for-small-only">
|
||||
<button class="primary m15r" ng-click="sign(tx.ntxid)" ng-disabled="loading" loading="Signing">
|
||||
<i class="fi-check"></i> Sign
|
||||
<i class="fi-check"></i> <span translate>Sign</span>
|
||||
</button>
|
||||
<button class="warning" ng-click="reject(tx.ntxid)" ng-disabled="loading" loading="Rejecting">
|
||||
<i class="fi-x" ></i> Reject
|
||||
<i class="fi-x" ></i> <span translate>Reject</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="show-for-small-only row m10b">
|
||||
<button class="primary small-5 columns" ng-click="sign(tx.ntxid)" ng-disabled="loading" loading="Signing">
|
||||
<i class="fi-check"></i> Sign
|
||||
<i class="fi-check"></i> <span translate>Sign</span>
|
||||
</button>
|
||||
<button class="warning small-5 columns" ng-click="reject(tx.ntxid)" ng-disabled="loading" loading="Rejecting">
|
||||
<i class="fi-x" ></i> Reject
|
||||
<i class="fi-x" ></i> <span translate>Reject</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-show="!tx.missingSignatures && !tx.sentTs">
|
||||
<button class="primary" ng-click="send(tx.ntxid)" ng-disabled="loading" loading="Broadcasting"> <i class=".fi-upload-cloud"></i>
|
||||
Broadcast Transaction
|
||||
<span translate>Broadcast Transaction</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="large-7 medium-5 small-12 columns text-right">
|
||||
<div ng-show="tx.finallyRejected" class="has-error m10b">
|
||||
<div translate ng-show="tx.finallyRejected" class="has-error m10b">
|
||||
Transaction finally rejected
|
||||
</div>
|
||||
<div ng-show="!tx.missingSignatures && tx.sentTs">
|
||||
<div class="is-valid m10b">
|
||||
<strong>Sent</strong> <span class="text-gray" am-time-ago="tx.sentTs"></span>
|
||||
<strong translate>Sent</strong> <span class="text-gray" am-time-ago="tx.sentTs"></span>
|
||||
</div>
|
||||
<div class="ellipsis small">
|
||||
Transaction ID:
|
||||
<span translate>Transaction ID</span>:
|
||||
<a href="http://{{getShortNetworkName()}}.insight.is/tx/{{tx.sentTxid}}" target="_blank">
|
||||
{{tx.sentTxid}}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-gray m5b" ng-show="!tx.finallyRejected && tx.missingSignatures==1">
|
||||
<p translate class="text-gray m5b" ng-show="!tx.finallyRejected && tx.missingSignatures==1">
|
||||
One signature missing
|
||||
</p>
|
||||
<p class="text-gray m5b" ng-show="!tx.finallyRejected && tx.missingSignatures>1">
|
||||
<p translate class="text-gray m5b" ng-show="!tx.finallyRejected && tx.missingSignatures>1">
|
||||
{{tx.missingSignatures}} signatures missing</p>
|
||||
<div class="ellipsis small text-gray">
|
||||
<strong>Fee:</strong> {{tx.fee|noFractionNumber}} {{$root.unitName}}
|
||||
<strong>Proposal ID:</strong> {{tx.ntxid}}
|
||||
<strong translate>Fee</strong>: {{tx.fee|noFractionNumber}} {{$root.unitName}}
|
||||
<strong translate>Proposal ID</strong>: {{tx.ntxid}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div ng-controller="VersionController">
|
||||
<small>v{{version}}</small>
|
||||
<small>v{{version}} ({{defaultLanguage}})</small>
|
||||
<small>#{{commitHash}}</small>
|
||||
<small ng-if="networkName=='testnet'">[ {{networkName}} ]</small>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="join" ng-controller="JoinController">
|
||||
<div data-alert class="loading-screen" ng-show="loading && !failure">
|
||||
<i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
Authenticating and looking for peers...
|
||||
<span translate>Authenticating and looking for peers...</span>
|
||||
</div>
|
||||
<div class="row" ng-show="!loading">
|
||||
<div class="large-4 columns logo-setup">
|
||||
|
@ -10,20 +10,21 @@
|
|||
</div>
|
||||
<div class="large-8 columns line-dashed-setup-v">
|
||||
<div class="box-setup">
|
||||
<h1 class="text-primary line-sidebar-b">Join a Wallet in Creation</h1>
|
||||
<h1 translate class="text-primary line-sidebar-b">Join a Wallet in Creation</h1>
|
||||
<form name="joinForm" ng-submit="join(joinForm)" novalidate>
|
||||
|
||||
<label for="connectionId"> Wallet Setting
|
||||
<small class="has-error" ng-show="joinForm.connectionId.$invalid
|
||||
<label for="connectionId"><span translate>Wallet Secret</span>
|
||||
<small translate class="has-error" ng-show="joinForm.connectionId.$invalid
|
||||
&& !joinForm.connectionId.$pristine">Wallet Secret is not valid!</small>
|
||||
<small data-options="disable_for_touch:true"
|
||||
<small translate data-options="disable_for_touch:true"
|
||||
ng-show="joinForm.connectionId.$pristine" class="has-tip
|
||||
text-gray" tooltip="Paste wallet secret here" >Required</small>
|
||||
</label>
|
||||
|
||||
<div class="row collapse">
|
||||
<div class="large-10 medium-10 small-10 columns">
|
||||
<input id="connectionId" type="text" class="small-9 columns" placeholder="Paste wallet secret here" name="connectionId" ng-model="connectionId" wallet-secret required>
|
||||
<input id="connectionId" type="text" class="small-9 columns"
|
||||
placeholder="{{'Paste wallet secret here'|translate}}" name="connectionId" ng-model="connectionId" wallet-secret required>
|
||||
</div>
|
||||
<div class="small-2 columns" ng-hide="showScanner">
|
||||
<a class="postfix button primary" ng-click="openScanner()"><i class="fi-camera"> </i></a>
|
||||
|
@ -40,7 +41,7 @@
|
|||
<div id="file-input-wrapper" class="btn btn-primary">
|
||||
<span class="pull-left text-centered">
|
||||
<i class="glyphicon glyphicon-refresh icon-rotate"></i>
|
||||
Get QR code
|
||||
<span translate>Get QR code</span>
|
||||
</span>
|
||||
<input id="qrcode-camera" type="file" capture="camera" accept="image/*">
|
||||
</div>
|
||||
|
@ -51,10 +52,11 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<label for="joinPassword"> User info </label>
|
||||
<input id="joinPassword" type="text" class="form-control" placeholder="Your name (optional)" name="nickname" ng-model="nickname">
|
||||
<label translate for="joinPassword">User information</label>
|
||||
<input id="joinPassword" type="text" class="form-control"
|
||||
placeholder="{{'Your name (optional)'|translate}}" name="nickname" ng-model="nickname">
|
||||
<input type="password" class="form-control"
|
||||
placeholder="Choose your password" name="joinPassword"
|
||||
placeholder="{{'Choose your password'|translate}}" name="joinPassword"
|
||||
ng-model="$parent.joinPassword"
|
||||
check-strength="passwordStrength"
|
||||
tooltip-html-unsafe="Password strength:
|
||||
|
@ -63,27 +65,27 @@
|
|||
tooltip-placement="top" required>
|
||||
|
||||
<input type="password"
|
||||
placeholder="Repeat password"
|
||||
placeholder="{{'Repeat password'|translate}}"
|
||||
name="joinPasswordConfirm"
|
||||
ng-model="joinPasswordConfirm"
|
||||
match="joinPassword" required>
|
||||
<a class="expand small" ng-click="hideAdv=!hideAdv">
|
||||
<span ng-hide="!hideAdv">Show</span>
|
||||
<span ng-hide="hideAdv">Hide</span>
|
||||
advanced options
|
||||
<span translate ng-hide="!hideAdv">Show</span>
|
||||
<span translate ng-hide="hideAdv">Hide</span>
|
||||
<span translate>advanced options</span>
|
||||
</a>
|
||||
<div ng-hide="hideAdv">
|
||||
<p>
|
||||
<input type="text"
|
||||
placeholder="Private Key (Hex)"
|
||||
placeholder="{{'Private Key (Hex)'|translate}}"
|
||||
name="private"
|
||||
ng-model="$parent.private"
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="text-right">
|
||||
<a href="#!/" class="back-button text-primary m20r">« Back</a>
|
||||
<button type="submit" class="button primary m0" ng-disabled="joinForm.$invalid || loading" loading="Joining">Join</button>
|
||||
<a href="#!/" class="back-button text-primary m20r">« <span translate>Back</span></a>
|
||||
<button translate type="submit" class="button primary m0" ng-disabled="joinForm.$invalid || loading" loading="Joining">Join</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
<h2>Add Address Book Entry</h2>
|
||||
<h2 translate>Add Address Book Entry</h2>
|
||||
<form name="addressBookForm" ng-submit="submitAddressBook(addressBookForm)" novalidate>
|
||||
<label for="newaddress">Address
|
||||
<small ng-hide="!addressBookForm.newaddress.$pristine || newaddress">required</small>
|
||||
<small class="is-valid" ng-show="!addressBookForm.newaddress.$invalid && newaddress">Valid</small>
|
||||
<small class="has-error" ng-show="addressBookForm.newaddress.$invalid && newaddress">
|
||||
<label for="newaddress"><span translate>Address</span>
|
||||
<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="has-error" ng-show="addressBookForm.newaddress.$invalid && newaddress">
|
||||
Not valid</small>
|
||||
<input type="text" id="newaddress" name="newaddress" ng-disabled="loading"
|
||||
placeholder="Address" ng-model="newaddress" valid-address required>
|
||||
placeholder="{{'Address'|translate}}" ng-model="newaddress" valid-address required>
|
||||
</label>
|
||||
<label for="newlabel">Label
|
||||
<small ng-hide="!addressBookForm.newlabel.$pristine || newlabel">required</small>
|
||||
<label for="newlabel"><span translate>Label</span>
|
||||
<small translate ng-hide="!addressBookForm.newlabel.$pristine || newlabel">required</small>
|
||||
<input type="text" id="newlabel" name="newlabel" ng-disabled="loading"
|
||||
placeholder="Label" ng-model="newlabel" required>
|
||||
placeholder="{{'Label'|translate}}" ng-model="newlabel" required>
|
||||
</label>
|
||||
<a class="button warning small default" ng-click="cancel()">Cancel</a>
|
||||
<input type="submit" class="button small primary right" ng-disabled="addressBookForm.$invalid || loading" value="Add Address">
|
||||
<a translate class="button warning small default" ng-click="cancel()">Cancel</a>
|
||||
<input type="submit" class="button small primary right"
|
||||
ng-disabled="addressBookForm.$invalid || loading"
|
||||
value="{{'Add Address'|translate}}">
|
||||
</form>
|
||||
<a class="close-reveal-modal" ng-click="cancel()">×</a>
|
||||
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
{{address.balance || 0|noFractionNumber}} {{$root.unitName}}
|
||||
</p>
|
||||
<button class="m15t button secondary" open-external address="{{address.address}}">
|
||||
<i class="fi-link"> </i> Open in external application
|
||||
<i class="fi-link"> </i> <span translate>Open in external application</span>
|
||||
</button><br><br>
|
||||
<button class="m15t button secondary" ng-show="isMobile" ng-click="mobileCopy(address.address)">
|
||||
<i class="fi-link"> </i> Copy to clipboard
|
||||
<i class="fi-link"> </i> <span translate>Copy to clipboard</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,65 +1,76 @@
|
|||
<div class="backup" ng-controller="MoreController">
|
||||
<h1>Settings </h1>
|
||||
<h1 translate>Settings </h1>
|
||||
<div class="oh large-12 columns panel">
|
||||
<h3><i class="fi-download m10r"></i> Backup </h3>
|
||||
<p class="large-8 columns text-gray"> It's important to backup your wallet so that you can recover it in case of disaster</p>
|
||||
<h3><i class="fi-download m10r"></i> <span translate>Backup</span> </h3>
|
||||
<p translate class="large-8 columns text-gray">It's important to backup your wallet so that you can recover it in case of disaster</p>
|
||||
<div class="large-4 columns">
|
||||
<a class="button primary expand" ng-click="downloadBackup()">Download File</a>
|
||||
<a translate class="button primary expand" ng-click="downloadBackup()">Download File</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="large-12 columns line-dashed-h m15b"> </div>
|
||||
<div>
|
||||
<div class="oh large-12 columns panel">
|
||||
<h3><i class="fi-minus-circle m10r"></i> Delete Wallet </h3>
|
||||
<p 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>
|
||||
<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>
|
||||
<div class="large-4 columns">
|
||||
<a class="button warning expand" ng-really-message="Are you sure to delete this wallet from this computer?" 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>
|
||||
<p>
|
||||
<a class="expand small" ng-click="hideAdv=!hideAdv">
|
||||
<span ng-hide="!hideAdv">Show</span>
|
||||
<span ng-hide="hideAdv">Hide</span>
|
||||
advanced options
|
||||
<span translate ng-hide="!hideAdv">Show</span>
|
||||
<span translate ng-hide="hideAdv">Hide</span>
|
||||
<span translate>advanced options</span>
|
||||
</a>
|
||||
|
||||
|
||||
<div ng-hide="hideAdv">
|
||||
<div class="oh large-12 columns panel">
|
||||
<h3><i class="fi-minus-circle m10r"></i> Master Private Key </h3>
|
||||
<p class="large-8 columns text-gray"> Your master private key contains the information to sign <b>any</b> transaction on this wallet. Handle with care.
|
||||
<h3><i class="fi-minus-circle m10r"></i>
|
||||
<span translate>Master Private Key</span> </h3>
|
||||
<p translate class="large-8 columns text-gray">
|
||||
Your master private key contains the information to sign <b>any</b> transaction on this wallet. Handle with care.
|
||||
</p>
|
||||
<div class="large-4 columns">
|
||||
<a class="button primary expand" ng-click="hidePriv=!hidePriv">
|
||||
<span ng-hide="!hidePriv">Show</span>
|
||||
<span ng-hide="hidePriv">Hide</span>
|
||||
<span translate ng-hide="!hidePriv">Show</span>
|
||||
<span translate ng-hide="hidePriv">Hide</span>
|
||||
</a>
|
||||
</div>
|
||||
<textarea ng-hide="hidePriv" readonly>{{priv}}</textarea>
|
||||
</div>
|
||||
<div class="oh large-12 columns panel">
|
||||
<h3><i class="fi-minus-circle m10r"></i> Scan Wallet Addresses </h3>
|
||||
<p class="large-8 columns text-gray"> This will scan the blockchain looking for addresses derived from your wallet, in case you have funds in addresses not yet generated (e.g.: you restored an old backup). This will also trigger a syncronization of addresses to other connected peers.
|
||||
<h3><i class="fi-minus-circle m10r"></i> <span translate>Scan Wallet Addresses</span> </h3>
|
||||
<p translate class="large-8 columns text-gray">
|
||||
This will scan the blockchain looking for addresses derived from your wallet, in case you have funds in addresses not yet generated (e.g.: you restored an old backup). This will also trigger a syncronization of addresses to other connected peers.
|
||||
</p>
|
||||
<div class="large-4 columns">
|
||||
<a class="button primary expand" ng-click="updateIndexes()">
|
||||
<a translate class="button primary expand" ng-click="updateIndexes()">
|
||||
Scan
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh large-12 columns panel">
|
||||
<h3><i class="fi-minus-circle m10r"></i> Purge Pending Transaction Proposals </h3>
|
||||
<p class="large-8 columns text-gray"> Pending Transactions Proposals will be discarted. This need to be done on <b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced again.
|
||||
<h3><i class="fi-minus-circle m10r"></i> <span translate>Purge Pending Transaction Proposals</span> </h3>
|
||||
<p translate class="large-8 columns text-gray">
|
||||
Pending Transactions Proposals will be discarted. This need to be done on <b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced again.
|
||||
</p>
|
||||
<div class="large-4 columns">
|
||||
<a class="button warning expand" ng-click="purge()">
|
||||
<a translate class="button warning expand" ng-click="purge()">
|
||||
Purge
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oh large-12 columns panel">
|
||||
<h3><i class="fi-minus-circle m10r"></i> Purge ALL Transaction Proposals </h3>
|
||||
<p class="large-8 columns text-gray"> ALL Transactions Proposals will be discarted. This need to be done on <b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced again.
|
||||
<h3><i class="fi-minus-circle m10r"></i> <span translate>Purge ALL Transaction Proposals</span> </h3>
|
||||
<p translate class="large-8 columns text-gray">
|
||||
ALL Transactions Proposals will be discarted. This need to be done on <b>ALL<b> peers of a wallet, to prevent the old proposals to be resynced again.
|
||||
</p>
|
||||
<div class="large-4 columns">
|
||||
<a class="button warning expand" ng-click="purge(true)">
|
||||
<a translate class="button warning expand" ng-click="purge(true)">
|
||||
Purge All
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="open" ng-controller="OpenController">
|
||||
<div data-alert class="loading-screen" ng-show="loading && !failure">
|
||||
<i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
Authenticating and looking for peers...
|
||||
<span translate>Authenticating and looking for peers...</span>
|
||||
</div>
|
||||
<div class="row" ng-show="!loading">
|
||||
<div class="large-4 columns logo-setup">
|
||||
|
@ -10,14 +10,15 @@
|
|||
</div>
|
||||
<div class="large-8 columns line-dashed-setup-v">
|
||||
<div class="box-setup">
|
||||
<h1 class="text-white line-sidebar-b">Open Wallet</h1>
|
||||
<h1 translate class="text-white line-sidebar-b">Open Wallet</h1>
|
||||
<form name="openForm" ng-submit="open(openForm)" novalidate>
|
||||
<select class="form-control" ng-model="selectedWalletId" ng-options="w.id as w.show for w in wallets" required>
|
||||
</select>
|
||||
<input type="password" class="form-control" placeholder="Your password" name="openPassword" ng-model="openPassword" required>
|
||||
<input type="password" class="form-control"
|
||||
placeholder="{{'Your password'|translate}}" name="openPassword" ng-model="openPassword" required>
|
||||
<div class="text-right">
|
||||
<a href="#!/" class="back-button text-white m20r">« Back</a>
|
||||
<button type="submit" class="button white m0" ng-disabled="openForm.$invalid || loading" loading="Opening">Open</button>
|
||||
<a href="#!/" class="back-button text-white m20r">« <span translate>Back</span></a>
|
||||
<button translate type="submit" class="button white m0" ng-disabled="openForm.$invalid || loading" loading="Opening">Open</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
<div class="send" data-ng-controller="SendController" data-ng-init="loadTxs()">
|
||||
<div ng-show='$root.wallet.isReady()'>
|
||||
|
||||
<h1 ng-show="txs.length != 0">Send Proposals</h1>
|
||||
<h1 translate ng-show="txs.length != 0">Send Proposals</h1>
|
||||
<div class="last-transactions" ng-repeat="tx in txs | paged">
|
||||
<div ng-include="'views/includes/transaction.html'"></div>
|
||||
</div>
|
||||
<div ng-show="txs.length != 0" class="large-12 line-dashed" style="padding: 0;"></div>
|
||||
|
||||
<h1>{{title}}</h1>
|
||||
<h1>{{title|translate}}</h1>
|
||||
<div class="row collapse m0">
|
||||
<div class="large-6 columns">
|
||||
<form name="sendForm" ng-submit="submitForm(sendForm)" novalidate>
|
||||
<div class="row collapse">
|
||||
<div class="large-12 columns">
|
||||
<div class="row collapse">
|
||||
<label for="address">To address
|
||||
<small ng-hide="!sendForm.address.$pristine || address">required</small>
|
||||
<small class="is-valid" ng-show="!sendForm.address.$invalid && address">valid!</small>
|
||||
<small class="has-error" ng-show="sendForm.address.$invalid && address">
|
||||
<label for="address"><span translate>To address</span>
|
||||
<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="has-error" ng-show="sendForm.address.$invalid && address">
|
||||
not valid</small>
|
||||
</label>
|
||||
<div class="small-10 columns">
|
||||
<input type="text" id="address" name="address" ng-disabled="loading"
|
||||
placeholder="Send to" ng-model="address" ng-change="onChanged()" valid-address required>
|
||||
placeholder="{{'Send to'|translate}}" ng-model="address" ng-change="onChanged()" valid-address required>
|
||||
<small class="icon-input" ng-show="!sendForm.address.$invalid && address"><i class="fi-check"></i></small>
|
||||
<small class="icon-input" ng-show="sendForm.address.$invalid && address"><i class="fi-x"></i></small>
|
||||
</div>
|
||||
|
@ -30,7 +30,7 @@
|
|||
<a class="postfix button black" ng-click="openScanner()"><i class="fi-camera"></i></a>
|
||||
</div>
|
||||
<div class="small-2 columns" ng-show="showScanner">
|
||||
<a class="postfix button warning" ng-click="cancelScanner()">Cancel</a>
|
||||
<a translate class="postfix button warning" ng-click="cancelScanner()">Cancel</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="scanner" class="row" ng-if="showScanner">
|
||||
|
@ -56,27 +56,27 @@
|
|||
<div class="row collapse">
|
||||
<div class="large-5 medium-5 columns">
|
||||
<div class="row collapse">
|
||||
<label for="amount">Amount
|
||||
<small ng-hide="!sendForm.amount.$pristine">required</small>
|
||||
<small class="is-valid" ng-show="!sendForm.amount.$invalid && !sendForm.amount.$pristine">Valid</small>
|
||||
<small class="has-error" ng-show="sendForm.amount.$invalid && !sendForm.amount.$pristine && !notEnoughAmount">
|
||||
<label for="amount"><span translate>Amount</span>
|
||||
<small translate ng-hide="!sendForm.amount.$pristine">required</small>
|
||||
<small translate class="is-valid" ng-show="!sendForm.amount.$invalid && !sendForm.amount.$pristine">Valid</small>
|
||||
<small translate class="has-error" ng-show="sendForm.amount.$invalid && !sendForm.amount.$pristine && !notEnoughAmount">
|
||||
Not valid
|
||||
</small>
|
||||
<small ng-show="notEnoughAmount" class="has-error">Insufficient funds</small>
|
||||
<small translate ng-show="notEnoughAmount" class="has-error">Insufficient funds</small>
|
||||
</label>
|
||||
<div class="small-9 columns">
|
||||
<input type="number" id="amount"
|
||||
ng-disabled="loading || ($root.merchant && +$root.merchant.total > 0) || $root.merchantError"
|
||||
name="amount" placeholder="Amount" ng-model="amount"
|
||||
name="amount" placeholder="{{'Amount'|translate}}" ng-model="amount"
|
||||
min="{{minAmount}}" max="10000000000" enough-amount required
|
||||
autocomplete="off"
|
||||
>
|
||||
<small class="icon-input" ng-show="!sendForm.amount.$invalid && amount"><i class="fi-check"></i></small>
|
||||
<small class="icon-input" ng-show="sendForm.amount.$invalid && !sendForm.amount.$pristine && !notEnoughAmount"><i class="fi-x"></i></small>
|
||||
<a class="small input-note" title="Send all funds"
|
||||
<a class="small input-note" title="{{'Send all funds'|translate}}"
|
||||
ng-show="$root.availableBalance > 0 && (!$root.merchant || +$root.merchant.total === 0)"
|
||||
ng-click="topAmount(sendForm)">
|
||||
Use all funds ({{getAvailableAmount()}} {{$root.unitName}})
|
||||
<span translate>Use all funds</span> ({{getAvailableAmount()}} {{$root.unitName}})
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-3 columns">
|
||||
|
@ -86,11 +86,11 @@
|
|||
</div>
|
||||
<div class="large-6 medium-6 columns">
|
||||
<div class="row collapse">
|
||||
<label for="alternative">Amount in {{ alternativeName }} </label>
|
||||
<label for="alternative"><span translate>Amount in</span> {{ alternativeName }} </label>
|
||||
<div class="small-9 columns">
|
||||
<input type="number" id="alternative_amount"
|
||||
ng-disabled="loading || !isRateAvailable "
|
||||
name="alternative" placeholder="Amount" ng-model="alternative"
|
||||
name="alternative" placeholder="{{'Amount'|translate}}" ng-model="alternative"
|
||||
required
|
||||
autocomplete="off"
|
||||
>
|
||||
|
@ -105,13 +105,13 @@
|
|||
<div class="row collapse" ng-show="wallet.isShared()">
|
||||
<div class="large-12 columns">
|
||||
<div class="row collapse">
|
||||
<label for="comment">Note
|
||||
<small ng-hide="!sendForm.comment.$pristine">optional</small>
|
||||
<small class="has-error" ng-show="sendForm.comment.$invalid && !sendForm.comment.$pristine">too long!</small>
|
||||
<label for="comment"><span translate>Notes</span>
|
||||
<small translate ng-hide="!sendForm.comment.$pristine">optional</small>
|
||||
<small translate class="has-error" ng-show="sendForm.comment.$invalid && !sendForm.comment.$pristine">too long!</small>
|
||||
</label>
|
||||
<div class="large-12 columns">
|
||||
<textarea id="comment" ng-disabled="loading"
|
||||
name="comment" placeholder="Leave a private message to your copayers" ng-model="commentText" ng-maxlength="100"></textarea>
|
||||
name="comment" placeholder="{{'Leave a private message to your copayers'|translate}}" ng-model="commentText" ng-maxlength="100"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -119,7 +119,7 @@
|
|||
|
||||
<div class="row collapse">
|
||||
<div class="large-5 medium-6 small-12 columns">
|
||||
<button type="submit" class="button primary expand text-center" ng-disabled="sendForm.$invalid || loading" loading="Sending">
|
||||
<button translate type="submit" class="button primary expand text-center" ng-disabled="sendForm.$invalid || loading" loading="Sending">
|
||||
Send
|
||||
</button>
|
||||
</div>
|
||||
|
@ -142,7 +142,7 @@
|
|||
<br>
|
||||
</small>
|
||||
<small>
|
||||
Including fee of {{defaultFee|noFractionNumber}} {{$root.unitName}}
|
||||
<span translate>Including fee of</span> {{defaultFee|noFractionNumber}} {{$root.unitName}}
|
||||
</small>
|
||||
</p>
|
||||
<div ng-show="wallet.isShared()">
|
||||
|
@ -172,15 +172,15 @@
|
|||
</div>
|
||||
|
||||
<div class="large-12 columns line-dashed">
|
||||
<h2>Address Book</h2>
|
||||
<p class="text-gray" ng-hide="showAddressBook()">Empty. Create an alias for your addresses</p>
|
||||
<h2 translate>Address Book</h2>
|
||||
<p translate class="text-gray" ng-hide="showAddressBook()">Empty. Create an alias for your addresses</p>
|
||||
<table class="large-12 medium-12 small-12" ng-show="showAddressBook()">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Label</th>
|
||||
<th>Address</th>
|
||||
<th>Creator</th>
|
||||
<th>Date</th>
|
||||
<th translate>Label</th>
|
||||
<th translate>Address</th>
|
||||
<th translate>Creator</th>
|
||||
<th translate>Date</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -197,7 +197,7 @@
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<button 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 New Entry</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -6,50 +6,52 @@
|
|||
</div>
|
||||
<div class="large-8 columns line-dashed-setup-v">
|
||||
<div class="box-setup">
|
||||
<h1 class="text-white line-sidebar-b">{{title}}</h1>
|
||||
<h1 class="text-white line-sidebar-b">{{title|translate}}</h1>
|
||||
<form name="settingsForm">
|
||||
<fieldset>
|
||||
<legend>Bitcoin Network</legend>
|
||||
<legend translate>Language</legend>
|
||||
<select class="form-control" ng-model="selectedLanguage"
|
||||
ng-options="o.name for o in availableLanguages" required>
|
||||
</select>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend translate>Bitcoin Network</legend>
|
||||
<input id="network-name" type="checkbox" ng-model="networkName"
|
||||
ng-true-value="livenet" ng-false-value="testnet" class="form-control" ng-click="changeNetwork()"
|
||||
ng-disabled="forceNetwork"
|
||||
ng-checked="networkName == 'livenet' ? true : false">
|
||||
<label for="network-name">Livenet</label>
|
||||
<div ng-show="forceNetwork">
|
||||
Network has been fixed to
|
||||
<strong>{{networkName}}</strong> in this setup. See <a href="https://copay.io">copay.io</a>
|
||||
for options to use Copay on both livenet and testnet.
|
||||
<div translate ng-show="forceNetwork">
|
||||
Network has been fixed to <strong>{{networkName}}</strong> in this setup. See <a href="https://copay.io">copay.io</a> for options to use Copay on both livenet and testnet.
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Wallet Unit</legend>
|
||||
<legend translate>Wallet Unit</legend>
|
||||
<select class="form-control" ng-model="selectedUnit" ng-options="o.name for o in unitOpts" required>
|
||||
</select>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Alternative Currency</legend>
|
||||
<legend translate>Alternative Currency</legend>
|
||||
<select class="form-control" ng-model="selectedAlternative" ng-options="alternative.name for alternative in alternativeOpts" required>
|
||||
</select>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Insight API server</legend>
|
||||
<legend translate>Insight API server</legend>
|
||||
<label for="insight-host">Host</label>
|
||||
<input type="text" ng-model="insightHost" class="form-control" name="insight-host">
|
||||
<label for="insight-port">Port</label>
|
||||
<label for="insight-port" translate>Port</label>
|
||||
<input type="number" ng-model="insightPort" class="form-control" name="insight-port">
|
||||
<input id="insight-secure" type="checkbox" ng-model="insightSecure" class="form-control" ng-click="changeInsightSSL()">
|
||||
<label for="insight-secure">Use SSL</label>
|
||||
<label for="insight-secure" translate>Use SSL</label>
|
||||
|
||||
<p class="small">
|
||||
Insight API server is open-source software. You can run your own
|
||||
instance, check <a href="http://insight.is" target="_blank">Insight
|
||||
API Homepage</a></p>
|
||||
<p translate class="small">
|
||||
Insight API server is open-source software. You can run your own instance, check <a href="http://insight.is" target="_blank">Insight API Homepage</a></p>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<div class="text-right">
|
||||
<a class="back-button text-white m20r" href="#!/">« Back</a>
|
||||
<button type="submit" class="button primary m0 ng-binding" ng-disabled="setupForm.$invalid || loading" disabled="disabled" ng-click="save()">
|
||||
<a class="back-button text-white m20r" href="#!/">« <span translate>Back</span></a>
|
||||
<button translate type="submit" class="button primary m0 ng-binding" ng-disabled="setupForm.$invalid || loading" disabled="disabled" ng-click="save()">
|
||||
Save
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
<div class="transactions" data-ng-controller="TransactionsController" data-ng-init="update()">
|
||||
<div ng-show='$root.wallet.isReady()'>
|
||||
<h1 ng-show="wallet.isShared()"> Transaction Proposals <small>({{txs.length}})</small></h1>
|
||||
<h1 ng-show="wallet.isShared()">
|
||||
<span translate>Transaction Proposals</span> <small>({{txs.length}})</small></h1>
|
||||
<div class="large-12" ng-show="wallet.isShared()">
|
||||
|
||||
<div class="last-transactions" ng-repeat="tx in txs | paged">
|
||||
<div ng-include="'views/includes/transaction.html'"></div>
|
||||
</div>
|
||||
<p ng-show="txs.length == 0">No transactions proposals yet.</p>
|
||||
<p ng-show="txs.length == 0"><span translate>No transactions proposals yet.</span></p>
|
||||
<pagination ng-show="txs.length > txpItemsPerPage" total-items="txs.length" items-per-page="txpItemsPerPage" page="txpCurrentPage" on-select-page="show()" class="pagination-small primary"></pagination>
|
||||
</div>
|
||||
|
||||
<h1 ng-class="{'line-dashed': wallet.isShared()}">
|
||||
Last transactions
|
||||
<span translate>Last transactions</span>
|
||||
<small ng-hide="wallet.isShared() || !loading">
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
</small>
|
||||
|
@ -20,13 +21,13 @@
|
|||
<div class="large-12">
|
||||
<div class="m10b size-12" ng-hide="wallet.totalCopayers == 1">
|
||||
<a class="text-gray active" ng-click="toogleLast()"
|
||||
ng-disabled="loading" loading="Updating" ng-hide="lastShowed && !loading">[ Show ]</a>
|
||||
ng-disabled="loading" loading="Updating" ng-hide="lastShowed && !loading">[ <span translate>Show</span> ]</a>
|
||||
<a class="text-gray" ng-click="toogleLast()" ng-disabled="loading"
|
||||
loading="Updating" ng-show="lastShowed && !loading">[ Hide ]</a>
|
||||
loading="Updating" ng-show="lastShowed && !loading">[ <span translate>Hide</span> ]</a>
|
||||
</div>
|
||||
|
||||
<div class="btransactions" ng-if="lastShowed">
|
||||
<div ng-if="!blockchain_txs[0].txid && !loading">
|
||||
<div translate ng-if="!blockchain_txs[0].txid && !loading">
|
||||
No transactions yet.
|
||||
</div>
|
||||
<div class="last-transactions" ng-repeat="btx in blockchain_txs | orderBy: 'time':true">
|
||||
|
@ -39,11 +40,11 @@
|
|||
</div>
|
||||
<div class="large-4 medium-5 small-8 columns text-right">
|
||||
<div data-ng-show="btx.firstSeenTs">
|
||||
first seen at
|
||||
<span translate>first seen at</span>
|
||||
<time>{{btx.firstSeenTs * 1000 | amCalendar}}</time>
|
||||
</div>
|
||||
<div data-ng-show="btx.time && !btx.firstSeenTs">
|
||||
mined at
|
||||
<span translate>mined at</span>
|
||||
<time>{{btx.time * 1000 | amCalendar}}</time>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -74,11 +75,11 @@
|
|||
</div>
|
||||
<div class="last-transactions-footer">
|
||||
<div class="large-6 medium-6 small-6 columns">
|
||||
<p class="size-12"> Fees: {{btx.fees | noFractionNumber}} {{$root.unitName}}</p>
|
||||
<p class="size-12">Confirmations: {{btx.confirmations || 0}}</p>
|
||||
<p class="size-12"><span translate>Fee</span>: {{btx.fees | noFractionNumber}} {{$root.unitName}}</p>
|
||||
<p class="size-12"><span translate>Confirmations</span>: {{btx.confirmations || 0}}</p>
|
||||
</div>
|
||||
<div class="large-6 medium-6 small-6 columns text-right">
|
||||
<p class="label size-14">Total: {{btx.valueOut| noFractionNumber}} {{$root.unitName}}</p>
|
||||
<p class="label size-14"><span translate>Total</span>: {{btx.valueOut| noFractionNumber}} {{$root.unitName}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<img src="img/logo-negative-beta.svg" alt="Copay" width="146" height="59">
|
||||
<div class="text-white" ng-include="'views/includes/version.html'"></div>
|
||||
</div>
|
||||
<h1 class="text-center text-white">Browser unsupported</h1>
|
||||
<h1 translate class="text-center text-white">Browser unsupported</h1>
|
||||
<h3 class="text-center text-white">
|
||||
Copay uses WebStorage to save wallet data,
|
||||
but your browser does not support it.
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
<div data-alert class="loading-screen">
|
||||
<i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
Preparing payment...
|
||||
<span translate>Preparing payment...</span>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
<img src="img/logo-negative-beta.svg" alt="Copay" width="146" height="59">
|
||||
<div class="text-white" ng-include="'views/includes/version.html'"></div>
|
||||
</div>
|
||||
<h1 class="text-center text-warning">Warning!</h1>
|
||||
<h1 translate class="text-center text-warning">Warning!</h1>
|
||||
<h3 class="text-center text-white">
|
||||
This wallet appears to be currently open.
|
||||
<span translate>This wallet appears to be currently open.</span>
|
||||
<br>
|
||||
Opening the wallet in multiple browser tabs could lead to unexpected results
|
||||
<span translate>Opening the wallet in multiple browser tabs could lead to unexpected results</span>
|
||||
</h3>
|
||||
<div class="text-center m30v large-12 columns">
|
||||
<div class="row">
|
||||
<div class="large-12 columns medium-12 small-12 text-center">
|
||||
<a href class="button sucess" ng-click="signout()">Go back</a>
|
||||
<a href class="button sucess" ng-click="signout()">« <span translate>Back</span></a>
|
||||
<br>
|
||||
<br>
|
||||
<a href ng-click="ignoreLock()">Continue anyways</a>
|
||||
<a translate href ng-click="ignoreLock()">Continue anyways</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue