added translate tags. Spanish partial support. Need revision

This commit is contained in:
Gustavo Maximiliano Cortez 2014-09-05 16:58:28 -03:00
parent 302e75228d
commit 2ea21c42f3
24 changed files with 930 additions and 210 deletions

686
po/es.po Normal file
View File

@ -0,0 +1,686 @@
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/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/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/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
#, fuzzy
msgid "No transactions proposals yet."
msgstr "Aún no hay transacciones."
#: 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
#, fuzzy
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/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 "&laquo; Back"
#~ msgstr "&laquo; Volver"
#~ msgid "Fees"
#~ msgstr "Tasas"
#~ msgid ""
#~ "Wallet\n"
#~ " name"
#~ msgstr ""
#~ "Nombre del\n"
#~ " monedero"

View File

@ -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>
@ -17,7 +17,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>
@ -33,8 +33,8 @@
</ul>
<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>

View File

@ -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>

View File

@ -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="#!/">&laquo; Back</a>
<a ng-show="!isSetupWalletPage" class="back-button m20r"
href="#!/">&laquo; <span translate>Back</span></a>
<a ng-show="isSetupWalletPage" class="back-button m20r"
ng-click="setupWallet()">&laquo; Back</a>
<button ng-show="isSetupWalletPage" type="submit" class="button secondary m0" ng-disabled="setupForm.$invalid || loading">
ng-click="setupWallet()">&laquo; <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>

View File

@ -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="#!/">&laquo; <span translate>Back</span></a></p>
</div>

View File

@ -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>

View File

@ -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="#!/">&laquo; Back</a>
<button type="submit" class="button primary m0" ng-disabled="importForm.$invalid" loading="Importing">
<a class="back-button text-white m20r" href="#!/">&laquo; <span translate>Back</span></a>
<button translate type="submit" class="button primary m0" ng-disabled="importForm.$invalid" loading="Importing">
Import backup
</button>
</div>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -45,7 +45,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>

View File

@ -47,7 +47,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>
@ -55,7 +55,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>

View File

@ -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>

View File

@ -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">&nbsp;</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">&laquo; 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">&laquo; <span translate>Back</span></a>
<button translate type="submit" class="button primary m0" ng-disabled="joinForm.$invalid || loading" loading="Joining">Join</button>
</div>

View File

@ -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()">&#215;</a>

View File

@ -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">&nbsp;</i> Open in external application
<i class="fi-link">&nbsp;</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">&nbsp;</i> Copy to clipboard
<i class="fi-link">&nbsp;</i> <span translate>Copy to clipboard</span>
</button>
</div>
</div>

View File

@ -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>

View File

@ -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">&laquo; 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">&laquo; <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>

View File

@ -1,27 +1,27 @@
<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="large-6 columns">
<form name="sendForm" ng-submit="submitForm(sendForm)" novalidate>
<div class="row">
<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>
@ -29,7 +29,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">
@ -55,27 +55,27 @@
<div class="row">
<div class="large-6 medium-6 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">
@ -85,11 +85,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"
>
@ -104,13 +104,13 @@
<div class="row" 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>
@ -118,7 +118,7 @@
<div class="row">
<div class="large-5 medium-3 small-4 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>
@ -140,7 +140,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()">
@ -170,15 +170,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>&nbsp;</th>
</tr>
</thead>
@ -195,7 +195,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>

View File

@ -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="#!/">&laquo; 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="#!/">&laquo; <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>

View File

@ -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 translate ng-show="txs.length == 0">No transactions proposals yet.</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-9 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>
@ -70,9 +71,12 @@
</div>
</div>
<div class="last-transactions-footer">
<div class="large-4 medium-4 small-4 columns">Fees: {{btx.fees | noFractionNumber}} {{$root.unitName}}</div>
<div class="large-4 medium-4 small-4 columns text-center">Confirmations: {{btx.confirmations || 0}}</div>
<div class="large-4 medium-4 small-4 columns text-right">Total: {{btx.valueOut| noFractionNumber}} {{$root.unitName}}</div>
<div class="large-4 medium-4 small-4 columns">
<span translate>Fee</span>: {{btx.fees | noFractionNumber}} {{$root.unitName}}</div>
<div class="large-4 medium-4 small-4 columns text-center">
<span translate>Confirmations</span>: {{btx.confirmations || 0}}</div>
<div class="large-4 medium-4 small-4 columns text-right">
<span translate>Total</span>: {{btx.valueOut| noFractionNumber}} {{$root.unitName}}</div>
</div>
</div>
</div>

View File

@ -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.

View File

@ -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>

View File

@ -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()">&laquo; <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>