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 class="addresses" ng-controller="AddressesController">
<div ng-show='$root.wallet.isReady()'> <div ng-show='$root.wallet.isReady()'>
<h1> <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> <span class="button primary small side-bar" ng-click="newAddr()" ng-disabled="loading" loading="Creating"><i class="fi-plus"></i></span>
</h1> </h1>
@ -17,7 +17,7 @@
<contact address="{{addr.address}}" tooltip-popup-delay="500" tooltip tooltip-placement="right"/> <contact address="{{addr.address}}" tooltip-popup-delay="500" tooltip tooltip-placement="right"/>
</span> </span>
<span class="btn-copy" clip-copy="addr.address"> </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>
</div> </div>
@ -33,8 +33,8 @@
</ul> </ul>
<a class="secondary radius" ng-click="showAll=!showAll" ng-show="(addresses|removeEmpty).length != (addresses|removeEmpty|limitAddress).length"> <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 translate ng-if="!showAll">Show all</span>
<span ng-if="showAll">Show less</span> <span translate ng-if="showAll">Show less</span>
</a> </a>
</div> </div>
</div> </div>

View File

@ -9,8 +9,8 @@
<div class="box-setup oh"> <div class="box-setup oh">
<div ng-if="!$root.wallet.publicKeyRing.isComplete()"> <div ng-if="!$root.wallet.publicKeyRing.isComplete()">
<img ng-if="$root.fromSetup && !isMobile" class="right m15t" src="img/step-3.svg" alt="Step 3"> <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> <h1 translate class="text-primary line-sidebar-b">Waiting copayers</h1>
<h3>Share this secret with your other copayers</h3> <h3 translate>Share this secret with your other copayers</h3>
<div class="panel"> <div class="panel">
<qrcode size="350" data="{{$root.wallet.getSecret()}}"></qrcode> <qrcode size="350" data="{{$root.wallet.getSecret()}}"></qrcode>
<div class="secret text-gray size-14"> <div class="secret text-gray size-14">
@ -20,30 +20,31 @@
<div style="clear:both;"></div> <div style="clear:both;"></div>
</div> </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="row" ng-show="$root.wallet.publicKeyRing.isComplete()">
<div class="large-4 small-6 columns text-left"> <div class="large-4 small-6 columns text-left">
<h3>Download Backup</h3> <h3 translate>Download Backup</h3>
</div> </div>
<div class="large-8 small-6 columns text-right"> <div class="large-8 small-6 columns text-right">
<h3 class="ellipsis"> <h3 class="ellipsis">
<small class="text-gray"> <small class="text-gray">
<b>{{$root.wallet.getName()}}</b> : <b>{{$root.wallet.getName()}}</b> :
{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}} {{$root.wallet.requiredCopayers}}-{{'of'|translate}}-{{$root.wallet.totalCopayers}}
</small> </small>
</h3> </h3>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="large-10 small-9 columns text-left"> <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()}} Waiting Copayers for {{$root.wallet.getName()}}
</h4> </h4>
</div> </div>
<div class="large-2 small-3 columns text-right"> <div class="large-2 small-3 columns text-right">
<h4 ng-show="$root.wallet && !$root.wallet.publicKeyRing.isComplete()"> <h4 ng-show="$root.wallet && !$root.wallet.publicKeyRing.isComplete()">
<small class="text-gray"> <small class="text-gray">
{{$root.wallet.requiredCopayers}}-of-{{$root.wallet.totalCopayers}} wallet {{$root.wallet.requiredCopayers}}-{{'of'|translate}}-{{$root.wallet.totalCopayers}}
</small> </small>
</h4> </h4>
</div> </div>
@ -61,53 +62,55 @@
width="70"> width="70">
<p class="size-12 text-white text-light m0"> <p class="size-12 text-white text-light m0">
<i class="fi-loop icon-rotate spinner"></i> <i class="fi-loop icon-rotate spinner"></i>
Waiting... <span translate>Waiting...</span>
</p> </p>
</div> </div>
</div> </div>
<div ng-show="$root.wallet.publicKeyRing.remainingCopayers() > 1"> <div ng-show="$root.wallet.publicKeyRing.remainingCopayers() > 1">
<div class="line-sidebar-b" ng-if="$root.wallet && $root.wallet.publicKeyRing.isComplete()"></div> <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()"> <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 <i class="text-white fi-loop icon-rotate spinner"></i>
copayers to make a Backup <span translate>Waiting for other copayers to make a Backup</span>
</div> </div>
</div> </div>
</div> </div>
<div class="text-right"> <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 ng-really-message="Are you sure to delete this wallet from this
computer?">Delete wallet</a> computer?">Delete wallet</a>
<span class="text-gray">|</span> <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> ng-show="!$root.wallet.publicKeyRing.isComplete()">Download seed backup</a>
<button class="button primary m0" <button class="button primary m0"
ng-click="backup()" ng-click="backup()"
ng-show="!$root.wallet.publicKeyRing.isBackupReady()" ng-show="!$root.wallet.publicKeyRing.isBackupReady()"
ng-disabled="!$root.wallet.publicKeyRing.isComplete()"> ng-disabled="!$root.wallet.publicKeyRing.isComplete()">
<span ng-show="$root.wallet.publicKeyRing.isComplete()" > <span translate ng-show="$root.wallet.publicKeyRing.isComplete()" >
Backup wallet Backup wallet
</span> </span>
<span ng-show="!$root.wallet.publicKeyRing.isComplete()" > <span ng-show="!$root.wallet.publicKeyRing.isComplete()" >
<span ng-show="$root.wallet.publicKeyRing.remainingCopayers() > 1"> <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>
<span ng-show="$root.wallet.publicKeyRing.remainingCopayers() == 1"> <span translate ng-show="$root.wallet.publicKeyRing.remainingCopayers() == 1">
One person has One person has
</span> </span>
yet to join. <span translate>yet to join.</span>
</span> </span>
</button> </button>
<button class="button primary" <button class="button primary"
disabled="disabled" disabled="disabled"
ng-show="$root.wallet.publicKeyRing.isBackupReady()"> ng-show="$root.wallet.publicKeyRing.isBackupReady()">
<span ng-show="$root.wallet.publicKeyRing.remainingBackups() > 1"> <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>
<span ng-show="$root.wallet.publicKeyRing.remainingBackups() == 1"> <span translate ng-show="$root.wallet.publicKeyRing.remainingBackups() == 1">
One person has One person has
</span> </span>
yet to backup the wallet. <span translate>yet to backup the wallet.</span>
</button> </button>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
<div ng-controller="CreateController"> <div ng-controller="CreateController">
<div data-alert class="loading-screen" ng-show="loading"> <div data-alert class="loading-screen" ng-show="loading">
<i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i> <i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i>
Creating wallet... <span translate>Creating wallet...</span>
</div> </div>
<div class="setup" ng-show="!loading"> <div class="setup" ng-show="!loading">
<form name="setupForm" ng-submit="create(setupForm)" novalidate> <form name="setupForm" ng-submit="create(setupForm)" novalidate>
@ -14,19 +14,21 @@
<div class="box-setup oh"> <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-1.svg" alt="Step 1">
<img ng-if="isSetupWalletPage && !isMobile" class="right m15t" src="img/step-2.svg" alt="Step 2"> <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> <h1 translate class="text-secondary line-sidebar-b">Create new wallet</h1>
<label ng-show="!isSetupWalletPage">Wallet name <label ng-show="!isSetupWalletPage"><span translate>Wallet name</span>
<input type="text" placeholder="Family vacation funds" class="form-control" ng-model="walletName"> <input type="text" placeholder="{{'Family vacation funds'|translate}}" class="form-control" ng-model="walletName">
</label> </label>
<div class="row" ng-show="isSetupWalletPage"> <div class="row" ng-show="isSetupWalletPage">
<div ng-if="totalCopayers > 1"> <div ng-if="totalCopayers > 1">
<label for="Name">Your name</label> <label translate for="Name">Your name</label>
<input id="Name" type="text" placeholder="Name" class="form-control" ng-model="$parent.myNickname"> <input id="Name" type="text" placeholder="{{'Name'|translate}}" class="form-control" ng-model="$parent.myNickname">
</div> </div>
<div> <div>
<label for="walletPassword">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> </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" ng-model="$parent.walletPassword"
name="walletPassword" name="walletPassword"
check-strength="passwordStrength" check-strength="passwordStrength"
@ -38,7 +40,7 @@
tooltip-placement="top"> tooltip-placement="top">
<input type="password" <input type="password"
placeholder="Repeat password" placeholder="{{'Repeat password'|translate}}"
name="walletPasswordConfirm" name="walletPasswordConfirm"
ng-model="walletPasswordConfirm" ng-model="walletPasswordConfirm"
match="walletPassword" match="walletPassword"
@ -46,14 +48,14 @@
</div> </div>
<a class="expand small" ng-click="hideAdv=!hideAdv"> <a class="expand small" ng-click="hideAdv=!hideAdv">
<span ng-hide="!hideAdv">Show</span> <span translate ng-hide="!hideAdv">Show</span>
<span ng-hide="hideAdv">Hide</span> <span translate ng-hide="hideAdv">Hide</span>
advanced options <span translate>advanced options</span>
</a> </a>
<div ng-hide="hideAdv"> <div ng-hide="hideAdv">
<p> <p>
<input type="text" <input type="text"
placeholder="Private Key (Hex)" placeholder="{{'Private Key (Hex)'|translate}}"
name="private" name="private"
ng-model="private" ng-model="private"
> >
@ -62,13 +64,13 @@
</div> </div>
<div class="row" ng-show="!isSetupWalletPage"> <div class="row" ng-show="!isSetupWalletPage">
<div class="large-6 medium-6 columns"> <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 ng-model="totalCopayers" ng-options="totalCopayers as totalCopayers for totalCopayers in TCValues">
</select> </select>
</label> </label>
</div> </div>
<div class="large-6 medium-6 columns"> <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 ng-model="requiredCopayers" ng-options="requiredCopayers as requiredCopayers for requiredCopayers in RCValues" ng-disabled="totalCopayers == 1">
</select> </select>
</label> </label>
@ -83,15 +85,16 @@
width="50px"> width="50px">
</div> </div>
</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"> <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" <a ng-show="isSetupWalletPage" class="back-button m20r"
ng-click="setupWallet()">&laquo; Back</a> ng-click="setupWallet()">&laquo; <span translate>Back</span></a>
<button ng-show="isSetupWalletPage" type="submit" class="button secondary m0" ng-disabled="setupForm.$invalid || loading"> <button translate ng-show="isSetupWalletPage" type="submit" class="button secondary m0" ng-disabled="setupForm.$invalid || loading">
Create {{requiredCopayers}}-of-{{totalCopayers}} wallet Create {{requiredCopayers}}-of-{{totalCopayers}} wallet
</button> </button>
<a class="button secondary m0" ng-show="!isSetupWalletPage" <a translate class="button secondary m0" ng-show="!isSetupWalletPage"
ng-click="setupWallet()">Next</a> ng-click="setupWallet()">Next</a>
</div> </div>
</div> </div>

