Merge pull request #2426 from cmgustavo/feature/translation-05

Feature/translation 05
This commit is contained in:
Matias Alejo Garcia 2015-03-06 11:55:04 -03:00
commit e9dea0ceaf
37 changed files with 1160 additions and 550 deletions

View File

@ -112,7 +112,8 @@ module.exports = function(grunt) {
'lib/file-saver/FileSaver.js', 'lib/file-saver/FileSaver.js',
'lib/socket.io-client/socket.io.js', 'lib/socket.io-client/socket.io.js',
'lib/sjcl.js', 'lib/sjcl.js',
'lib/qrcode-decoder-js/lib/qrcode-decoder.min.js' 'lib/qrcode-decoder-js/lib/qrcode-decoder.min.js',
'lib/moment/lang/*.js'
], ],
dest: 'lib/vendors.js' dest: 'lib/vendors.js'
}, },

View File

@ -1,6 +1,5 @@
'use strict'; 'use strict';
var defaultConfig = { var defaultConfig = {
defaultLanguage: 'en',
// DEFAULT network (livenet or testnet) // DEFAULT network (livenet or testnet)
networkName: 'livenet', networkName: 'livenet',
logLevel: 'info', logLevel: 'info',

View File

@ -44,7 +44,7 @@
<div ng-show="sessionExpired" class="session-expired"> <div ng-show="sessionExpired" class="session-expired">
<i class="fi-clock size-72 text-gray"></i> <i class="fi-clock size-72 text-gray"></i>
<p class="text-gray size-18">Your session is about to expire due to inactivity in {{countdown}} seconds</p> <p class="text-gray size-18" translate>Your session is about to expire due to inactivity in {{countdown}} seconds</p>
</div> </div>
<div class="off-canvas-wrap" id="off-canvas-wrap" ng-show="!signingOut"> <div class="off-canvas-wrap" id="off-canvas-wrap" ng-show="!signingOut">
@ -55,8 +55,10 @@
<div class="row"> <div class="row">
<div class="large-10 medium-9 small-12 columns m5b"> <div class="large-10 medium-9 small-12 columns m5b">
<i class="fi-alert size-36 left m20r"></i> <i class="fi-alert size-36 left m20r"></i>
<strong class="size-16">Email not confirmed</strong>.<br> <strong class="size-16" translate>Email not confirmed</strong>.<br>
Please confirm your email address using the confirmation link at the message we sent you <span translate>
Please confirm your email address using the confirmation link at the message we sent you
</span>
</div> </div>
<div class="large-2 medium-3 small-12 columns text-center"> <div class="large-2 medium-3 small-12 columns text-center">
<button class="text-white warning tiny m0" <button class="text-white warning tiny m0"
@ -71,15 +73,15 @@
<div class="status" ng-if="$root.pleaseConfirmEmail"> <div class="status" ng-if="$root.pleaseConfirmEmail">
<a class="close-notification text-white" ng-click="$root.pleaseConfirmEmail=null">&#215;</a> <a class="close-notification text-white" ng-click="$root.pleaseConfirmEmail=null">&#215;</a>
<i class="fi-alert size-36 left m20r"></i> <i class="fi-alert size-36 left m20r"></i>
<span translate> <strong class="size-16" translate>Confirm your email address</strong>.<br>
<strong class="size-16">Confirm your email address</strong>.<br> <span translate>An email was sent to</span> {{$root.iden.getName()}}.
An email was sent to {{$root.iden.getName()}}. Please follow the link on it to confirm it. Unconfirmed profiles could be deleted from server. <span translate>Please follow the link on it to confirm it. Unconfirmed profiles could be deleted from server.</span>
</span>
</div> </div>
<div class="status" ng-if="$root.reconnecting"> <div class="status" ng-if="$root.reconnecting">
<i class="fi-loop icon-rotate"></i> <i class="fi-loop icon-rotate"></i>
<span translate> <strong class="size-16">Network Error</strong>.<br> Attempting to reconnect..</span> <strong class="size-16" translate>Network Error</strong>.<br>
<span translate>Attempting to reconnect...</span>
</div> </div>
<div ng-if="$root.iden"> <div ng-if="$root.iden">

View File

@ -2,7 +2,6 @@
angular.module('copayApp.controllers').controller('SettingsController', function($scope, $rootScope, $window, $route, $location, notification, configService) { angular.module('copayApp.controllers').controller('SettingsController', function($scope, $rootScope, $window, $route, $location, notification, configService) {
$scope.title = 'Settings'; $scope.title = 'Settings';
$scope.defaultLanguage = config.defaultLanguage || 'en';
$scope.insightLivenet = config.network.livenet.url; $scope.insightLivenet = config.network.livenet.url;
$scope.insightTestnet = config.network.testnet.url; $scope.insightTestnet = config.network.testnet.url;
$scope.defaultLogLevel = config.logLevel || 'log'; $scope.defaultLogLevel = config.logLevel || 'log';
@ -35,21 +34,6 @@ angular.module('copayApp.controllers').controller('SettingsController', function
$scope.selectedStorage = v; $scope.selectedStorage = v;
}); });
$scope.availableLanguages = [{
name: 'English',
isoCode: 'en',
}, {
name: 'Spanish',
isoCode: 'es',
}];
for (var ii in $scope.availableLanguages) {
if ($scope.defaultLanguage === $scope.availableLanguages[ii].isoCode) {
$scope.selectedLanguage = $scope.availableLanguages[ii];
break;
}
}
for (var ii in $scope.availableLogLevels) { for (var ii in $scope.availableLogLevels) {
if ($scope.defaultLogLevel === $scope.availableLogLevels[ii].name) { if ($scope.defaultLogLevel === $scope.availableLogLevels[ii].name) {
$scope.selectedLogLevel = $scope.availableLogLevels[ii]; $scope.selectedLogLevel = $scope.availableLogLevels[ii];
@ -77,7 +61,6 @@ angular.module('copayApp.controllers').controller('SettingsController', function
configService.set({ configService.set({
network: insightSettings, network: insightSettings,
defaultLanguage: $scope.selectedLanguage.isoCode,
plugins: plugins, plugins: plugins,
logLevel: $scope.selectedLogLevel.name, logLevel: $scope.selectedLogLevel.name,
EncryptedInsightStorage: _.extend(config.EncryptedInsightStorage, { EncryptedInsightStorage: _.extend(config.EncryptedInsightStorage, {

View File

@ -139,9 +139,20 @@ angular
$idleProvider.warningDuration(40); // in seconds $idleProvider.warningDuration(40); // in seconds
$keepaliveProvider.interval(30); // in seconds $keepaliveProvider.interval(30); // in seconds
}) })
.run(function($rootScope, $location, $idle, gettextCatalog, uriHandler, isCordova) { .run(function($rootScope, $location, $idle, gettextCatalog, uriHandler, isCordova, amMoment) {
gettextCatalog.currentLanguage = config.defaultLanguage; var userLang, androidLang;
if (navigator && navigator.userAgent && (androidLang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) {
userLang = androidLang[1];
} else {
// works for iOS and Android 4.x
userLang = navigator.userLanguage || navigator.language;
}
userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en';
gettextCatalog.setCurrentLanguage(userLang);
amMoment.changeLanguage(userLang);
// Register URI handler, not for mobileApp // Register URI handler, not for mobileApp
if (!isCordova) { if (!isCordova) {

View File

@ -9,9 +9,6 @@ angular.module('copayApp.services').factory('configService', function($timeout,
if (opts.logLevel) if (opts.logLevel)
copay.logger.setLevel(opts.logLevel); copay.logger.setLevel(opts.logLevel);
if (opts.defaultLanguage)
gettextCatalog.currentLanguage = opts.defaultLanguage;
// Set current version // Set current version
opts.version = copay.version; opts.version = copay.version;

1196
po/es.po

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,21 @@
<div class="row manage text-center"> <div class="row manage text-center">
<h1 class="show-for-large-up text-left columns">Add Wallet</h1> <h1 class="show-for-large-up text-left columns" translate>Add Wallet</h1>
<div class="large-4 small-12 columns"> <div class="large-4 small-12 columns">
<a class="db oh panel" title="Create new wallet" ng-click="$root.go('create')"> <a class="db oh panel" title="Create new wallet" ng-click="$root.go('create')">
<i class="fi-plus"></i> <i class="fi-plus"></i>
<span>Create new wallet</span> <span translate>Create new wallet</span>
</a> </a>
</div> </div>
<div class="large-4 small-12 columns"> <div class="large-4 small-12 columns">
<a class="db oh panel join" title="Join shared wallet" ng-click="$root.go('join')"> <a class="db oh panel join" title="Join shared wallet" ng-click="$root.go('join')">
<i class="icon-people"></i> <i class="icon-people"></i>
<span>Join shared wallet</span> <span translate>Join shared wallet</span>
</a> </a>
</div> </div>
<div class="large-4 small-12 columns"> <div class="large-4 small-12 columns">
<a class="db oh panel import" title="Import wallet" ng-click="$root.go('import')"> <a class="db oh panel import" title="Import wallet" ng-click="$root.go('import')">
<i class="icon-upload"></i> <i class="icon-upload"></i>
<span>Import wallet</span> <span translate>Import wallet</span>
</a> </a>
</div> </div>
</div> </div>

View File

@ -6,7 +6,7 @@
<div class="!$root.starting"> <div class="!$root.starting">
<div class="row"> <div class="row">
<div class="large-12 medium-12 small-12 columns"> <div class="large-12 medium-12 small-12 columns">
<h1>Share this secret with your copayers</h1> <h1 translate>Share this secret with your copayers</h1>
</div> </div>
</div> </div>
@ -19,7 +19,7 @@
<div class="box-icon error"> <div class="box-icon error">
<i class="fi-alert size-24"></i> <i class="fi-alert size-24"></i>
</div> </div>
<span class="text-warning size-14"> <span class="text-warning size-14" translate>
Please note the wallet creator <b>must be online</b> until all copayers have joined. Please note the wallet creator <b>must be online</b> until all copayers have joined.
</span> </span>
</div> </div>
@ -35,22 +35,23 @@
<div class="text-center m10t" ng-if="isCordova"> <div class="text-center m10t" ng-if="isCordova">
<span class="button outline dark-gray tiny" <span class="button outline dark-gray tiny"
ng-click="shareSecret(secret)"> ng-click="shareSecret(secret)">
<i class="fi-share"></i> Share secret <i class="fi-share"></i>
<span translate>Share secret</span>
</span> </span>
</div> </div>
<div class="size-10 line-t text-center"> <div class="size-10 line-t text-center">
<h2 class="m10t">{{$root.wallet.getName()}}</h2> <h2 class="m10t">{{$root.wallet.getName()}}</h2>
<span class="text-gray"> <span class="text-gray">
[{{$root.wallet.requiredCopayers}} of {{$root.wallet.totalCopayers}} ] [{{$root.wallet.requiredCopayers}} <span translate>of</span> {{$root.wallet.totalCopayers}} ]
</span> </span>
<span ng-if="$root.wallet.isTestnet()"> in TESTNET</span> <span ng-if="$root.wallet.isTestnet()" translate>in TESTNET</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="large-4 columns"> <div class="large-4 columns">
<div class="panel oh"> <div class="panel oh">
<h3>Waiting for copayers</h3> <h3 translate>Waiting for copayers</h3>
<div ng-include="'views/includes/copayers.html'"></div> <div ng-include="'views/includes/copayers.html'"></div>
<div ng-if="!$root.wallet.isComplete()" class="m15t"> <div ng-if="!$root.wallet.isComplete()" class="m15t">
<div class="left m10r" ng-include="'views/includes/photo.html'"></div> <div class="left m10r" ng-include="'views/includes/photo.html'"></div>
@ -67,18 +68,18 @@
<div class="row"> <div class="row">
<div class="large-12 columns"> <div class="large-12 columns">
<button class="small warning" ng-show="!confirmDelete" ng-click="confirmDelete=!confirmDelete"> <button class="small warning" ng-show="!confirmDelete" ng-click="confirmDelete=!confirmDelete">
<i class="fi-trash"></i> Cancel <i class="fi-trash"></i> <span translate>Cancel</span>
</button> </button>
<div class="text-center" ng-show="confirmDelete"> <div class="text-center" ng-show="confirmDelete">
<h2>Are you sure you want to cancel and delete this wallet</h2> <h2 translate>Are you sure you want to cancel and delete this wallet</h2>
<div class="row"> <div class="row">
<div class="large-6 medium-6 small-6 columns"> <div class="large-6 medium-6 small-6 columns">
<button class="gray" ng-disabled="loading" <button class="gray" ng-disabled="loading"
ng-click="confirmDelete=!confirmDelete">No</button> ng-click="confirmDelete=!confirmDelete" translate>No</button>
</div> </div>
<div class="large-6 medium-6 small-6 columns"> <div class="large-6 medium-6 small-6 columns">
<button class="warning" ng-disabled="loading" ng-click="deleteWallet(); confirmDelete = !confirmDelete"> <button class="warning" ng-disabled="loading" ng-click="deleteWallet(); confirmDelete = !confirmDelete">
<i class="fi-trash"></i> Yes <i class="fi-trash"></i> <span translate>Yes</span>
</button> </button>
</div> </div>
</div> </div>

View File

@ -62,24 +62,28 @@
<label for="network-name"> <label for="network-name">
<input id="network-name" type="checkbox" ng-model="networkName" ng-true-value="'testnet'" <input id="network-name" type="checkbox" ng-model="networkName" ng-true-value="'testnet'"
ng-false-value="'livenet'" class="form-control" ng-checked="networkName == 'testnet' ? true : false"> ng-false-value="'livenet'" class="form-control" ng-checked="networkName == 'testnet' ? true : false">
Use test network <span translate>Use test network</span>
</label> </label>
<label for="ext-master">Master extended private key <label for="ext-master">
<input id="ext-master" <span translate>Master extended private key</span>
<input id="ext-master"
type="text" type="text"
placeholder="BIP32 master extended private key (hex)" placeholder="{{'BIP32 master extended private key (hex)'|translate}}"
name="private" ng-model="private"> name="private" ng-model="private">
</div> </div>
</div> </div>
<div class="text-right"> <div class="text-right">
<button translate type="submit" class="button primary expand m0" ng-disabled="setupForm.$invalid"> <button type="submit" class="button primary expand m0" ng-disabled="setupForm.$invalid">
Create {{requiredCopayers}}-of-{{totalCopayers}} wallet <span translate>Create</span>
{{requiredCopayers}}-<span translate>of</span>-{{totalCopayers}} <span translate>wallet</span>
</button> </button>
</div> </div>
<div ng-show="showNetwork()"><p translate class="size-12">Using network: {{networkName}} at <a href="{{networkUrl}}" target="_blank">{{networkUrl}}</a></p></div> <div ng-show="showNetwork()"><p class="size-12">
<span translate>Using network:</span>
{{networkName}} <span translate>at</span> <a href="{{networkUrl}}" target="_blank">{{networkUrl}}</a></p></div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -26,8 +26,8 @@
<div class="clipo" ng-if="!useLocalstorage && !hideForWP"> <div class="clipo" ng-if="!useLocalstorage && !hideForWP">
<img src="img/clipo-signup2.png" alt="clipo" width="373"> <img src="img/clipo-signup2.png" alt="clipo" width="373">
</div> </div>
<h2 ng-if="!useLocalstorage" ng-hide="hideForWP"> Creating in the cloud </h2> <h2 ng-if="!useLocalstorage" ng-hide="hideForWP" translate>Creating in the cloud</h2>
<h2 ng-if="useLocalstorage" ng-hide="hideForWP"> Creating on this device </h2> <h2 ng-if="useLocalstorage" ng-hide="hideForWP" translate>Creating on this device</h2>
</div> </div>
<div ng-show="createStep == 'pass'"> <div ng-show="createStep == 'pass'">
@ -35,8 +35,8 @@
<img src="img/clipo-signup3.png" alt="clipo" width="380"> <img src="img/clipo-signup3.png" alt="clipo" width="380">
</div> </div>
<h2 ng-if="useLocalstorage" ng-hide="hideForWP"> Creating on this device </h2> <h2 ng-if="useLocalstorage" ng-hide="hideForWP" translate>Creating on this device</h2>
<h2 ng-if="!useLocalstorage" ng-hide="hideForWP"> Creating in the cloud </h2> <h2 ng-if="!useLocalstorage" ng-hide="hideForWP" translate>Creating in the cloud</h2>
<div class="text-gray text-center m20b" ng-hide="hideForWP">{{userOrEmail}}</div> <div class="text-gray text-center m20b" ng-hide="hideForWP">{{userOrEmail}}</div>
</div> </div>
@ -54,51 +54,53 @@
<tabset> <tabset>
<tab style="width: 50%;" select="selectStorage('remote')"> <tab style="width: 50%;" select="selectStorage('remote')">
<tab-heading> <tab-heading>
<span>In the Cloud </span> <span translate>In the Cloud</span>
<br> <br>
<span class="size-10 text-gray">( Recommended )</span> <span class="size-10 text-gray">
(<span translate>Recommended</span>)
</span>
</tab-heading> </tab-heading>
<div class="content-item"> <div class="content-item">
<div class="bg-circle"><i class="icon-wallet"></i> <div class="bg-circle"><i class="icon-wallet"></i>
</div> </div>
<span class="text-gray">Access your wallets anywhere</span> <span class="text-gray" translate>Access your wallets anywhere</span>
</div> </div>
<div class="content-item"> <div class="content-item">
<div class="bg-circle"><i class="icon-download"></i> <div class="bg-circle"><i class="icon-download"></i>
</div> </div>
<span class="text-gray">Backups managed by the server</span> <span class="text-gray" translate>Backups managed by the server</span>
</div> </div>
<div class="content-item line-none"> <div class="content-item line-none">
<div class="bg-circle"><i class="icon-email"></i> <div class="bg-circle"><i class="icon-email"></i>
</div> </div>
<span class="text-gray">Email address confirmation needed</span> <span class="text-gray" translate>Email address confirmation needed</span>
</div> </div>
</tab> </tab>
<tab style="width: 50%;" select="selectStorage('local')"> <tab style="width: 50%;" select="selectStorage('local')">
<tab-heading> <tab-heading>
<div class="m5t">On this Device</div> <div class="m5t" translate>On this Device</div>
</tab-heading> </tab-heading>
<div class="content-item"> <div class="content-item">
<div class="bg-circle"><i class="icon-locked"></i> <div class="bg-circle"><i class="icon-locked"></i>
</div> </div>
<span class="text-gray">Your private keys never leave this device</span> <span class="text-gray" translate>Your private keys never leave this device</span>
</div> </div>
<div class="content-item"> <div class="content-item">
<div class="bg-circle"><i class="icon-person"></i> <div class="bg-circle"><i class="icon-person"></i>
</div> </div>
<span class="text-gray">No email required</span> <span class="text-gray" translate>No email required</span>
</div> </div>
<div class="content-item line-none"> <div class="content-item line-none">
<div class="bg-circle"><i class="icon-download"></i> <div class="bg-circle"><i class="icon-download"></i>
</div> </div>
<span class="text-gray">Need to be careful with backups</span> <span class="text-gray" translate>Need to be careful with backups</span>
</div> </div>
</tab> </tab>
</tabset> </tabset>
<button translate class="button primary radius expand m0" ng-click="goToEmail()"> <button class="button primary radius expand m0" ng-click="goToEmail()">
<span ng-if="!useLocalstorage"> Create in the cloud</span> <span ng-if="!useLocalstorage" translate>Create in the cloud</span>
<span ng-if="useLocalstorage"> Create on this device</span> <span ng-if="useLocalstorage" translate>Create on this device</span>
</button> </button>
<div class="box-setup-footer"> <div class="box-setup-footer">
@ -110,7 +112,7 @@
</div> </div>
<div class="right"> <div class="right">
<a class="button outline dark-gray tiny" <a class="button outline dark-gray tiny"
ng-click="$root.openExternalLink('https://copay.io/profile-storage.html')"> ng-click="$root.openExternalLink('https://copay.io/profile-storage.html')" translate>
Learn more about this option Learn more about this option
</a> </a>
</div> </div>
@ -119,13 +121,14 @@
<form ng-show="createStep == 'email'" name="emailForm" ng-submit="setEmailOrUsername(emailForm)" novalidate> <form ng-show="createStep == 'email'" name="emailForm" ng-submit="setEmailOrUsername(emailForm)" novalidate>
<div class="input" ng-if="useEmail"> <div class="input" ng-if="useEmail">
<input type="email" ng-model="email" class="form-control fi-email" name="email" placeholder="Email" required auto-focus="!isMobile" ng-focus="formFocus()"> <input type="email" ng-model="email" class="form-control fi-email" name="email"
placeholder="{{'Email'|translate}}" required auto-focus="!isMobile" ng-focus="formFocus()">
<i class="icon-email"></i> <i class="icon-email"></i>
<div class="icon-input" ng-if="useEmail"> <div class="icon-input" ng-if="useEmail">
<span translate class="has-error size-12" ng-show="emailForm.email.$invalid && <span class="has-error size-12" ng-show="emailForm.email.$invalid &&
!emailForm.email.$pristine"> !emailForm.email.$pristine">
<i class="fi-x"></i> <i class="fi-x"></i>
Not valid <span translate>Not valid</span>
</span> </span>
<span ng-show="!emailForm.email.$invalid && <span ng-show="!emailForm.email.$invalid &&
!emailForm.email.$pristine"><i class="fi-check"></i> !emailForm.email.$pristine"><i class="fi-check"></i>
@ -134,7 +137,8 @@
</div> </div>
<div class="input" ng-if="!useEmail"> <div class="input" ng-if="!useEmail">
<input type="text" ng-model="username" class="form-control fi-user" name="username" placeholder="Username" required auto-focus="!isMobile" ng-focus="formFocus()"> <input type="text" ng-model="username" class="form-control fi-user" name="username"
placeholder="{{'Username'|translate}}" required auto-focus="!isMobile" ng-focus="formFocus()">
<i class="icon-person"></i> <i class="icon-person"></i>
</div> </div>
@ -178,7 +182,7 @@
<input type="password" ng-model="repeatpassword" class="input form-control" name="repeatpassword" placeholder="{{'Repeat password'|translate}}" match="password" required ng-focus="formFocus()"> <input type="password" ng-model="repeatpassword" class="input form-control" name="repeatpassword" placeholder="{{'Repeat password'|translate}}" match="password" required ng-focus="formFocus()">
<i class="icon-locked"></i> <i class="icon-locked"></i>
<div class="icon-input"> <div class="icon-input">
<span translate class="has-error size-12" ng-show="passForm.repeatpassword.$dirty && <span class="has-error size-12" ng-show="passForm.repeatpassword.$dirty &&
passForm.repeatpassword.$invalid"> passForm.repeatpassword.$invalid">
<i class="fi-x"></i> <i class="fi-x"></i>
{{'Passwords must match'|translate}} {{'Passwords must match'|translate}}
@ -213,7 +217,7 @@
<img src="img/clipo-pin.png" alt="clipo" width="380"> <img src="img/clipo-pin.png" alt="clipo" width="380">
</div> </div>
<div class="text-white text-center" ng-show="askForPin == 2">Repeat PIN</div> <div class="text-white text-center" ng-show="askForPin == 2" translate>Repeat PIN</div>
<div class="box-notification" ng-show="error"> <div class="box-notification" ng-show="error">
<div class="box-icon error"> <div class="box-icon error">
<i class="fi-x size-24"></i> <i class="fi-x size-24"></i>

View File

@ -58,3 +58,5 @@
{{'pending transaction proposals'|translate}} {{'pending transaction proposals'|translate}}
{{'Funds received!'|translate}} {{'Funds received!'|translate}}
{{'Transaction broadcasted'|translate}} {{'Transaction broadcasted'|translate}}
{{'Accessing your profile'|translate}}
{{'Signing out'|translate}}

View File

@ -1,7 +1,7 @@
<div class="transactions" data-ng-controller="HistoryController" data-ng-init="update()"> <div class="transactions" data-ng-controller="HistoryController" data-ng-init="update()">
<div class="row"> <div class="row">
<div class="large-12 medium-12 small-12 columns"> <div class="large-12 medium-12 small-12 columns">
<h1 class="show-for-large-up">{{$root.title}}</h1> <h1 class="show-for-large-up">{{$root.title|translate}}</h1>
<div ng-if="loading && !blockchain_txs[0].txid" class="m20b"> <div ng-if="loading && !blockchain_txs[0].txid" class="m20b">
<i class="fi-bitcoin-circle icon-rotate spinner"></i> <i class="fi-bitcoin-circle icon-rotate spinner"></i>
<span translate>Loading...</span> <span translate>Loading...</span>

View File

@ -11,8 +11,8 @@
<div class="row" ng-show="showDisclaimer"> <div class="row" ng-show="showDisclaimer">
<div class="large-8 medium-10 small-12 large-centered medium-centered columns"> <div class="large-8 medium-10 small-12 large-centered medium-centered columns">
<h1 class="text-white text-center">Disclaimer</h1> <h1 class="text-white text-center" translate>Disclaimer</h1>
<p class="text-white"> <p class="text-white" translate>
The software you are about to use is free, open source, and unsupported beta software. It is important to understand The software you are about to use is free, open source, and unsupported beta software. It is important to understand
that beta software refers to software that is undergoing testing and has not officially been released, could have that beta software refers to software that is undergoing testing and has not officially been released, could have
bugs, and may not act in a reliable fashion. Because the software is currently in beta, it is possible but not certain bugs, and may not act in a reliable fashion. Because the software is currently in beta, it is possible but not certain
@ -34,7 +34,9 @@
software or the use or other dealings in the software. We reserve the right to modify this disclaimer from time to software or the use or other dealings in the software. We reserve the right to modify this disclaimer from time to
time. time.
</p> </p>
<button class="success expand" ng-click="agreeDisclaimer()">I read and agree with these terms</button> <button class="success expand" ng-click="agreeDisclaimer()">
{{'I read and agree with these terms'|translate}}
</button>
</div> </div>
</div> </div>
@ -51,17 +53,15 @@
<i class="size-36 fi-check m10r"></i> <i class="size-36 fi-check m10r"></i>
</div> </div>
<div class="size-14"> <div class="size-14">
<h3> <h3 translate>Your email was confimed!</h3>
Your email was confimed! <span translate>Please sign in to access your wallets</span>
</h3>
Please sign in to access your wallets
</div> </div>
</div> </div>
<div ng-if='askForPin || ($root.hasPin && !$root.iden)'> <div ng-if='askForPin || ($root.hasPin && !$root.iden)'>
<h2 ng-show="$root.hasPin && !$root.iden"> Enter PIN </h2> <h2 ng-show="$root.hasPin && !$root.iden" translate>Enter PIN</h2>
<h2 ng-show="askForPin && askForPin !=2"> Set up a PIN </h2> <h2 ng-show="askForPin && askForPin !=2" translate>Set up a PIN</h2>
<h2 ng-show="askForPin == 2">Repeat PIN</h2> <h2 ng-show="askForPin == 2" translate>Repeat PIN</h2>
<div class="box-notification" ng-show="error"> <div class="box-notification" ng-show="error">
<div class="box-icon error"> <div class="box-icon error">
<i class="fi-x size-24"></i> <i class="fi-x size-24"></i>
@ -81,15 +81,15 @@
<div class="left"> <div class="left">
<i class="size-36 fi-alert m10r"></i> <i class="size-36 fi-alert m10r"></i>
</div> </div>
<b>Copay now needs a profile to access wallets.</b> <b translate>Copay now needs a profile to access wallets.</b>
You can import your current wallets after <span translate>You can import your current wallets after</span>
<a class="text-white" ng-click="$root.go('/createProfile')">creating your profile</a> <a class="text-white" ng-click="$root.go('/createProfile')" translate>creating your profile</a>
</div> </div>
<div class="p10 bg-success m20b text-white" ng-show="pendingPayment"> <div class="p10 bg-success m20b text-white" ng-show="pendingPayment">
<div class="left"> <div class="left">
<i class="size-36 m10r"></i> <i class="size-36 m10r"></i>
</div> </div>
<div class="size-14"> <div class="size-14" translate>
Please sign in to make the payment Please sign in to make the payment
</div> </div>
</div> </div>
@ -104,27 +104,30 @@
</div> </div>
<div class="input" ng-if="!usingLocalStorage"> <div class="input" ng-if="!usingLocalStorage">
<input type="email" ng-model="email" class="form-control" name="email" placeholder="Email" required show-focus="!isMobile" ng-focus="formFocus()"> <input type="email" ng-model="email" class="form-control" name="email" placeholder="{{'Email'|translate}}"
required show-focus="!isMobile" ng-focus="formFocus()">
<i class="icon-email"></i> <i class="icon-email"></i>
</div> </div>
<div class="input" ng-if="usingLocalStorage"> <div class="input" ng-if="usingLocalStorage">
<input type="text" ng-model="email" class="form-control" name="email" placeholder="Username" required show-focus="!isMobile" ng-focus="formFocus()"> <input type="text" ng-model="email" class="form-control" name="email" placeholder="{{'Username'|translate}}"
required show-focus="!isMobile" ng-focus="formFocus()">
<i class="icon-person"></i> <i class="icon-person"></i>
</div> </div>
<div class="input"> <div class="input">
<input type="password" ng-model="password" class="form-control" name="password" placeholder="Password" required ng-focus="formFocus()"> <input type="password" ng-model="password" class="form-control" name="password"
placeholder="{{'Password'|translate}}" required ng-focus="formFocus()">
<i class="icon-locked"></i> <i class="icon-locked"></i>
</div> </div>
<button translate type="submit" class="button primary radius expand m0" <button type="submit" class="button primary radius expand m0"
ng-disabled="loginForm.$invalid"> ng-disabled="loginForm.$invalid">
Sign in {{'Sign in'|translate}}
</button> </button>
</form> </form>
<div ng-if="usingLocalStorage" class="text-gray size-12 m10v"> <div ng-if="usingLocalStorage" class="text-gray size-12 m10v" translate>
* Using this device storage. Change to cloud storage on 'settings'. * Using this device storage. Change to cloud storage on 'settings'.
</div> </div>

View File

@ -27,18 +27,19 @@
<div class="avatar-wallet left">{{$root.wallet.getName() | limitTo: 1}}</div> <div class="avatar-wallet left">{{$root.wallet.getName() | limitTo: 1}}</div>
<div class="wallet-info"> <div class="wallet-info">
<p class="m0"> <p class="m0">
{{$root.wallet.requiredCopayers}} of {{$root.wallet.totalCopayers}} {{$root.wallet.requiredCopayers}} <span translate>of</span> {{$root.wallet.totalCopayers}}
</p> </p>
<div class="size-12 text-gray"> <div class="size-12 text-gray">
<span ng-if="$root.wallet.isShared() && !$root.wallet.isTestnet()">Multisignature wallet </span> <span ng-if="$root.wallet.isShared() && !$root.wallet.isTestnet()" translate>Multisignature wallet </span>
<span ng-if="!$root.wallet.isShared() && !$root.wallet.isTestnet()">Personal Wallet</span>
<span ng-if="$root.wallet.isTestnet()"> Testnet</span> <span ng-if="!$root.wallet.isShared() && !$root.wallet.isTestnet()" translate>Personal Wallet</span>
<span ng-if="$root.wallet.isTestnet()" translate>Testnet</span>
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<a ng-click="$root.go('more')" class="button outline light-gray tiny m0"> <a ng-click="$root.go('more')" class="button outline light-gray tiny m0">
<i class="fi-widget size-18 vm"></i> <i class="fi-widget size-18 vm"></i>
<span class="show-for-medium-up">Settings</span> <span class="show-for-medium-up" translate>Settings</span>
</a> </a>
</div> </div>
</div> </div>
@ -56,14 +57,16 @@
ng-include="'views/includes/transaction.html'" ng-if="$root.wallet.pendingTxProposals[0]"> ng-include="'views/includes/transaction.html'" ng-if="$root.wallet.pendingTxProposals[0]">
</div> </div>
<div class="text-right size-12 line-t p10t" ng-show="$root.wallet.balanceInfo.lockedBalance && !$root.wallet.balanceInfo.updatingBalance"> <div class="text-right size-12 line-t p10t"
Total Locked Balance: ng-show="$root.wallet.balanceInfo.lockedBalance && !$root.wallet.balanceInfo.updatingBalance">
<b>{{$root.wallet.balanceInfo.lockedBalance}} {{$root.wallet.settings.unitName}} </b> <span translate>Total Locked Balance</span>:
<span class="text-gray"> {{$root.wallet.balanceInfo.lockedBalanceAlternative}} {{$root.wallet.balanceInfo.alternativeIsoCode}} </span> <b>{{$root.wallet.balanceInfo.lockedBalance}} {{$root.wallet.settings.unitName}} </b>
<span class="text-gray"> {{$root.wallet.balanceInfo.lockedBalanceAlternative}}
{{$root.wallet.balanceInfo.alternativeIsoCode}} </span>
</div> </div>
<div class="pr" ng-if="!$root.wallet.pendingTxProposals[0]"> <div class="pr" ng-if="!$root.wallet.pendingTxProposals[0]">
<p> No pending spend proposals at the moment. <p translate>No pending spend proposals at the moment.</p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -6,7 +6,7 @@
<div ng-show="!$root.starting"> <div ng-show="!$root.starting">
<div class="row hide-for-large-up"> <div class="row hide-for-large-up">
<div class="large-12 medium-12 small-12 columns"> <div class="large-12 medium-12 small-12 columns">
<h1>{{$root.title}}</h1> <h1>{{$root.title|translate}}</h1>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -41,7 +41,7 @@
<span translate>You have old wallets in your localStorage. Choose one to import</span> <i class="fi-bitcoin"></i> <span translate>You have old wallets in your localStorage. Choose one to import</span> <i class="fi-bitcoin"></i>
</label> </label>
<select ng-model="backupOldWallet" name="backupOldWallet" ng-options="wallet.name for wallet in oldWallets"> <select ng-model="backupOldWallet" name="backupOldWallet" ng-options="wallet.name for wallet in oldWallets">
<option value="">-- choose wallet --</option> <option value="" translate>-- choose wallet --</option>
</select> </select>
</div> </div>

View File

@ -32,7 +32,7 @@
<div ng-show="isSafari || isCordova"> <div ng-show="isSafari || isCordova">
<div class="input"> <div class="input">
<textarea <textarea
placeholder="Paste backup plain text code" placeholder="{{'Paste backup plain text code'|translate}}"
class="form-control" class="form-control"
name="backupText" name="backupText"
ng-model="backupText" ng-model="backupText"

View File

@ -3,7 +3,7 @@
<a ng-click="$root.go(item.link)" ng-class="{active: isActive(item)}"> <a ng-click="$root.go(item.link)" ng-class="{active: isActive(item)}">
<i class="size-36 {{item.icon}} db"></i> <i class="size-36 {{item.icon}} db"></i>
<div class="size-10 tu"> <div class="size-10 tu">
{{item.title}} {{item.title|translate}}
<span class="label alert round" ng-if="item.link=='homeWallet' && $root.wallet.pendingTxProposalsCountForUs > 0">{{$root.wallet.pendingTxProposalsCountForUs}}</span> <span class="label alert round" ng-if="item.link=='homeWallet' && $root.wallet.pendingTxProposalsCountForUs > 0">{{$root.wallet.pendingTxProposalsCountForUs}}</span>
</div> </div>
</a> </a>

View File

@ -1,7 +1,7 @@
<div class="founds" ng-if="$root.wallet.isComplete()"> <div class="founds" ng-if="$root.wallet.isComplete()">
<span ng-if="$root.wallet.balanceInfo.updatingBalance"><i class="fi-bitcoin-circle icon-rotate spinner"></i></span> <span ng-if="$root.wallet.balanceInfo.updatingBalance"><i class="fi-bitcoin-circle icon-rotate spinner"></i></span>
<div ng-if="$root.wallet && !$root.wallet.balanceInfo.updatingBalance" data-options="disable_for_touch:true"> <div ng-if="$root.wallet && !$root.wallet.balanceInfo.updatingBalance" data-options="disable_for_touch:true">
<small class="db text-light">Balance:</small> <small class="db text-light" translate>Balance:</small>
<b class="m5r">{{$root.wallet.balanceInfo.totalBalance || 0}} {{$root.wallet.settings.unitName}}</b> <b class="m5r">{{$root.wallet.balanceInfo.totalBalance || 0}} {{$root.wallet.settings.unitName}}</b>
<span ng-if="$root.wallet.balanceInfo.alternativeBalanceAvailable" class="alt-currency gray">{{$root.wallet.balanceInfo.totalBalanceAlternative}} {{$root.wallet.balanceInfo.alternativeIsoCode}}</span> <span ng-if="$root.wallet.balanceInfo.alternativeBalanceAvailable" class="alt-currency gray">{{$root.wallet.balanceInfo.totalBalanceAlternative}} {{$root.wallet.balanceInfo.alternativeIsoCode}}</span>
<span ng-if="!$root.wallet.balanceInfo.alternativeBalanceAvailable" class="alt-currency gray">N/A</span> <span ng-if="!$root.wallet.balanceInfo.alternativeBalanceAvailable" class="alt-currency gray">N/A</span>
@ -30,8 +30,10 @@
<ul ng-show="hoverMenu" class="size-16 text-gray" ng-class="{'hover': hoverMenu}"> <ul ng-show="hoverMenu" class="size-16 text-gray" ng-class="{'hover': hoverMenu}">
<li> <li>
<li><a href="#!/profile" title="Profile"> <li><a href="#!/profile" title="Profile">
<i class="icon-person size-18 m10r"></i> {{'My Profile'|translate}}<span class="size-10 text-warning" ng-if="!$root.needsEmailConfirmation && $root.iden.backupNeeded"> [ Needs Backup ]</span></a> <i class="icon-person size-18 m10r"></i> {{'My Profile'|translate}}<span class="size-10 text-warning"
</li> ng-if="!$root.needsEmailConfirmation && $root.iden.backupNeeded">
[ <span translate>Needs Backup</span> ]</span></a>
</li>
<li><a ng-click="signout()"> <li><a ng-click="signout()">
<span ng-if="!$root.hasPin"><i class="icon-power size-18 m10r"></i> {{'Close'|translate}}</span> <span ng-if="!$root.hasPin"><i class="icon-power size-18 m10r"></i> {{'Close'|translate}}</span>
<span ng-if="$root.hasPin"><i class="fi-lock size-18 m10r"></i> {{'Lock'|translate}}</span> <span ng-if="$root.hasPin"><i class="fi-lock size-18 m10r"></i> {{'Lock'|translate}}</span>

View File

@ -11,6 +11,6 @@
<div class="contener_mixte"><div class="ballcolor ball_4">&nbsp;</div></div> <div class="contener_mixte"><div class="ballcolor ball_4">&nbsp;</div></div>
</div> </div>
</div> </div>
<span class="text-gray size-12" ng-show="title">{{title}}...</span> <span class="text-gray size-12" ng-show="title">{{title|translate}}...</span>
</div> </div>
</div> </div>

View File

@ -17,7 +17,7 @@
<div class="pin-button-bar"> <div class="pin-button-bar">
<a class="pin-button" ng-click="skip()"> <a class="pin-button" ng-click="skip()">
<i class="icon-power text-primary" ng-show="$root.hasPin"></i> <i class="icon-power text-primary" ng-show="$root.hasPin"></i>
<i class="text-primary size-16 vm" ng-show="!$root.hasPin">Skip</i> <i class="text-primary size-16 vm" ng-show="!$root.hasPin" translate>Skip</i>
</a> </a>
<a class="pin-button" ng-click="press(0)">0</a> <a class="pin-button" ng-click="press(0)">0</a>
<a class="pin-button" ng-click="clear()"><i class="fi-arrow-left"></i></a> <a class="pin-button" ng-click="clear()"><i class="fi-arrow-left"></i></a>

View File

@ -31,8 +31,8 @@
</div> </div>
<div class="col2"> <div class="col2">
<i class="icon-arrow-right3 size-18 right m10t"></i> <i class="icon-arrow-right3 size-18 right m10t"></i>
<span class="tu text-bold">Add wallet</span> <br> <span class="tu text-bold" translate>Add wallet</span> <br>
<span class="text-light">Create, join or import</span> <span class="text-light" translate>Create, join or import</span>
</div> </div>
</div> </div>
</li> </li>
@ -42,7 +42,7 @@
<i class="fi-power size-21"></i> <i class="fi-power size-21"></i>
</div> </div>
<div class="col2 m5t m15b"> <div class="col2 m5t m15b">
<span class="tu text-bold">Close</span> <br> <span class="tu text-bold" translate>Close</span> <br>
</div> </div>
</div> </div>
<div ng-if="$root.hasPin" class="buttons-sidebar" title="Close" ng-click="signout()"> <div ng-if="$root.hasPin" class="buttons-sidebar" title="Close" ng-click="signout()">
@ -50,8 +50,8 @@
<i class="fi-lock size-21"></i> <i class="fi-lock size-21"></i>
</div> </div>
<div class="col2"> <div class="col2">
<span class="tu text-bold">Lock</span> <br> <span class="tu text-bold" translate>Lock</span> <br>
<span class="text-light"> Require pin to unlock</span> <span class="text-light" translate>Require pin to unlock</span>
</div> </div>
</div> </div>
</li> </li>

View File

@ -1,7 +1,7 @@
<div ng-init="init()"> <div ng-init="init()">
<header> <header>
<div class="left p15" ng-show="!$root.wallet"> <div class="left p15" ng-show="!$root.wallet">
<span class="db m5t text-italic">You have no wallets</span> <span class="db m5t text-italic" translate>You have no wallets</span>
</div> </div>
<div ng-show="$root.wallet"> <div ng-show="$root.wallet">
<div class="col1"> <div class="col1">
@ -43,7 +43,9 @@
<div class="col2"> <div class="col2">
<a href class="size-12 wallet-item"> <a href class="size-12 wallet-item">
<span class="ellipsis name-wallet">{{item.name || item.id}}</span> <span class="ellipsis name-wallet">{{item.name || item.id}}</span>
<span class="size-12 type-wallet"> {{item.requiredCopayers}} of {{item.totalCopayers}} </span> <span class="size-12 type-wallet">{{item.requiredCopayers}}
<span translate>of</span> {{item.totalCopayers}}
</span>
</a> </a>
</div> </div>
</li> </li>
@ -53,8 +55,8 @@
<i class="fi-plus size-21"></i> <i class="fi-plus size-21"></i>
</div> </div>
<div class="col2"> <div class="col2">
<span class="tu text-bold">Add wallet</span> <br> <span class="tu text-bold" translate>Add wallet</span> <br>
<span class="text-light">Create, join or import</span> <span class="text-light" translate>Create, join or import</span>
</div> </div>
</div> </div>
</li> </li>

View File

@ -5,7 +5,7 @@
<div class="ellipsis p10b size-16 m20r" ng-init="pendingForUs = !tx.signedBy[$root.wallet.getMyCopayerId()] && !tx.rejectedBy[$root.wallet.getMyCopayerId()]"> <div class="ellipsis p10b size-16 m20r" ng-init="pendingForUs = !tx.signedBy[$root.wallet.getMyCopayerId()] && !tx.rejectedBy[$root.wallet.getMyCopayerId()]">
<span class="tx-proposal size-12 m5r"> <i ng-class="{'active':pendingForUs}" class="fi-arrow-right"></i> </span> <span class="tx-proposal size-12 m5r"> <i ng-class="{'active':pendingForUs}" class="fi-arrow-right"></i> </span>
<span class="text-gray"> <span class="text-gray">
To: <span translate>To</span>:
<span ng-if="tx.merchant"> <span ng-if="tx.merchant">
<span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.merchant.domain}}</span> <span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.merchant.domain}}</span>
<span ng-show="!tx.merchant.pr.ca"><i class="fi-unlock"></i> {{tx.merchant.domain}}</span> <span ng-show="!tx.merchant.pr.ca"><i class="fi-unlock"></i> {{tx.merchant.domain}}</span>

View File

@ -6,7 +6,7 @@
<div ng-show="!$root.starting"> <div ng-show="!$root.starting">
<div class="row hide-for-large-up"> <div class="row hide-for-large-up">
<div class="large-12 medium-12 small-12 columns"> <div class="large-12 medium-12 small-12 columns">
<h1>{{$root.title}}</h1> <h1>{{$root.title|translate}}</h1>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -18,10 +18,10 @@
<small translate data-options="disable_for_touch:true" ng-show="joinForm.connectionId.$pristine" class="has-tip <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> text-gray" tooltip="Paste wallet secret here">Required</small>
</label> </label>
<span translate class="has-error right size-12" ng-show="joinForm.connectionId.$invalid <span class="has-error right size-12" ng-show="joinForm.connectionId.$invalid
&& !joinForm.connectionId.$pristine"> && !joinForm.connectionId.$pristine">
<span class="icon-input"><i class="fi-x"></i></span> <span class="icon-input"><i class="fi-x"></i></span>
Wallet Secret is not valid! <span translate>Wallet Secret is not valid!</span>
</span> </span>
<small class="icon-input right" ng-show="joinForm.connectionId.$valid <small class="icon-input right" ng-show="joinForm.connectionId.$valid
&& !joinForm.connectionId.$pristine"><i class="fi-check"></i></small> && !joinForm.connectionId.$pristine"><i class="fi-check"></i></small>
@ -60,7 +60,8 @@
<label for="ext-master">Master extended private key <label for="ext-master">Master extended private key
<input id="ext-master" <input id="ext-master"
type="text" type="text"
placeholder="BIP32 master extended private key (hex)" name="private" ng-model="$parent.private"> placeholder="{{'BIP32 master extended private key (hex)'|translate}}"
name="private" ng-model="$parent.private">
</label> </label>
</div> </div>
</div> </div>

View File

@ -1,16 +1,18 @@
<nav class="tab-bar text-right hide-for-large-up"> <nav class="tab-bar text-right hide-for-large-up">
<span ng-click="close()" class="p10 text-white">Close</span> <span ng-click="close()" class="p10 text-white" translate>Close</span>
</nav> </nav>
<div class="modal-mobile"> <div class="modal-mobile">
<h1 ng-show="!showForm">Address Book</h1> <h1 ng-show="!showForm" translate>Address Book</h1>
<h1 ng-show="showForm">Add a new entry</h1> <h1 ng-show="showForm" translate>Add a new entry</h1>
<p translate class="text-gray m15b" ng-show="!showForm && !hasEntry()">Empty. Create an alias for your addresses</p> <p translate class="text-gray m15b" ng-show="!showForm && !hasEntry()" translate>
Empty. Create an alias for your addresses
</p>
<div class="box-notification" ng-show="success"> <div class="box-notification" ng-show="success">
<div class="box-icon success"> <div class="box-icon success">
<i class="size-24 fi-check"></i> <i class="size-24 fi-check"></i>
</div> </div>
<span class="size-14 text-success"> <span class="size-14 text-success">
{{success}} {{success|translate}}
</span> </span>
</div> </div>
<table class="addressbook line-t" ng-show="!showForm && hasEntry()"> <table class="addressbook line-t" ng-show="!showForm && hasEntry()">
@ -19,7 +21,7 @@
<th translate>Entry</th> <th translate>Entry</th>
<th class="show-for-large-up" ng-class="{'hide-for-small-only' : $root.wallet.isShared()}" ng-show="$root.wallet.isShared()" translate>Creator</th> <th class="show-for-large-up" ng-class="{'hide-for-small-only' : $root.wallet.isShared()}" ng-show="$root.wallet.isShared()" translate>Creator</th>
<th class="show-for-large-up" translate>Date</th> <th class="show-for-large-up" translate>Date</th>
<th class="show-for-large-up">Visible</th> <th class="show-for-large-up" translate>Visible</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -49,16 +51,16 @@
<i class="size-24 fi-x"></i> <i class="size-24 fi-x"></i>
</div> </div>
<span class="size-14 text-warning"> <span class="size-14 text-warning">
{{error}} {{error|translate}}
</span> </span>
</div> </div>
<div class="row collapse"> <div class="row collapse">
<label for="newaddress" class="left"><span translate>Address</span> <label for="newaddress" class="left"><span translate>Address</span>
<small translate ng-hide="!addressBookForm.newaddress.$pristine || newaddress">Required</small> <small translate ng-hide="!addressBookForm.newaddress.$pristine || newaddress">Required</small>
</label> </label>
<span translate class="has-error right size-12" ng-show="addressBookForm.newaddress.$invalid && newaddress"> <span class="has-error right size-12" ng-show="addressBookForm.newaddress.$invalid && newaddress">
<span class="icon-input"><i class="fi-x"></i></span> <span class="icon-input"><i class="fi-x"></i></span>
Not valid <span translate>Not valid</span>
</span> </span>
<small class="icon-input right" ng-show="!addressBookForm.newaddress.$invalid && newaddress"><i class="fi-check"></i></small> <small class="icon-input right" ng-show="!addressBookForm.newaddress.$invalid && newaddress"><i class="fi-check"></i></small>
</div> </div>
@ -80,7 +82,7 @@
ng-click="submitAddressBook(addressBookForm)">{{'Add'|translate}}</button> ng-click="submitAddressBook(addressBookForm)">{{'Add'|translate}}</button>
</form> </form>
<a ng-show="!showForm" class="button primary expand" ng-disabled="loading" ng-click="toggleForm()"> <a ng-show="!showForm" class="button primary expand" ng-disabled="loading" ng-click="toggleForm()">
<i class="fi-plus"></i> Add entry <i class="fi-plus"></i> <span translate>Add entry</span>
</a> </a>
<a class="close-reveal-modal show-for-large-up" ng-click="close()"><i class="fi-x size-18"></i></a> <a class="close-reveal-modal show-for-large-up" ng-click="close()"><i class="fi-x size-18"></i></a>
</div> </div>

View File

@ -14,23 +14,23 @@
<div class="line-b m10v"></div> <div class="line-b m10v"></div>
<div class="ellipsis m10v"> <div class="ellipsis m10v">
<i>To:</i> {{md.domain}} <i translate>To:</i> {{md.domain}}
</div> </div>
<div class="m10v"> <div class="m10v">
<i>Certified by:</i> <i translate>Certified by:</i>
<span ng-show="md.pr.ca"><i class="fi-lock color-greeni"></i> {{md.pr.ca}}</span> <span ng-show="md.pr.ca"><i class="fi-lock color-greeni"></i> {{md.pr.ca}}</span>
<span ng-show="!md.pr.ca"><i class="fi-unlock color-yellowi"></i> Untrusted</span> <span ng-show="!md.pr.ca"><i class="fi-unlock color-yellowi"></i> <span translate>Untrusted</span></span>
</div> </div>
<div ng-if="md.pr.pd.memo" class="m10v lh140"> <div ng-if="md.pr.pd.memo" class="m10v lh140">
<i>Merchant Message:</i> <span class="text-gray"> <i translate>Merchant Message:</i> <span class="text-gray">
{{md.pr.pd.memo}} {{md.pr.pd.memo}}
</div> </div>
<div ng-if="md.expirationDate" class="m10v"> <div ng-if="md.expirationDate" class="m10v">
<i>Expires:</i> {{md.expirationDate | amTimeAgo }} <i translate>Expires:</i> {{md.expirationDate | amTimeAgo }}
</div> </div>
</div> </div>

View File

@ -1,5 +1,5 @@
<nav class="tab-bar text-right hide-for-large-up"> <nav class="tab-bar text-right hide-for-large-up">
<span ng-click="cancel()" class="p10 text-white">Close</span> <span ng-click="cancel()" class="p10 text-white" translate>Close</span>
</nav> </nav>
<div class="modal-mobile text-center" ng-init="addr = address.address"> <div class="modal-mobile text-center" ng-init="addr = address.address">
<qrcode size="220" data="{{addr}}"></qrcode> <qrcode size="220" data="{{addr}}"></qrcode>
@ -19,7 +19,7 @@
</div> </div>
<div class="text-center m10t" ng-if="isCordova"> <div class="text-center m10t" ng-if="isCordova">
<button class="primary expand" ng-click="copyAddress(addr)"> <button class="primary expand" ng-click="copyAddress(addr)">
<i class="fi-clipboard-pencil"></i> Copy to clipboard <i class="fi-clipboard-pencil"></i> <span translate>Copy to clipboard</span>
</button> </button>
</div> </div>
<a class="close-reveal-modal show-for-large-up" ng-click="cancel()"><i class="fi-x size-18"></i></a> <a class="close-reveal-modal show-for-large-up" ng-click="cancel()"><i class="fi-x size-18"></i></a>

View File

@ -1,11 +1,11 @@
<nav class="tab-bar text-right hide-for-large-up"> <nav class="tab-bar text-right hide-for-large-up">
<span ng-click="cancel()" class="p10 text-white">Close</span> <span ng-click="cancel()" class="p10 text-white" translate>Close</span>
</nav> </nav>
<div class="modal-mobile"> <div class="modal-mobile">
<div class="header-modal text-center"> <div class="header-modal text-center">
<div ng-if="btx.addressTo" class="m10v"> <div ng-if="btx.addressTo" class="m10v">
<span class="ellipsis"> <span class="ellipsis">
<i>To:</i> <i translate>To:</i>
<span ng-if="btx.merchant"> <span ng-if="btx.merchant">
<span ng-show="btx.merchant.pr.ca"><i class="fi-lock color-greeni"></i> {{btx.merchant.domain}}</span> <span ng-show="btx.merchant.pr.ca"><i class="fi-lock color-greeni"></i> {{btx.merchant.domain}}</span>
<span ng-show="!btx.merchant.pr.ca"><i class="fi-unlock color-yellowi"></i> {{btx.merchant.domain}}</span> <span ng-show="!btx.merchant.pr.ca"><i class="fi-unlock color-yellowi"></i> {{btx.merchant.domain}}</span>
@ -75,7 +75,7 @@
<small class="ellipsis text-gray m20b text-right" ng-if="btx.txid" > ID: {{btx.txid}} </small> <small class="ellipsis text-gray m20b text-right" ng-if="btx.txid" > ID: {{btx.txid}} </small>
<a class="button outline light-gray tiny right" ng-click="$root.openExternalLink('http://' + getShortNetworkName() + '.insight.is/tx/' + btx.txid)" ng-if="btx.txid"> <a class="button outline light-gray tiny right" ng-click="$root.openExternalLink('http://' + getShortNetworkName() + '.insight.is/tx/' + btx.txid)" ng-if="btx.txid">
See it on the blockchain <i class="icon-arrow-right2 vm"></i> <span translate>See it on the blockchain</span> <i class="icon-arrow-right2 vm"></i>
</a> </a>
</div> </div>

View File

@ -11,10 +11,10 @@
<div class="text-center m10v"> <div class="text-center m10v">
{{statusStr}} {{statusStr|translate}}
</div> </div>
<div class="text-center m10v"> <div class="text-center m10v">
<a class="button primary" ng-click="cancel()">OKAY</a> <a class="button primary" ng-click="cancel()" translate>OKAY</a>
</div> </div>
</div> </div>

View File

@ -1,5 +1,5 @@
<nav class="tab-bar text-right hide-for-large-up"> <nav class="tab-bar text-right hide-for-large-up">
<span ng-click="cancel()" class="p10 text-white">Close</span> <span ng-click="cancel()" class="p10 text-white" translate>Close</span>
</nav> </nav>
<div class="modal-mobile"> <div class="modal-mobile">
<div class="header-modal"> <div class="header-modal">
@ -8,7 +8,7 @@
<div class="ellipsis p10b size-16 m20r"> <div class="ellipsis p10b size-16 m20r">
<span class="tx-proposal size-12 m5r"> <i ng-class="{'active':pendingForUs}" class="fi-arrow-right"></i> </span> <span class="tx-proposal size-12 m5r"> <i ng-class="{'active':pendingForUs}" class="fi-arrow-right"></i> </span>
<span class="text-gray"> <span class="text-gray">
To: <span translate>To:</span>
<span ng-if="tx.merchant"> <span ng-if="tx.merchant">
<span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.merchant.domain}}</span> <span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.merchant.domain}}</span>
<span ng-show="!tx.merchant.pr.ca"><i class="fi-unlock"></i> {{tx.merchant.domain}}</span> <span ng-show="!tx.merchant.pr.ca"><i class="fi-unlock"></i> {{tx.merchant.domain}}</span>
@ -44,7 +44,7 @@
<div class="m10v line-b size-14" ng-if="tx.merchant"> <div class="m10v line-b size-14" ng-if="tx.merchant">
<div class="oh"> <div class="oh">
<p class="left m5b">Merchant Message:</p> <p class="left m5b" translate>Merchant Message:</p>
<div class="text-gray text-right m5t size-12" ng-if="tx.merchant && tx.merchant.expirationDate"> <div class="text-gray text-right m5t size-12" ng-if="tx.merchant && tx.merchant.expirationDate">
<span><i>Expires</i>: {{tx.merchant.expirationDate | amTimeAgo }}</span> <span><i>Expires</i>: {{tx.merchant.expirationDate | amTimeAgo }}</span>
</div> </div>
@ -55,7 +55,7 @@
</div> </div>
<div ng-if="tx.actionList[0]" class="m10v"> <div ng-if="tx.actionList[0]" class="m10v">
<i>Signatures:</i> <i translate>Signatures:</i>
<ul class="tx-copayers m10t" ng-if="tx.actionList[0]"> <ul class="tx-copayers m10t" ng-if="tx.actionList[0]">
<li ng-repeat="cId in registeredCopayerIds" <li ng-repeat="cId in registeredCopayerIds"
ng-class="{'bottom-line-copayers':!$last}"> ng-class="{'bottom-line-copayers':!$last}">
@ -79,7 +79,7 @@
<i class="fi-x size-24"></i> <i class="fi-x size-24"></i>
</div> </div>
<span class="text-warning size-14"> <span class="text-warning size-14">
{{error}} {{error|translate}}
</span> </span>
</div> </div>
@ -119,13 +119,13 @@
<a class="button outline light-gray tiny right" <a class="button outline light-gray tiny right"
ng-click="$root.openExternalLink('http://' + getShortNetworkName() + '.insight.is/tx/' + ng-click="$root.openExternalLink('http://' + getShortNetworkName() + '.insight.is/tx/' +
$root.wallet.txProposals.txps[tx.ntxid].sentTxid)"> $root.wallet.txProposals.txps[tx.ntxid].sentTxid)">
See it on the blockchain <i class="icon-arrow-right2 vm"></i> <span translate>See it on the blockchain</span> <i class="icon-arrow-right2 vm"></i>
</a> </a>
<div class="m10t">Transaction sent!</div> <div class="m10t" translate>Transaction sent!</div>
</div> </div>
<div class="text-center text-warning" <div class="text-center text-warning"
ng-show="!$root.wallet.txProposals.txps[tx.ntxid].sentTs && ng-show="!$root.wallet.txProposals.txps[tx.ntxid].sentTs &&
$root.wallet.txProposals.txps[tx.ntxid].isFinallyRejected($root.wallet.maxRejectCount())"> $root.wallet.txProposals.txps[tx.ntxid].isFinallyRejected($root.wallet.maxRejectCount())" translate>
Transaction finally rejected Transaction finally rejected
</div> </div>
</div> </div>

View File

@ -1,11 +1,11 @@
<nav class="tab-bar text-right hide-for-large-up"> <nav class="tab-bar text-right hide-for-large-up">
<span ng-click="cancel()" class="p10 text-white">Close</span> <span ng-click="cancel()" class="p10 text-white" translate>Close</span>
</nav> </nav>
<div class="modal-mobile" ng-init="setWallets()"> <div class="modal-mobile" ng-init="setWallets()">
<h1 class="line-b"> Select a wallet to make the payment</h1> <h1 class="line-b" translate>Select a wallet to make the payment</h1>
<div class="m20v" ng-show="!wallets[0]">Loading...</div> <div class="m20v" ng-show="!wallets[0]" translate>Loading...</div>
<ul class="wallet-selection wallets" ng-show="wallets[0]"> <ul class="wallet-selection wallets" ng-show="wallets[0]">
<li ng-repeat="item in wallets track by $index" class="nav-item" ng-show="+item.balanceInfo.totalBalanceBTC > 0" ng-click="ok(item)"> <li ng-repeat="item in wallets track by $index" class="nav-item" ng-show="+item.balanceInfo.totalBalanceBTC > 0" ng-click="ok(item)">
<div class="col1"> <div class="col1">

View File

@ -1,7 +1,7 @@
<div class="backup" ng-controller="MoreController"> <div class="backup" ng-controller="MoreController">
<div class="row show-for-large-up"> <div class="row show-for-large-up">
<div class="large-12 medium-12 small-12 columns"> <div class="large-12 medium-12 small-12 columns">
<h1>{{$root.title}}</h1> <h1>{{$root.title|translate}}</h1>
</div> </div>
</div> </div>
<form name="settingsForm"> <form name="settingsForm">
@ -24,32 +24,32 @@
</form> </form>
<div class="row"> <div class="row">
<div class="large-8 columns" ng-init="isComplete = wallet.isComplete(); networkName = wallet.getNetworkName()"> <div class="large-8 columns" ng-init="isComplete = wallet.isComplete(); networkName = wallet.getNetworkName()">
<h4>Wallet info</h4> <h4 translate>Wallet info</h4>
<table> <table>
<tr> <tr>
<td><strong>Name:</strong></td> <td><strong translate>Name:</strong></td>
<td>{{wallet.name || wallet.id }}</td> <td>{{wallet.name || wallet.id }}</td>
</tr> </tr>
<tr> <tr>
<td><strong>Status:</strong></td> <td><strong translate>Status:</strong></td>
<td>{{isComplete ? 'Complete' : 'Waiting for copayers...'}}</td> <td>{{isComplete ? 'Complete' : 'Waiting for copayers...'}}</td>
</tr> </tr>
<tr> <tr>
<td><strong>Type:</strong></td> <td><strong translate>Type:</strong></td>
<td>{{wallet.requiredCopayers}} of {{wallet.totalCopayers}} - {{networkName}}</td> <td>{{wallet.requiredCopayers}} of {{wallet.totalCopayers}} - {{networkName}}</td>
</tr> </tr>
<tr> <tr>
<td><strong>Balance:</strong></td> <td><strong translate>Balance:</strong></td>
<td><span ng-if="isComplete">{{wallet.balanceInfo.totalBalance || 0}} {{wallet.settings.unitName}}</span></td> <td><span ng-if="isComplete">{{wallet.balanceInfo.totalBalance || 0}} {{wallet.settings.unitName}}</span></td>
</tr> </tr>
<tr> <tr>
<td><strong>Aprox. size:</strong></td> <td><strong translate>Aprox. size:</strong></td>
<td>{{wallet.kb}} kB <span ng-if="wallet.usage">({{wallet.usage}}%)</span></td> <td>{{wallet.kb}} kB <span ng-if="wallet.usage">({{wallet.usage}}%)</span></td>
</tr> </tr>
</table> </table>
</div> </div>
<div class="large-4 columns" ng-if="$root.wallet.isShared()"> <div class="large-4 columns" ng-if="$root.wallet.isShared()">
<h4>Copayers</h4> <h4 translate>Copayers</h4>
<div class="panel oh"> <div class="panel oh">
<div ng-include="'views/includes/copayers.html'"></div> <div ng-include="'views/includes/copayers.html'"></div>
</div> </div>
@ -59,29 +59,33 @@
<div class="row" ng-show="!backupWalletPlainText && !error"> <div class="row" ng-show="!backupWalletPlainText && !error">
<div class="large-8 medium-12 small-12 columns"> <div class="large-8 medium-12 small-12 columns">
<button class="primary expand" ng-click="downloadWalletBackup()" ng-disabled="loading" <button class="primary expand" ng-click="downloadWalletBackup()" ng-disabled="loading"
ng-show="!isSafari && !isCordova"><i class="fi-download"></i> Download backup</button> ng-show="!isSafari && !isCordova"><i class="fi-download"></i>
<span translate>Download backup</span></button>
<button class="primary expand" ng-click="viewWalletBackup()" ng-disabled="loading" <button class="primary expand" ng-click="viewWalletBackup()" ng-disabled="loading"
ng-show="isSafari && !isCordova"><i class="fi-eye"></i> View backup</button> ng-show="isSafari && !isCordova"><i class="fi-eye"></i>
<span translate>View backup</span></button>
<div ng-show="isCordova"> <div ng-show="isCordova">
<h4>Backup options</h4> <h4 translate>Backup options</h4>
<button class="primary expand" <button class="primary expand"
ng-click="copyWalletBackup()"><i class="fi-clipboard-pencil"></i> Copy to clipboard</button> ng-click="copyWalletBackup()"><i class="fi-clipboard-pencil"></i>
<span translate>Copy to clipboard</span></button>
<button class="primary expand" <button class="primary expand"
ng-click="sendWalletBackup()"><i class="fi-mail"></i> Send by email</button> ng-click="sendWalletBackup()"><i class="fi-mail"></i>
<span translate>Send by email</span></button>
</div> </div>
</div> </div>
</div> </div>
<div class="row m20b" ng-show="backupWalletPlainText"> <div class="row m20b" ng-show="backupWalletPlainText">
<div class="large-12 columns"> <div class="large-12 columns">
<h3>Copy backup in a safe place</h3> <h3 translate>Copy backup in a safe place</h3>
<div class="input"> <div class="input">
<textarea class="show-for-large-up" readonly rows="7">{{backupWalletPlainText}}</textarea> <textarea class="show-for-large-up" readonly rows="7">{{backupWalletPlainText}}</textarea>
<textarea class="hide-for-large-up" rows="12">{{backupWalletPlainText}}</textarea> <textarea class="hide-for-large-up" rows="12">{{backupWalletPlainText}}</textarea>
</div> </div>
<div translate class="size-12 text-gray text-right"> <div class="size-12 text-gray text-right">
<i class="icon-compose"></i> <i class="icon-compose"></i>
Copy this text as it is in a safe place (notepad or email) <span translate>Copy this text as it is in a safe place (notepad or email)</span>
</div> </div>
</div> </div>
</div> </div>
@ -119,15 +123,15 @@
</a> </a>
</div> </div>
<div class="text-center" ng-show="confirmDelete"> <div class="text-center" ng-show="confirmDelete">
<h2>Are you sure you want to delete this wallet?</h2> <h2 translate>Are you sure you want to delete this wallet?</h2>
<div class="row"> <div class="row">
<div class="large-6 medium-6 small-6 columns"> <div class="large-6 medium-6 small-6 columns">
<button class="gray" ng-disabled="loading" <button class="gray" ng-disabled="loading"
ng-click="confirmDelete=!confirmDelete">Cancel</button> ng-click="confirmDelete=!confirmDelete" translate>Cancel</button>
</div> </div>
<div class="large-6 medium-6 small-6 columns"> <div class="large-6 medium-6 small-6 columns">
<button class="warning" ng-disabled="loading" ng-click="deleteWallet()"> <button class="warning" ng-disabled="loading" ng-click="deleteWallet()">
<i class="fi-trash"></i> Delete <i class="fi-trash"></i> <span translate>Delete</span>
</button> </button>
</div> </div>
</div> </div>
@ -149,7 +153,7 @@
<textarea>{{priv}}</textarea> <textarea>{{priv}}</textarea>
<span ng-if="isCordova" class="button outline dark-gray tiny" <span ng-if="isCordova" class="button outline dark-gray tiny"
ng-click="copyText(priv)"> ng-click="copyText(priv)">
<i class="fi-clipboard-pencil"></i> Copy to clipboard <i class="fi-clipboard-pencil"></i> <span translate>Copy to clipboard</span>
</span> </span>
</div> </div>
</div> </div>
@ -203,7 +207,7 @@
<textarea>{{secret}}</textarea> <textarea>{{secret}}</textarea>
<span ng-if="isCordova" class="button outline dark-gray tiny" <span ng-if="isCordova" class="button outline dark-gray tiny"
ng-click="copyText(secret)"> ng-click="copyText(secret)">
<i class="fi-clipboard-pencil"></i> Copy to clipboard <i class="fi-clipboard-pencil"></i> <span translate>Copy to clipboard</span>
</span> </span>
</div> </div>
</div> </div>

View File

@ -14,9 +14,13 @@
</a> </a>
</div> </div>
<div class="large-10 medium-10 columns"> <div class="large-10 medium-10 columns">
<h2>Profile <span class="size-12 text-warning" ng-if="$root.iden.backupNeeded"> [ Needs Backup ]</span></h2> <h2>
<span translate class="text-gray">It's important to backup your profile so that you can recover it in case <span translate>Profile</span>
of disaster. The backup will include all your profile's wallets</span> <span class="size-12 text-warning" ng-if="$root.iden.backupNeeded">
[ <span translate>Needs Backup</span> ]
</span>
</h2>
<span translate class="text-gray">It's important to backup your profile so that you can recover it in case of disaster. The backup will include all your profile's wallets</span>
</div> </div>
</div> </div>
</div> </div>
@ -26,29 +30,33 @@
<div class="row" ng-show="!backupProfilePlainText"> <div class="row" ng-show="!backupProfilePlainText">
<div class="large-12 columns"> <div class="large-12 columns">
<button class="primary expand" ng-click="downloadProfileBackup()" ng-disabled="loading" <button class="primary expand" ng-click="downloadProfileBackup()" ng-disabled="loading"
ng-show="!isSafari && !isCordova"><i class="fi-download"></i> Download backup</button> ng-show="!isSafari && !isCordova"><i class="fi-download"></i>
<span translate>Download backup</span></button>
<button class="primary expand" ng-click="viewProfileBackup()" ng-disabled="loading" <button class="primary expand" ng-click="viewProfileBackup()" ng-disabled="loading"
ng-show="isSafari && !isCordova"><i class="fi-eye"></i> View backup</button> ng-show="isSafari && !isCordova"><i class="fi-eye"></i>
<span translate>View backup</span></button>
<div ng-show="isCordova"> <div ng-show="isCordova">
<h4>Backup options</h4> <h4 translate>Backup options</h4>
<button class="primary expand" <button class="primary expand"
ng-click="copyProfileBackup()"><i class="fi-clipboard-pencil"></i> Copy to clipboard</button> ng-click="copyProfileBackup()"><i class="fi-clipboard-pencil"></i>
<span translate>Copy to clipboard</span></button>
<button class="primary expand" <button class="primary expand"
ng-click="sendProfileBackup()"><i class="fi-mail"></i> Send by email</button> ng-click="sendProfileBackup()"><i class="fi-mail"></i>
<span translate>Send by email</span></button>
</div> </div>
</div> </div>
</div> </div>
<div class="row m20b" ng-show="backupProfilePlainText"> <div class="row m20b" ng-show="backupProfilePlainText">
<div class="large-12 columns"> <div class="large-12 columns">
<h3>Copy backup in a safe place</h3> <h3 translate>Copy backup in a safe place</h3>
<div class="input"> <div class="input">
<textarea class="show-for-large-up" readonly rows="5">{{backupProfilePlainText}}</textarea> <textarea class="show-for-large-up" readonly rows="5">{{backupProfilePlainText}}</textarea>
<textarea class="hide-for-large-up" rows="5">{{backupProfilePlainText}}</textarea> <textarea class="hide-for-large-up" rows="5">{{backupProfilePlainText}}</textarea>
</div> </div>
<div translate class="size-12 text-gray text-right"> <div class="size-12 text-gray text-right">
<i class="icon-compose"></i> <i class="icon-compose"></i>
Copy this text as it is in a safe place (notepad or email) <span translate>Copy this text as it is in a safe place (notepad or email)</span>
</div> </div>
</div> </div>
</div> </div>
@ -58,11 +66,12 @@
<div class="row size-12 m20b"> <div class="row size-12 m20b">
<div class="large-12 columns"> <div class="large-12 columns">
<div ng-if="perItem"> <div ng-if="perItem" translate>
Your current server usage quotas are: <b>{{perItem}}kB</b> per wallet and up to <b>{{nrWallets}}</b> wallets. Your current server usage quotas are: <b>{{perItem}}kB</b> per wallet and up to <b>{{nrWallets}}</b> wallets.
</div> </div>
<div ng-if="$root.needsEmailConfirmation" class="m10t"> <div ng-if="$root.needsEmailConfirmation" class="m10t">
<i class="fi-alert"></i> Confirm your email address to increase storage usage limits. <i class="fi-alert"></i>
<span translate>Confirm your email address to increase storage usage limits.</span>
</div> </div>
</div> </div>
</div> </div>
@ -95,15 +104,15 @@
</a> </a>
</div> </div>
<div class="text-center" ng-show="confirmDelete"> <div class="text-center" ng-show="confirmDelete">
<h2>Are you sure you want to delete this profile?</h2> <h2 translate>Are you sure you want to delete this profile?</h2>
<div class="row"> <div class="row">
<div class="large-6 medium-6 small-6 columns"> <div class="large-6 medium-6 small-6 columns">
<button class="gray" ng-disabled="loading" <button class="gray" ng-disabled="loading"
ng-click="confirmDelete=!confirmDelete">Cancel</button> ng-click="confirmDelete=!confirmDelete" translate>Cancel</button>
</div> </div>
<div class="large-6 medium-6 small-6 columns"> <div class="large-6 medium-6 small-6 columns">
<button class="warning" ng-disabled="loading" ng-click="deleteProfile()"> <button class="warning" ng-disabled="loading" ng-click="deleteProfile()">
<i class="fi-trash"></i> Delete <i class="fi-trash"></i> <span translate>Delete</span>
</button> </button>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
<div class="addresses" ng-controller="ReceiveController" ng-init="init()"> <div class="addresses" ng-controller="ReceiveController" ng-init="init()">
<div class="row"> <div class="row">
<div class="large-12 medium-12 small-12 columns"> <div class="large-12 medium-12 small-12 columns">
<h1 class="show-for-large-up">{{$root.title}}</h1> <h1 class="show-for-large-up">{{$root.title|translate}}</h1>
</div> </div>
</div> </div>
@ -19,10 +19,11 @@
<div class="m10t text-center" ng-show="isCordova"> <div class="m10t text-center" ng-show="isCordova">
<span class="button outline dark-gray tiny" <span class="button outline dark-gray tiny"
ng-click="shareAddress(addr)"> ng-click="shareAddress(addr)">
<i class="fi-share"></i> Share address <i class="fi-share"></i>
<span translate>Share address</span>
</span> </span>
</div> </div>
<div class="line-t size-12"> <div class="line-t size-12" translate>
Share this with anyone to have them send you payments. To protect your privacy, new addresses are generated automatically once you use them. Share this with anyone to have them send you payments. To protect your privacy, new addresses are generated automatically once you use them.
</div> </div>
</div> </div>
@ -58,7 +59,7 @@
</a> </a>
</div> </div>
<div class="large-6 medium-6 small-6 columns text-right"> <div class="large-6 medium-6 small-6 columns text-right">
<a class="button secondary tiny" ng-click="newAddr()" ng-disabled="loading"> <a class="button secondary tiny" ng-click="newAddr()" ng-disabled="loading" translate>
Generate new address Generate new address
</a> </a>
</div> </div>

View File

@ -6,8 +6,14 @@
<i class="fi-info size-42 m10r"></i> <i class="fi-info size-42 m10r"></i>
</div> </div>
<div> <div>
<p class="m0 size-14 text-bold">Available Balance: {{$root.wallet.balanceInfo.availableBalance}} {{$root.wallet.settings.unitName}}</p> <p class="m0 size-14 text-bold">
<span class="size-12 text-gray">{{$root.wallet.balanceInfo.lockedBalance}} {{$root.wallet.settings.unitName}} in pending transactions</span> <span translate>Available Balance</span>:
{{$root.wallet.balanceInfo.availableBalance}} {{$root.wallet.settings.unitName}}
</p>
<span class="size-12 text-gray">
{{$root.wallet.balanceInfo.lockedBalance}} {{$root.wallet.settings.unitName}}
<span translate>in pending transactions</span>
</span>
</div> </div>
</div> </div>
</div> </div>
@ -16,7 +22,7 @@
<div class="large-8 large-centered columns"> <div class="large-8 large-centered columns">
<div class="row show-for-large-up"> <div class="row show-for-large-up">
<div class="large-7 columns"> <div class="large-7 columns">
<h1>{{$root.title}}</h1> <h1>{{$root.title|translate}}</h1>
</div> </div>
<div class="large-5 columns show-for-large-up text-right" <div class="large-5 columns show-for-large-up text-right"
ng-show="(!lockAddress && !_merchantData && !fetchingURL)"> ng-show="(!lockAddress && !_merchantData && !fetchingURL)">
@ -24,7 +30,7 @@
<a class="button radius black tiny m0" ng-click="openScanner()"><i class="fi-camera size-18 vm m5r"></i> Scan QR </a> <a class="button radius black tiny m0" ng-click="openScanner()"><i class="fi-camera size-18 vm m5r"></i> Scan QR </a>
</div> </div>
<div ng-show="showScanner"> <div ng-show="showScanner">
<a translate class="button radius tiny warning m0" ng-click="cancelScanner()"><i class="fi-x size-18"></i> </a> <a class="button radius tiny warning m0" ng-click="cancelScanner()"><i class="fi-x size-18"></i> </a>
</div> </div>
</div> </div>
</div> </div>
@ -32,7 +38,7 @@
<div class="box-icon secondary"> <div class="box-icon secondary">
<i class="fi-bitcoin-circle size-24"></i> <i class="fi-bitcoin-circle size-24"></i>
</div> </div>
<span class="text-secondary size-14"> <span class="text-secondary size-14" translate>
Fetching Payment Information... Fetching Payment Information...
</span> </span>
</div> </div>
@ -65,11 +71,11 @@
</label> </label>
<span ng-hide="sendForm.address.$pristine"> <span ng-hide="sendForm.address.$pristine">
<span translate class="has-error right size-12" ng-show="sendForm.address.$invalid && _address"> <span class="has-error right size-12" ng-show="sendForm.address.$invalid && _address">
<span class="icon-input"> <span class="icon-input">
<i class="fi-x"></i> <i class="fi-x"></i>
</span> </span>
Not valid <span translate>Not valid</span>
</span> </span>
<small class="icon-input right" ng-show="!sendForm.address.$invalid"> <small class="icon-input right" ng-show="!sendForm.address.$invalid">
<i class="fi-check"></i> <i class="fi-check"></i>
@ -101,9 +107,9 @@
<div class="row" ng-init="showAlternative = false" ng-hide="hideAmount"> <div class="row" ng-init="showAlternative = false" ng-hide="hideAmount">
<div class="large-12 medium-12 columns"> <div class="large-12 medium-12 columns">
<div class="m5b right" ng-hide="sendForm.amount.$pristine"> <div class="m5b right" ng-hide="sendForm.amount.$pristine">
<span translate class="has-error right size-12" ng-show="sendForm.amount.$invalid"> <span class="has-error right size-12" ng-show="sendForm.amount.$invalid">
<span class="icon-input"><i class="fi-x"></i></span> <span class="icon-input"><i class="fi-x"></i></span>
Not valid <span translate>Not valid</span>
</span> </span>
<small class="icon-input right" ng-show="!sendForm.amount.$invalid"> <small class="icon-input right" ng-show="!sendForm.amount.$invalid">
<i class="fi-check"></i> <i class="fi-check"></i>
@ -136,21 +142,27 @@
<small translate 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="input"> <div class="input">
<textarea id="comment" ng-disabled="loading" name="comment" ng-if="isShared" placeholder="Leave a private message to your copayers" ng-maxlength="100" ng-model="_comment" ng-focus="formFocus('msg')" ng-blur="formFocus(false)"></textarea> <textarea id="comment" ng-disabled="loading" name="comment" ng-if="isShared"
<textarea id="comment" ng-disabled="loading" name="comment" ng-if="!isShared" placeholder="Add a private comment to identify the transaction" ng-maxlength="100" ng-model="_comment" ng-focus="formFocus('msg')" ng-blur="formFocus(false)"></textarea> placeholder="{{'Leave a private message to your copayers'|translate}}"
ng-maxlength="100" ng-model="_comment" ng-focus="formFocus('msg')"
ng-blur="formFocus(false)"></textarea>
<textarea id="comment" ng-disabled="loading" name="comment" ng-if="!isShared"
placeholder="{{'Add a private comment to identify the transaction'|translate}}"
ng-maxlength="100" ng-model="_comment" ng-focus="formFocus('msg')"
ng-blur="formFocus(false)"></textarea>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="large-6 medium-6 small-12 columns"> <div class="large-6 medium-6 small-12 columns">
<button type="submit" class="button primary expand" ng-disabled="sendForm.$invalid || loading"> <button type="submit" class="button primary expand" ng-disabled="sendForm.$invalid || loading" translate>
Send Send
</button> </button>
</div> </div>
<div class="large-4 medium-4 small-12 columns text-right"> <div class="large-4 medium-4 small-12 columns text-right">
<a ng-click="resetForm()" class="button expand warning" <a ng-click="resetForm()" class="button expand warning"
ng-show="(_merchantData || lockAddress) && !loading">Cancel</a> ng-show="(_merchantData || lockAddress) && !loading" translate>Cancel</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,5 +1,5 @@
<div class="settings row" ng-controller="SettingsController"> <div class="settings row" ng-controller="SettingsController">
<h1 class="hide-for-small-only">{{$root.title}}</h1> <h1 class="hide-for-small-only">{{$root.title|translate}}</h1>
<div class="large-5 large-centered medium-7 medium-centered columns"> <div class="large-5 large-centered medium-7 medium-centered columns">
<div class="logo-setup show-for-large-up" id="top"> <div class="logo-setup show-for-large-up" id="top">
<img src="img/logo-negative-beta.svg" alt="Copay" width="100"> <img src="img/logo-negative-beta.svg" alt="Copay" width="100">
@ -19,9 +19,9 @@
<legend translate>Insight API server</legend> <legend translate>Insight API server</legend>
<div class="row collapse"> <div class="row collapse">
<label class="left" for="insightLivenet">Livenet</label> <label class="left" for="insightLivenet">Livenet</label>
<div translate class="has-error right size-12" ng-show="settingsForm.insightLivenet.$invalid"> <div class="has-error right size-12" ng-show="settingsForm.insightLivenet.$invalid">
<span class="icon-input"><i class="fi-x"></i></span> <span class="icon-input"><i class="fi-x"></i></span>
Not valid <span translate>Not valid</span>
</div> </div>
</div> </div>
<div class="input"> <div class="input">
@ -30,38 +30,33 @@
<div class="row collapse"> <div class="row collapse">
<label class="left" for="insightTestnet">Testnet</label> <label class="left" for="insightTestnet">Testnet</label>
<div translate class="has-error right size-12" ng-show="settingsForm.insightTestnet.$invalid"> <div class="has-error right size-12" ng-show="settingsForm.insightTestnet.$invalid">
<span class="icon-input"><i class="fi-x"></i></span> <span class="icon-input"><i class="fi-x"></i></span>
Not valid <span translate>Not valid</span>
</div> </div>
</div> </div>
<div class="input"> <div class="input">
<input type="text" ng-model="insightTestnet" class="form-control" name="insightTestnet" valid-url required> <input type="text" ng-model="insightTestnet" class="form-control" name="insightTestnet" valid-url required>
</div> </div>
<small translate class="text-gray"> <small class="text-gray">
Insight API server is open-source software. You can run your own instances, check <span translate>Insight API server is open-source software. You can run your own instances, check</span>
<a href <a href
ng-click="$root.openExternalLink('https://insight.is')">Insight API Homepage</a> ng-click="$root.openExternalLink('https://insight.is')">Insight API Homepage</a>
</small> </small>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend translate>Storage</legend> <legend translate>Storage</legend>
<label for="insightTestnet">Read and Store Profiles:</label> <label for="insightTestnet" translate>Read and Store Profiles:</label>
<select class="form-control" ng-model="selectedStorage" ng-options="o.name for o in availableStorages" required> <select class="form-control" ng-model="selectedStorage" ng-options="o.name for o in availableStorages" required>
</select> </select>
<small translate class="text-gray"> <small class="text-gray">
Wallets and profiles are stored encrypted using your password as a key. You can store the encrypted data locally, on this device, or remotely on the cloud (Insight Server). <span translate>Wallets and profiles are stored encrypted using your password as a key. You can store the encrypted data locally, on this device, or remotely on the cloud (Insight Server).</span>
<a href <a translate href
ng-click="$root.openExternalLink('https://github.com/bitpay/copay/tree/master/js/plugins')"> ng-click="$root.openExternalLink('https://github.com/bitpay/copay/tree/master/js/plugins')">
More pluggins are welcomed!</a> More pluggins are welcomed!</a>
</small> </small>
</fieldset> </fieldset>
<fieldset>
<legend translate>Language</legend>
<select class="form-control" ng-model="selectedLanguage" ng-options="o.name for o in availableLanguages" required>
</select>
</fieldset>
<fieldset> <fieldset>
<legend translate>Log level</legend> <legend translate>Log level</legend>
<select class="form-control" ng-model="selectedLogLevel" ng-options="o.name for o in availableLogLevels" required> <select class="form-control" ng-model="selectedLogLevel" ng-options="o.name for o in availableLogLevels" required>