View File

@ -3,7 +3,7 @@
<img src="img/logo-negative-beta.svg" alt="Copay"> <img src="img/logo-negative-beta.svg" alt="Copay">
</div> </div>
<h1 class="text-center text-white">404</h1> <h1 class="text-center text-white">404</h1>
<h3 class="text-center text-white">Page not found</h3> <h3 translate class="text-center text-white">Page not found</h3>
<p class="text-center"><a href="#!/">go back...</a></p> <p class="text-center"><a href="#!/">&laquo; <span translate>Back</span></a></p>
</div> </div>

View File

@ -6,21 +6,23 @@
</div> </div>
<div class="large-8 columns line-dashed-setup-v"> <div class="large-8 columns line-dashed-setup-v">
<div class="button-setup" ng-show="hasWallets"> <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>
<div class="button-setup" ng-show="!hasWallets"> <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>
<div class="button-setup"> <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>
<div class="button-setup" ng-show="hasWallets"> <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>
<div class="footer-setup"> <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="right size-12 text-gray" href="#!/settings"><i class="m10r
<a class="left size-12 text-gray" href="#!/import"><i class="m10r size-14 fi-upload"></i>Import a backup</a> 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> </div>
</div> </div>

View File

@ -12,30 +12,32 @@
<div class="large-8 columns line-dashed-setup-v"> <div class="large-8 columns line-dashed-setup-v">
<div class="box-setup"> <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> <form name="importForm" ng-submit="import(importForm)" novalidate>
<fieldset> <fieldset>
<legend for="backupFile" class="m10b"> Choose backup file from your computer <i class="fi-laptop"></i></legend> <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" name="backupFile" ng-model="backupFile" ng-file-select> <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> <label for="password"><span translate>Password</span> <small translate>Required</small></label>
<input type="password" class="form-control" placeholder="Your wallet password" name="password" ng-model="password" required> <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"> <a class="expand small" ng-click="hideAdv=!hideAdv">
<span ng-hide="!hideAdv">Show</span> <span translate ng-hide="!hideAdv">Show</span>
<span ng-hide="hideAdv">Hide</span> <span translate ng-hide="hideAdv">Hide</span>
advanced options <span translate>advanced options</span>
</a> </a>
<div ng-hide="hideAdv"> <div ng-hide="hideAdv">
<label> <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>
<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> </label>
</div> </div>
@ -43,13 +45,13 @@
</fieldset> </fieldset>
<div data-alert ng-show="skipFields"> <div data-alert ng-show="skipFields">
<i class="size-18 fi-alert"></i> <i class="size-18 fi-alert"></i>
Skipping fields: {{skipFields}} <span translate>Skipping fields: {{skipFields}}</span>
</div> </div>
<div class="text-right"> <div class="text-right">
<a class="back-button text-white m20r" href="#!/">&laquo; Back</a> <a class="back-button text-white m20r" href="#!/">&laquo; <span translate>Back</span></a>
<button type="submit" class="button primary m0" ng-disabled="importForm.$invalid" loading="Importing"> <button translate type="submit" class="button primary m0" ng-disabled="importForm.$invalid" loading="Importing">
Import backup Import backup
</button> </button>
</div> </div>

View File

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

View File

@ -8,8 +8,8 @@
<img ng-src="{{noti.image}}" ng-switch-default /> <img ng-src="{{noti.image}}" ng-switch-default />
</div> </div>
<div class="dr-notification-content"> <div class="dr-notification-content">
<h3 class="dr-notification-title">{{noti.title}}</h3> <h3 class="dr-notification-title">{{noti.title|translate}}</h3>
<div class="dr-notification-text">{{noti.content}}</div> <div class="dr-notification-text">{{noti.content|translate}}</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,9 +1,9 @@
<div ng-controller="CopayersController" class="copayers"> <div ng-controller="CopayersController" class="copayers">
<h3> <h3>
<i class="fi-torsos-all size-21 m20r"></i> <i class="fi-torsos-all size-21 m20r"></i>
Copayers <span translate>Copayers</span>
<small class="m15l"> <small class="m15l">
{{$root.wallet.requiredCopayers}} of {{$root.wallet.totalCopayers}} {{$root.wallet.requiredCopayers}} <span translate>of</span> {{$root.wallet.totalCopayers}}
</small> </small>
</h3> </h3>
@ -15,7 +15,9 @@
width="30"> width="30">
<div class="ellipsis" tooltip-placement="top" tooltip="{{copayer.nick}}"> <div class="ellipsis" tooltip-placement="top" tooltip="{{copayer.nick}}">
<small class="text-gray" ng-show="copayer.index == 0">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> <small class="text-gray" ng-show="copayer.index > 0">{{copayer.nick}}</small>
</div> </div>
</div> </div>

View File

@ -45,7 +45,7 @@
</li> </li>
<li> <li>
<a href="#" class="db p20h" title="Close" <a href="#" class="db p20h" title="Close"
ng-click="signout()"><i class="size-24 m20r fi-power"></i> Close</a> ng-click="signout()"><i class="size-24 m20r fi-power"></i> <span translate>Close</span></a>
</li> </li>
</ul> </ul>

View File

@ -47,7 +47,7 @@
<ul class="side-nav"> <ul class="side-nav">
<li data-ng-repeat="item in menu" ui-route="{{item.link}}" class="nav-item" data-ng-class="{active: isActive(item)}"> <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"> <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="right">
<span class="label alert" ng-if="item.link=='send' && $root.pendingTxCount > 0">{{$root.pendingTxCount}}</span> <span class="label alert" ng-if="item.link=='send' && $root.pendingTxCount > 0">{{$root.pendingTxCount}}</span>
</span> </span>
@ -55,7 +55,7 @@
</li> </li>
<li> <li>
<a href="#!/" class="db p20h" title="Close" <a href="#!/" class="db p20h" title="Close"
ng-click="signout()"><i class="size-21 m20r fi-power"></i> Close</a> ng-click="signout()"><i class="size-21 m20r fi-power"></i> <span translate>Close</span></a>
</li> </li>
</ul> </ul>

View File

@ -72,51 +72,51 @@
<div ng-show="!tx.signedByUs && !tx.rejectedByUs && !tx.finallyRejected && tx.missingSignatures"> <div ng-show="!tx.signedByUs && !tx.rejectedByUs && !tx.finallyRejected && tx.missingSignatures">
<div class="hide-for-small-only"> <div class="hide-for-small-only">
<button class="primary m15r" ng-click="sign(tx.ntxid)" ng-disabled="loading" loading="Signing"> <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>
<button class="warning" ng-click="reject(tx.ntxid)" ng-disabled="loading" loading="Rejecting"> <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> </button>
</div> </div>
<div class="show-for-small-only row m10b"> <div class="show-for-small-only row m10b">
<button class="primary small-5 columns" ng-click="sign(tx.ntxid)" ng-disabled="loading" loading="Signing"> <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>
<button class="warning small-5 columns" ng-click="reject(tx.ntxid)" ng-disabled="loading" loading="Rejecting"> <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> </button>
</div> </div>
</div> </div>
<div ng-show="!tx.missingSignatures && !tx.sentTs"> <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> <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> </button>
</div> </div>
</div> </div>
<div class="large-7 medium-5 small-12 columns text-right"> <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 Transaction finally rejected
</div> </div>
<div ng-show="!tx.missingSignatures && tx.sentTs"> <div ng-show="!tx.missingSignatures && tx.sentTs">
<div class="is-valid m10b"> <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>
<div class="ellipsis small"> <div class="ellipsis small">
Transaction ID: <span translate>Transaction ID</span>:
<a href="http://{{getShortNetworkName()}}.insight.is/tx/{{tx.sentTxid}}" target="_blank"> <a href="http://{{getShortNetworkName()}}.insight.is/tx/{{tx.sentTxid}}" target="_blank">
{{tx.sentTxid}} {{tx.sentTxid}}
</a> </a>
</div> </div>
</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 One signature missing
</p> </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> {{tx.missingSignatures}} signatures missing</p>
<div class="ellipsis small text-gray"> <div class="ellipsis small text-gray">
<strong>Fee:</strong> {{tx.fee|noFractionNumber}} {{$root.unitName}} <strong translate>Fee</strong>: {{tx.fee|noFractionNumber}} {{$root.unitName}}
<strong>Proposal ID:</strong> {{tx.ntxid}} <strong translate>Proposal ID</strong>: {{tx.ntxid}}
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
<div class="join" ng-controller="JoinController"> <div class="join" ng-controller="JoinController">
<div data-alert class="loading-screen" ng-show="loading && !failure"> <div data-alert class="loading-screen" ng-show="loading && !failure">
<i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i> <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>
<div class="row" ng-show="!loading"> <div class="row" ng-show="!loading">
<div class="large-4 columns logo-setup"> <div class="large-4 columns logo-setup">
@ -10,20 +10,21 @@
</div> </div>
<div class="large-8 columns line-dashed-setup-v"> <div class="large-8 columns line-dashed-setup-v">
<div class="box-setup"> <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> <form name="joinForm" ng-submit="join(joinForm)" novalidate>
<label for="connectionId"> Wallet Setting <label for="connectionId"><span translate>Wallet Secret</span>
<small class="has-error" ng-show="joinForm.connectionId.$invalid <small translate class="has-error" ng-show="joinForm.connectionId.$invalid
&& !joinForm.connectionId.$pristine">Wallet Secret is not valid!</small> && !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 ng-show="joinForm.connectionId.$pristine" class="has-tip
text-gray" tooltip="Paste wallet secret here" >Required</small> text-gray" tooltip="Paste wallet secret here" >Required</small>
</label> </label>
<div class="row collapse"> <div class="row collapse">
<div class="large-10 medium-10 small-10 columns"> <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>
<div class="small-2 columns" ng-hide="showScanner"> <div class="small-2 columns" ng-hide="showScanner">
<a class="postfix button primary" ng-click="openScanner()"><i class="fi-camera">&nbsp;</i></a> <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"> <div id="file-input-wrapper" class="btn btn-primary">
<span class="pull-left text-centered"> <span class="pull-left text-centered">
<i class="glyphicon glyphicon-refresh icon-rotate"></i> <i class="glyphicon glyphicon-refresh icon-rotate"></i>
Get QR code <span translate>Get QR code</span>
</span> </span>
<input id="qrcode-camera" type="file" capture="camera" accept="image/*"> <input id="qrcode-camera" type="file" capture="camera" accept="image/*">
</div> </div>
@ -51,10 +52,11 @@
</div> </div>
</div> </div>
<label for="joinPassword"> User info </label> <label translate for="joinPassword">User information</label>
<input id="joinPassword" type="text" class="form-control" placeholder="Your name (optional)" name="nickname" ng-model="nickname"> <input id="joinPassword" type="text" class="form-control"
placeholder="{{'Your name (optional)'|translate}}" name="nickname" ng-model="nickname">
<input type="password" class="form-control" <input type="password" class="form-control"
placeholder="Choose your password" name="joinPassword" placeholder="{{'Choose your password'|translate}}" name="joinPassword"
ng-model="$parent.joinPassword" ng-model="$parent.joinPassword"
check-strength="passwordStrength" check-strength="passwordStrength"
tooltip-html-unsafe="Password strength: tooltip-html-unsafe="Password strength:
@ -63,27 +65,27 @@
tooltip-placement="top" required> tooltip-placement="top" required>
<input type="password" <input type="password"
placeholder="Repeat password" placeholder="{{'Repeat password'|translate}}"
name="joinPasswordConfirm" name="joinPasswordConfirm"
ng-model="joinPasswordConfirm" ng-model="joinPasswordConfirm"
match="joinPassword" required> match="joinPassword" required>
<a class="expand small" ng-click="hideAdv=!hideAdv"> <a class="expand small" ng-click="hideAdv=!hideAdv">
<span ng-hide="!hideAdv">Show</span> <span translate ng-hide="!hideAdv">Show</span>
<span ng-hide="hideAdv">Hide</span> <span translate ng-hide="hideAdv">Hide</span>
advanced options <span translate>advanced options</span>
</a> </a>
<div ng-hide="hideAdv"> <div ng-hide="hideAdv">
<p> <p>
<input type="text" <input type="text"
placeholder="Private Key (Hex)" placeholder="{{'Private Key (Hex)'|translate}}"
name="private" name="private"
ng-model="$parent.private" ng-model="$parent.private"
> >
</div> </div>
<div class="text-right"> <div class="text-right">
<a href="#!/" class="back-button text-primary m20r">&laquo; Back</a> <a href="#!/" class="back-button text-primary m20r">&laquo; <span translate>Back</span></a>
<button type="submit" class="button primary m0" ng-disabled="joinForm.$invalid || loading" loading="Joining">Join</button> <button translate type="submit" class="button primary m0" ng-disabled="joinForm.$invalid || loading" loading="Joining">Join</button>
</div> </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> <form name="addressBookForm" ng-submit="submitAddressBook(addressBookForm)" novalidate>
<label for="newaddress">Address <label for="newaddress"><span translate>Address</span>
<small ng-hide="!addressBookForm.newaddress.$pristine || newaddress">required</small> <small translate ng-hide="!addressBookForm.newaddress.$pristine || newaddress">required</small>
<small class="is-valid" ng-show="!addressBookForm.newaddress.$invalid && newaddress">Valid</small> <small translate class="is-valid" ng-show="!addressBookForm.newaddress.$invalid && newaddress">Valid</small>
<small class="has-error" ng-show="addressBookForm.newaddress.$invalid && newaddress"> <small translate class="has-error" ng-show="addressBookForm.newaddress.$invalid && newaddress">
Not valid</small> Not valid</small>
<input type="text" id="newaddress" name="newaddress" ng-disabled="loading" <input type="text" id="newaddress" name="newaddress" ng-disabled="loading"
placeholder="Address" ng-model="newaddress" valid-address required> placeholder="{{'Address'|translate}}" ng-model="newaddress" valid-address required>
</label> </label>
<label for="newlabel">Label <label for="newlabel"><span translate>Label</span>
<small ng-hide="!addressBookForm.newlabel.$pristine || newlabel">required</small> <small translate ng-hide="!addressBookForm.newlabel.$pristine || newlabel">required</small>
<input type="text" id="newlabel" name="newlabel" ng-disabled="loading" <input type="text" id="newlabel" name="newlabel" ng-disabled="loading"
placeholder="Label" ng-model="newlabel" required> placeholder="{{'Label'|translate}}" ng-model="newlabel" required>
</label> </label>
<a class="button warning small default" ng-click="cancel()">Cancel</a> <a translate class="button warning small default" ng-click="cancel()">Cancel</a>
<input type="submit" class="button small primary right" ng-disabled="addressBookForm.$invalid || loading" value="Add Address"> <input type="submit" class="button small primary right"
ng-disabled="addressBookForm.$invalid || loading"
value="{{'Add Address'|translate}}">
</form> </form>
<a class="close-reveal-modal" ng-click="cancel()">&#215;</a> <a class="close-reveal-modal" ng-click="cancel()">&#215;</a>

View File

@ -10,10 +10,10 @@
{{address.balance || 0|noFractionNumber}} {{$root.unitName}} {{address.balance || 0|noFractionNumber}} {{$root.unitName}}
</p> </p>
<button class="m15t button secondary" open-external address="{{address.address}}"> <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><br><br>
<button class="m15t button secondary" ng-show="isMobile" ng-click="mobileCopy(address.address)"> <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> </button>
</div> </div>
</div> </div>

View File

@ -1,65 +1,76 @@
<div class="backup" ng-controller="MoreController"> <div class="backup" ng-controller="MoreController">
<h1>Settings </h1> <h1 translate>Settings </h1>
<div class="oh large-12 columns panel"> <div class="oh large-12 columns panel">
<h3><i class="fi-download m10r"></i> Backup </h3> <h3><i class="fi-download m10r"></i> <span translate>Backup</span> </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> <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"> <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> </div>
<div class="large-12 columns line-dashed-h m15b"> </div> <div class="large-12 columns line-dashed-h m15b"> </div>
<div> <div>
<div class="oh large-12 columns panel"> <div class="oh large-12 columns panel">
<h3><i class="fi-minus-circle m10r"></i> Delete Wallet </h3> <h3><i class="fi-minus-circle m10r"></i>
<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> <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"> <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> </div>
</div> </div>
<p> <p>
<a class="expand small" ng-click="hideAdv=!hideAdv"> <a class="expand small" ng-click="hideAdv=!hideAdv">
<span ng-hide="!hideAdv">Show</span> <span translate ng-hide="!hideAdv">Show</span>
<span ng-hide="hideAdv">Hide</span> <span translate ng-hide="hideAdv">Hide</span>
advanced options <span translate>advanced options</span>
</a> </a>
<div ng-hide="hideAdv"> <div ng-hide="hideAdv">
<div class="oh large-12 columns panel"> <div class="oh large-12 columns panel">
<h3><i class="fi-minus-circle m10r"></i> Master Private Key </h3> <h3><i class="fi-minus-circle m10r"></i>
<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. <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"> <div class="large-4 columns">
<a class="button primary expand" ng-click="hidePriv=!hidePriv"> <a class="button primary expand" ng-click="hidePriv=!hidePriv">
<span ng-hide="!hidePriv">Show</span> <span translate ng-hide="!hidePriv">Show</span>
<span ng-hide="hidePriv">Hide</span> <span translate ng-hide="hidePriv">Hide</span>
</a> </a>
</div> </div>
<textarea ng-hide="hidePriv" readonly>{{priv}}</textarea> <textarea ng-hide="hidePriv" readonly>{{priv}}</textarea>
</div> </div>
<div class="oh large-12 columns panel"> <div class="oh large-12 columns panel">
<h3><i class="fi-minus-circle m10r"></i> Scan Wallet Addresses </h3> <h3><i class="fi-minus-circle m10r"></i> <span translate>Scan Wallet Addresses</span> </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. <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"> <div class="large-4 columns">
<a class="button primary expand" ng-click="updateIndexes()"> <a translate class="button primary expand" ng-click="updateIndexes()">
Scan Scan
</a> </a>
</div> </div>
</div> </div>
<div class="oh large-12 columns panel"> <div class="oh large-12 columns panel">
<h3><i class="fi-minus-circle m10r"></i> Purge Pending Transaction Proposals </h3> <h3><i class="fi-minus-circle m10r"></i> <span translate>Purge Pending Transaction Proposals</span> </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. <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"> <div class="large-4 columns">
<a class="button warning expand" ng-click="purge()"> <a translate class="button warning expand" ng-click="purge()">
Purge Purge
</a> </a>
</div> </div>
</div> </div>
<div class="oh large-12 columns panel"> <div class="oh large-12 columns panel">
<h3><i class="fi-minus-circle m10r"></i> Purge ALL Transaction Proposals </h3> <h3><i class="fi-minus-circle m10r"></i> <span translate>Purge ALL Transaction Proposals</span> </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. <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"> <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 Purge All
</a> </a>
</div> </div>

View File

@ -1,7 +1,7 @@
<div class="open" ng-controller="OpenController"> <div class="open" ng-controller="OpenController">
<div data-alert class="loading-screen" ng-show="loading && !failure"> <div data-alert class="loading-screen" ng-show="loading && !failure">
<i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i> <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>
<div class="row" ng-show="!loading"> <div class="row" ng-show="!loading">
<div class="large-4 columns logo-setup"> <div class="large-4 columns logo-setup">
@ -10,14 +10,15 @@
</div> </div>
<div class="large-8 columns line-dashed-setup-v"> <div class="large-8 columns line-dashed-setup-v">
<div class="box-setup"> <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> <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 class="form-control" ng-model="selectedWalletId" ng-options="w.id as w.show for w in wallets" required>
</select> </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"> <div class="text-right">
<a href="#!/" class="back-button text-white m20r">&laquo; Back</a> <a href="#!/" class="back-button text-white m20r">&laquo; <span translate>Back</span></a>
<button type="submit" class="button white m0" ng-disabled="openForm.$invalid || loading" loading="Opening">Open</button> <button translate type="submit" class="button white m0" ng-disabled="openForm.$invalid || loading" loading="Opening">Open</button>
</div> </div>
</form> </form>
</div> </div>

View File

@ -1,27 +1,27 @@
<div class="send" data-ng-controller="SendController" data-ng-init="loadTxs()"> <div class="send" data-ng-controller="SendController" data-ng-init="loadTxs()">
<div ng-show='$root.wallet.isReady()'> <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 class="last-transactions" ng-repeat="tx in txs | paged">
<div ng-include="'views/includes/transaction.html'"></div> <div ng-include="'views/includes/transaction.html'"></div>
</div> </div>
<div ng-show="txs.length != 0" class="large-12 line-dashed" style="padding: 0;"></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"> <div class="large-6 columns">
<form name="sendForm" ng-submit="submitForm(sendForm)" novalidate> <form name="sendForm" ng-submit="submitForm(sendForm)" novalidate>
<div class="row"> <div class="row">
<div class="large-12 columns"> <div class="large-12 columns">
<div class="row collapse"> <div class="row collapse">
<label for="address">To address <label for="address"><span translate>To address</span>
<small ng-hide="!sendForm.address.$pristine || address">required</small> <small translate ng-hide="!sendForm.address.$pristine || address">required</small>
<small class="is-valid" ng-show="!sendForm.address.$invalid && address">valid!</small> <small translate class="is-valid" ng-show="!sendForm.address.$invalid && address">valid!</small>
<small class="has-error" ng-show="sendForm.address.$invalid && address"> <small translate class="has-error" ng-show="sendForm.address.$invalid && address">
not valid</small> not valid</small>
</label> </label>
<div class="small-10 columns"> <div class="small-10 columns">
<input type="text" id="address" name="address" ng-disabled="loading" <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-check"></i></small>
<small class="icon-input" ng-show="sendForm.address.$invalid && address"><i class="fi-x"></i></small> <small class="icon-input" ng-show="sendForm.address.$invalid && address"><i class="fi-x"></i></small>
</div> </div>
@ -29,7 +29,7 @@
<a class="postfix button black" ng-click="openScanner()"><i class="fi-camera"></i></a> <a class="postfix button black" ng-click="openScanner()"><i class="fi-camera"></i></a>
</div> </div>
<div class="small-2 columns" ng-show="showScanner"> <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> </div>
<div id="scanner" class="row" ng-if="showScanner"> <div id="scanner" class="row" ng-if="showScanner">
@ -55,27 +55,27 @@
<div class="row"> <div class="row">
<div class="large-6 medium-6 columns"> <div class="large-6 medium-6 columns">
<div class="row collapse"> <div class="row collapse">
<label for="amount">Amount <label for="amount"><span translate>Amount</span>
<small ng-hide="!sendForm.amount.$pristine">required</small> <small translate ng-hide="!sendForm.amount.$pristine">required</small>
<small class="is-valid" ng-show="!sendForm.amount.$invalid && !sendForm.amount.$pristine">Valid</small> <small translate 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"> <small translate class="has-error" ng-show="sendForm.amount.$invalid && !sendForm.amount.$pristine && !notEnoughAmount">
Not valid Not valid
</small> </small>
<small ng-show="notEnoughAmount" class="has-error">Insufficient funds</small> <small translate ng-show="notEnoughAmount" class="has-error">Insufficient funds</small>
</label> </label>
<div class="small-9 columns"> <div class="small-9 columns">
<input type="number" id="amount" <input type="number" id="amount"
ng-disabled="loading || ($root.merchant && +$root.merchant.total > 0) || $root.merchantError" 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 min="{{minAmount}}" max="10000000000" enough-amount required
autocomplete="off" 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 && 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> <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-show="$root.availableBalance > 0 && (!$root.merchant || +$root.merchant.total === 0)"
ng-click="topAmount(sendForm)"> ng-click="topAmount(sendForm)">
Use all funds ({{getAvailableAmount()}} {{$root.unitName}}) <span translate>Use all funds</span> ({{getAvailableAmount()}} {{$root.unitName}})
</a> </a>
</div> </div>
<div class="small-3 columns"> <div class="small-3 columns">
@ -85,11 +85,11 @@
</div> </div>
<div class="large-6 medium-6 columns"> <div class="large-6 medium-6 columns">
<div class="row collapse"> <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"> <div class="small-9 columns">
<input type="number" id="alternative_amount" <input type="number" id="alternative_amount"
ng-disabled="loading || !isRateAvailable " ng-disabled="loading || !isRateAvailable "
name="alternative" placeholder="Amount" ng-model="alternative" name="alternative" placeholder="{{'Amount'|translate}}" ng-model="alternative"
required required
autocomplete="off" autocomplete="off"
> >
@ -104,13 +104,13 @@
<div class="row" ng-show="wallet.isShared()"> <div class="row" ng-show="wallet.isShared()">
<div class="large-12 columns"> <div class="large-12 columns">
<div class="row collapse"> <div class="row collapse">
<label for="comment">Note <label for="comment"><span translate>Notes</span>
<small ng-hide="!sendForm.comment.$pristine">optional</small> <small translate ng-hide="!sendForm.comment.$pristine">optional</small>
<small class="has-error" ng-show="sendForm.comment.$invalid && !sendForm.comment.$pristine">too long!</small> <small translate class="has-error" ng-show="sendForm.comment.$invalid && !sendForm.comment.$pristine">too long!</small>
</label> </label>
<div class="large-12 columns"> <div class="large-12 columns">
<textarea id="comment" ng-disabled="loading" <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> </div>
</div> </div>
@ -118,7 +118,7 @@
<div class="row"> <div class="row">
<div class="large-5 medium-3 small-4 columns"> <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 Send
</button> </button>
</div> </div>
@ -140,7 +140,7 @@
<br> <br>
</small> </small>
<small> <small>
Including fee of {{defaultFee|noFractionNumber}} {{$root.unitName}} <span translate>Including fee of</span> {{defaultFee|noFractionNumber}} {{$root.unitName}}
</small> </small>
</p> </p>
<div ng-show="wallet.isShared()"> <div ng-show="wallet.isShared()">
@ -170,15 +170,15 @@
</div> </div>
<div class="large-12 columns line-dashed"> <div class="large-12 columns line-dashed">
<h2>Address Book</h2> <h2 translate>Address Book</h2>
<p class="text-gray" ng-hide="showAddressBook()">Empty. Create an alias for your addresses</p> <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()"> <table class="large-12 medium-12 small-12" ng-show="showAddressBook()">
<thead> <thead>
<tr> <tr>
<th>Label</th> <th translate>Label</th>
<th>Address</th> <th translate>Address</th>
<th>Creator</th> <th translate>Creator</th>
<th>Date</th> <th translate>Date</th>
<th>&nbsp;</th> <th>&nbsp;</th>
</tr> </tr>
</thead> </thead>
@ -195,7 +195,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </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> </div>
</div> </div>

View File

@ -6,50 +6,52 @@
</div> </div>
<div class="large-8 columns line-dashed-setup-v"> <div class="large-8 columns line-dashed-setup-v">
<div class="box-setup"> <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"> <form name="settingsForm">
<fieldset> <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" <input id="network-name" type="checkbox" ng-model="networkName"
ng-true-value="livenet" ng-false-value="testnet" class="form-control" ng-click="changeNetwork()" ng-true-value="livenet" ng-false-value="testnet" class="form-control" ng-click="changeNetwork()"
ng-disabled="forceNetwork" ng-disabled="forceNetwork"
ng-checked="networkName == 'livenet' ? true : false"> ng-checked="networkName == 'livenet' ? true : false">
<label for="network-name">Livenet</label> <label for="network-name">Livenet</label>
<div ng-show="forceNetwork"> <div translate ng-show="forceNetwork">
Network has been fixed to 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.
<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> </div>
</fieldset> </fieldset>
<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 class="form-control" ng-model="selectedUnit" ng-options="o.name for o in unitOpts" required>
</select> </select>
</fieldset> </fieldset>
<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 class="form-control" ng-model="selectedAlternative" ng-options="alternative.name for alternative in alternativeOpts" required>
</select> </select>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend>Insight API server</legend> <legend translate>Insight API server</legend>
<label for="insight-host">Host</label> <label for="insight-host">Host</label>
<input type="text" ng-model="insightHost" class="form-control" name="insight-host"> <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 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()"> <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"> <p translate class="small">
Insight API server is open-source software. You can run your own 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>
instance, check <a href="http://insight.is" target="_blank">Insight
API Homepage</a></p>
</fieldset> </fieldset>
<div class="text-right"> <div class="text-right">
<a class="back-button text-white m20r" href="#!/">&laquo; Back</a> <a class="back-button text-white m20r" href="#!/">&laquo; <span translate>Back</span></a>
<button type="submit" class="button primary m0 ng-binding" ng-disabled="setupForm.$invalid || loading" disabled="disabled" ng-click="save()"> <button translate type="submit" class="button primary m0 ng-binding" ng-disabled="setupForm.$invalid || loading" disabled="disabled" ng-click="save()">
Save Save
</button> </button>
</div> </div>

View File

@ -1,17 +1,18 @@
<div class="transactions" data-ng-controller="TransactionsController" data-ng-init="update()"> <div class="transactions" data-ng-controller="TransactionsController" data-ng-init="update()">
<div ng-show='$root.wallet.isReady()'> <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="large-12" ng-show="wallet.isShared()">
<div class="last-transactions" ng-repeat="tx in txs | paged"> <div class="last-transactions" ng-repeat="tx in txs | paged">
<div ng-include="'views/includes/transaction.html'"></div> <div ng-include="'views/includes/transaction.html'"></div>
</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> <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> </div>
<h1 ng-class="{'line-dashed': wallet.isShared()}"> <h1 ng-class="{'line-dashed': wallet.isShared()}">
Last transactions <span translate>Last transactions</span>
<small ng-hide="wallet.isShared() || !loading"> <small ng-hide="wallet.isShared() || !loading">
<i class="fi-bitcoin-circle icon-rotate spinner"></i> <i class="fi-bitcoin-circle icon-rotate spinner"></i>
</small> </small>
@ -20,13 +21,13 @@
<div class="large-12"> <div class="large-12">
<div class="m10b size-12" ng-hide="wallet.totalCopayers == 1"> <div class="m10b size-12" ng-hide="wallet.totalCopayers == 1">
<a class="text-gray active" ng-click="toogleLast()" <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" <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>
<div class="btransactions" ng-if="lastShowed"> <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. No transactions yet.
</div> </div>
<div class="last-transactions" ng-repeat="btx in blockchain_txs | orderBy: 'time':true"> <div class="last-transactions" ng-repeat="btx in blockchain_txs | orderBy: 'time':true">
@ -39,11 +40,11 @@
</div> </div>
<div class="large-4 medium-5 small-9 columns text-right"> <div class="large-4 medium-5 small-9 columns text-right">
<div data-ng-show="btx.firstSeenTs"> <div data-ng-show="btx.firstSeenTs">
first seen at <span translate>first seen at</span>
<time>{{btx.firstSeenTs * 1000 | amCalendar}}</time> <time>{{btx.firstSeenTs * 1000 | amCalendar}}</time>
</div> </div>
<div data-ng-show="btx.time && !btx.firstSeenTs"> <div data-ng-show="btx.time && !btx.firstSeenTs">
mined at <span translate>mined at</span>
<time>{{btx.time * 1000 | amCalendar}}</time> <time>{{btx.time * 1000 | amCalendar}}</time>
</div> </div>
</div> </div>
@ -70,9 +71,12 @@
</div> </div>
</div> </div>
<div class="last-transactions-footer"> <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">
<div class="large-4 medium-4 small-4 columns text-center">Confirmations: {{btx.confirmations || 0}}</div> <span translate>Fee</span>: {{btx.fees | noFractionNumber}} {{$root.unitName}}</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 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> </div>
</div> </div>

View File

@ -3,7 +3,7 @@
<img src="img/logo-negative-beta.svg" alt="Copay" width="146" height="59"> <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 class="text-white" ng-include="'views/includes/version.html'"></div>
</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"> <h3 class="text-center text-white">
Copay uses WebStorage to save wallet data, Copay uses WebStorage to save wallet data,
but your browser does not support it. but your browser does not support it.

View File

@ -2,6 +2,6 @@
<div data-alert class="loading-screen"> <div data-alert class="loading-screen">
<i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i> <i class="size-60 fi-bitcoin-circle icon-rotate spinner"></i>
Preparing payment... <span translate>Preparing payment...</span>
</div> </div>

View File

@ -4,19 +4,19 @@
<img src="img/logo-negative-beta.svg" alt="Copay" width="146" height="59"> <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 class="text-white" ng-include="'views/includes/version.html'"></div>
</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"> <h3 class="text-center text-white">
This wallet appears to be currently open. <span translate>This wallet appears to be currently open.</span>
<br> <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> </h3>
<div class="text-center m30v large-12 columns"> <div class="text-center m30v large-12 columns">
<div class="row"> <div class="row">
<div class="large-12 columns medium-12 small-12 text-center"> <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>
<br> <br>
<a href ng-click="ignoreLock()">Continue anyways</a> <a translate href ng-click="ignoreLock()">Continue anyways</a>
</div> </div>
</div> </div>
</div> </div>