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/socket.io-client/socket.io.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'
},

View File

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

View File

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

View File

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

View File

@ -139,9 +139,20 @@ angular
$idleProvider.warningDuration(40); // 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
if (!isCordova) {

View File

@ -9,9 +9,6 @@ angular.module('copayApp.services').factory('configService', function($timeout,
if (opts.logLevel)
copay.logger.setLevel(opts.logLevel);
if (opts.defaultLanguage)
gettextCatalog.currentLanguage = opts.defaultLanguage;
// Set current 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">
<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">
<a class="db oh panel" title="Create new wallet" ng-click="$root.go('create')">
<i class="fi-plus"></i>
<span>Create new wallet</span>
<span translate>Create new wallet</span>
</a>
</div>
<div class="large-4 small-12 columns">
<a class="db oh panel join" title="Join shared wallet" ng-click="$root.go('join')">
<i class="icon-people"></i>
<span>Join shared wallet</span>
<span translate>Join shared wallet</span>
</a>
</div>
<div class="large-4 small-12 columns">
<a class="db oh panel import" title="Import wallet" ng-click="$root.go('import')">
<i class="icon-upload"></i>
<span>Import wallet</span>
<span translate>Import wallet</span>
</a>
</div>
</div>

View File

@ -6,7 +6,7 @@
<div class="!$root.starting">
<div class="row">
<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>
@ -19,7 +19,7 @@
<div class="box-icon error">
<i class="fi-alert size-24"></i>
</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.
</span>
</div>
@ -35,22 +35,23 @@
<div class="text-center m10t" ng-if="isCordova">
<span class="button outline dark-gray tiny"
ng-click="shareSecret(secret)">
<i class="fi-share"></i> Share secret
<i class="fi-share"></i>
<span translate>Share secret</span>
</span>
</div>
<div class="size-10 line-t text-center">
<h2 class="m10t">{{$root.wallet.getName()}}</h2>
<span class="text-gray">
[{{$root.wallet.requiredCopayers}} of {{$root.wallet.totalCopayers}} ]
</span>
<span ng-if="$root.wallet.isTestnet()"> in TESTNET</span>
[{{$root.wallet.requiredCopayers}} <span translate>of</span> {{$root.wallet.totalCopayers}} ]
</span>
<span ng-if="$root.wallet.isTestnet()" translate>in TESTNET</span>
</div>
</div>
</div>
</div>
<div class="large-4 columns">
<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-if="!$root.wallet.isComplete()" class="m15t">
<div class="left m10r" ng-include="'views/includes/photo.html'"></div>
@ -67,18 +68,18 @@
<div class="row">
<div class="large-12 columns">
<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>
<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="large-6 medium-6 small-6 columns">
<button class="gray" ng-disabled="loading"
ng-click="confirmDelete=!confirmDelete">No</button>
ng-click="confirmDelete=!confirmDelete" translate>No</button>
</div>
<div class="large-6 medium-6 small-6 columns">
<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>
</div>
</div>

View File

@ -62,24 +62,28 @@
<label for="network-name">
<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">
Use test network
<span translate>Use test network</span>
</label>
<label for="ext-master">Master extended private key
<input id="ext-master"
<label for="ext-master">
<span translate>Master extended private key</span>
<input id="ext-master"
type="text"
placeholder="BIP32 master extended private key (hex)"
placeholder="{{'BIP32 master extended private key (hex)'|translate}}"
name="private" ng-model="private">
</div>
</div>
<div class="text-right">
<button translate type="submit" class="button primary expand m0" ng-disabled="setupForm.$invalid">
Create {{requiredCopayers}}-of-{{totalCopayers}} wallet
<button type="submit" class="button primary expand m0" ng-disabled="setupForm.$invalid">
<span translate>Create</span>
{{requiredCopayers}}-<span translate>of</span>-{{totalCopayers}} <span translate>wallet</span>
</button>
</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>

View File

@ -26,8 +26,8 @@
<div class="clipo" ng-if="!useLocalstorage && !hideForWP">
<img src="img/clipo-signup2.png" alt="clipo" width="373">
</div>
<h2 ng-if="!useLocalstorage" ng-hide="hideForWP"> 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 in the cloud</h2>
<h2 ng-if="useLocalstorage" ng-hide="hideForWP" translate>Creating on this device</h2>
</div>
<div ng-show="createStep == 'pass'">
@ -35,8 +35,8 @@
<img src="img/clipo-signup3.png" alt="clipo" width="380">
</div>
<h2 ng-if="useLocalstorage" ng-hide="hideForWP"> 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 on this device</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>
@ -54,51 +54,53 @@
<tabset>
<tab style="width: 50%;" select="selectStorage('remote')">
<tab-heading>
<span>In the Cloud </span>
<span translate>In the Cloud</span>
<br>
<span class="size-10 text-gray">( Recommended )</span>
<span class="size-10 text-gray">
(<span translate>Recommended</span>)
</span>
</tab-heading>
<div class="content-item">
<div class="bg-circle"><i class="icon-wallet"></i>
</div>
<span class="text-gray">Access your wallets anywhere</span>
<span class="text-gray" translate>Access your wallets anywhere</span>
</div>
<div class="content-item">
<div class="bg-circle"><i class="icon-download"></i>
</div>
<span class="text-gray">Backups managed by the server</span>
<span class="text-gray" translate>Backups managed by the server</span>
</div>
<div class="content-item line-none">
<div class="bg-circle"><i class="icon-email"></i>
</div>
<span class="text-gray">Email address confirmation needed</span>
<span class="text-gray" translate>Email address confirmation needed</span>
</div>
</tab>
<tab style="width: 50%;" select="selectStorage('local')">
<tab-heading>
<div class="m5t">On this Device</div>
<div class="m5t" translate>On this Device</div>
</tab-heading>
<div class="content-item">
<div class="bg-circle"><i class="icon-locked"></i>
</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 class="content-item">
<div class="bg-circle"><i class="icon-person"></i>
</div>
<span class="text-gray">No email required</span>
<span class="text-gray" translate>No email required</span>
</div>
<div class="content-item line-none">
<div class="bg-circle"><i class="icon-download"></i>
</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>
</tab>
</tabset>
<button translate class="button primary radius expand m0" ng-click="goToEmail()">
<span ng-if="!useLocalstorage"> Create in the cloud</span>
<span ng-if="useLocalstorage"> Create on this device</span>
<button class="button primary radius expand m0" ng-click="goToEmail()">
<span ng-if="!useLocalstorage" translate>Create in the cloud</span>
<span ng-if="useLocalstorage" translate>Create on this device</span>
</button>
<div class="box-setup-footer">
@ -110,7 +112,7 @@
</div>
<div class="right">
<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
</a>
</div>
@ -119,13 +121,14 @@
<form ng-show="createStep == 'email'" name="emailForm" ng-submit="setEmailOrUsername(emailForm)" novalidate>
<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>
<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">
<i class="fi-x"></i>
Not valid
<span translate>Not valid</span>
</span>
<span ng-show="!emailForm.email.$invalid &&
!emailForm.email.$pristine"><i class="fi-check"></i>
@ -134,7 +137,8 @@
</div>
<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>
</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()">
<i class="icon-locked"></i>
<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">
<i class="fi-x"></i>
{{'Passwords must match'|translate}}
@ -213,7 +217,7 @@
<img src="img/clipo-pin.png" alt="clipo" width="380">
</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-icon error">
<i class="fi-x size-24"></i>

View File

@ -58,3 +58,5 @@
{{'pending transaction proposals'|translate}}
{{'Funds received!'|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="row">
<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">
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
<span translate>Loading...</span>

View File

@ -11,8 +11,8 @@
<div class="row" ng-show="showDisclaimer">
<div class="large-8 medium-10 small-12 large-centered medium-centered columns">
<h1 class="text-white text-center">Disclaimer</h1>
<p class="text-white">
<h1 class="text-white text-center" translate>Disclaimer</h1>
<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
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
@ -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
time.
</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>
@ -51,17 +53,15 @@
<i class="size-36 fi-check m10r"></i>
</div>
<div class="size-14">
<h3>
Your email was confimed!
</h3>
Please sign in to access your wallets
<h3 translate>Your email was confimed!</h3>
<span translate>Please sign in to access your wallets</span>
</div>
</div>
<div ng-if='askForPin || ($root.hasPin && !$root.iden)'>
<h2 ng-show="$root.hasPin && !$root.iden"> Enter PIN </h2>
<h2 ng-show="askForPin && askForPin !=2"> Set up a PIN </h2>
<h2 ng-show="askForPin == 2">Repeat PIN</h2>
<h2 ng-show="$root.hasPin && !$root.iden" translate>Enter PIN</h2>
<h2 ng-show="askForPin && askForPin !=2" translate>Set up a PIN</h2>
<h2 ng-show="askForPin == 2" translate>Repeat PIN</h2>
<div class="box-notification" ng-show="error">
<div class="box-icon error">
<i class="fi-x size-24"></i>
@ -81,15 +81,15 @@
<div class="left">
<i class="size-36 fi-alert m10r"></i>
</div>
<b>Copay now needs a profile to access wallets.</b>
You can import your current wallets after
<a class="text-white" ng-click="$root.go('/createProfile')">creating your profile</a>
<b translate>Copay now needs a profile to access wallets.</b>
<span translate>You can import your current wallets after</span>
<a class="text-white" ng-click="$root.go('/createProfile')" translate>creating your profile</a>
</div>
<div class="p10 bg-success m20b text-white" ng-show="pendingPayment">
<div class="left">
<i class="size-36 m10r"></i>
</div>
<div class="size-14">
<div class="size-14" translate>
Please sign in to make the payment
</div>
</div>
@ -104,27 +104,30 @@
</div>
<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>
</div>
<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>
</div>
<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>
</div>
<button translate type="submit" class="button primary radius expand m0"
<button type="submit" class="button primary radius expand m0"
ng-disabled="loginForm.$invalid">
Sign in
{{'Sign in'|translate}}
</button>
</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'.
</div>

View File

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

View File

@ -6,7 +6,7 @@
<div ng-show="!$root.starting">
<div class="row hide-for-large-up">
<div class="large-12 medium-12 small-12 columns">
<h1>{{$root.title}}</h1>
<h1>{{$root.title|translate}}</h1>
</div>
</div>
<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>
</label>
<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>
</div>

View File

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

View File

@ -3,7 +3,7 @@
<a ng-click="$root.go(item.link)" ng-class="{active: isActive(item)}">
<i class="size-36 {{item.icon}} db"></i>
<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>
</div>
</a>

View File

@ -1,7 +1,7 @@
<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>
<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>
<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>
@ -30,8 +30,10 @@
<ul ng-show="hoverMenu" class="size-16 text-gray" ng-class="{'hover': hoverMenu}">
<li>
<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>
</li>
<i class="icon-person size-18 m10r"></i> {{'My Profile'|translate}}<span class="size-10 text-warning"
ng-if="!$root.needsEmailConfirmation && $root.iden.backupNeeded">
[ <span translate>Needs Backup</span> ]</span></a>
</li>
<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="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>
</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>

View File

@ -17,7 +17,7 @@
<div class="pin-button-bar">
<a class="pin-button" ng-click="skip()">
<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 class="pin-button" ng-click="press(0)">0</a>
<a class="pin-button" ng-click="clear()"><i class="fi-arrow-left"></i></a>

View File

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

View File

@ -1,7 +1,7 @@
<div ng-init="init()">
<header>
<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 ng-show="$root.wallet">
<div class="col1">
@ -43,7 +43,9 @@
<div class="col2">
<a href class="size-12 wallet-item">
<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>
</div>
</li>
@ -53,8 +55,8 @@
<i class="fi-plus size-21"></i>
</div>
<div class="col2">
<span class="tu text-bold">Add wallet</span> <br>
<span class="text-light">Create, join or import</span>
<span class="tu text-bold" translate>Add wallet</span> <br>
<span class="text-light" translate>Create, join or import</span>
</div>
</div>
</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()]">
<span class="tx-proposal size-12 m5r"> <i ng-class="{'active':pendingForUs}" class="fi-arrow-right"></i> </span>
<span class="text-gray">
To:
<span translate>To</span>:
<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-unlock"></i> {{tx.merchant.domain}}</span>

View File

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

View File

@ -1,16 +1,18 @@
<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>
<div class="modal-mobile">
<h1 ng-show="!showForm">Address Book</h1>
<h1 ng-show="showForm">Add a new entry</h1>
<p translate class="text-gray m15b" ng-show="!showForm && !hasEntry()">Empty. Create an alias for your addresses</p>
<h1 ng-show="!showForm" translate>Address Book</h1>
<h1 ng-show="showForm" translate>Add a new entry</h1>
<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-icon success">
<i class="size-24 fi-check"></i>
</div>
<span class="size-14 text-success">
{{success}}
{{success|translate}}
</span>
</div>
<table class="addressbook line-t" ng-show="!showForm && hasEntry()">
@ -19,7 +21,7 @@
<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" translate>Date</th>
<th class="show-for-large-up">Visible</th>
<th class="show-for-large-up" translate>Visible</th>
</tr>
</thead>
<tbody>
@ -49,16 +51,16 @@
<i class="size-24 fi-x"></i>
</div>
<span class="size-14 text-warning">
{{error}}
{{error|translate}}
</span>
</div>
<div class="row collapse">
<label for="newaddress" class="left"><span translate>Address</span>
<small translate ng-hide="!addressBookForm.newaddress.$pristine || newaddress">Required</small>
</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>
Not valid
<span translate>Not valid</span>
</span>
<small class="icon-input right" ng-show="!addressBookForm.newaddress.$invalid && newaddress"><i class="fi-check"></i></small>
</div>
@ -80,7 +82,7 @@
ng-click="submitAddressBook(addressBookForm)">{{'Add'|translate}}</button>
</form>
<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 class="close-reveal-modal show-for-large-up" ng-click="close()"><i class="fi-x size-18"></i></a>
</div>

View File

@ -14,23 +14,23 @@
<div class="line-b m10v"></div>
<div class="ellipsis m10v">
<i>To:</i> {{md.domain}}
<i translate>To:</i> {{md.domain}}
</div>
<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-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 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}}
</div>
<div ng-if="md.expirationDate" class="m10v">
<i>Expires:</i> {{md.expirationDate | amTimeAgo }}
<i translate>Expires:</i> {{md.expirationDate | amTimeAgo }}
</div>
</div>

View File

@ -1,5 +1,5 @@
<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>
<div class="modal-mobile text-center" ng-init="addr = address.address">
<qrcode size="220" data="{{addr}}"></qrcode>
@ -19,7 +19,7 @@
</div>
<div class="text-center m10t" ng-if="isCordova">
<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>
</div>
<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">
<span ng-click="cancel()" class="p10 text-white">Close</span>
<span ng-click="cancel()" class="p10 text-white" translate>Close</span>
</nav>
<div class="modal-mobile">
<div class="header-modal text-center">
<div ng-if="btx.addressTo" class="m10v">
<span class="ellipsis">
<i>To:</i>
<i translate>To:</i>
<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-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>
<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>
</div>

View File

@ -11,10 +11,10 @@
<div class="text-center m10v">
{{statusStr}}
{{statusStr|translate}}
</div>
<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>

View File

@ -1,5 +1,5 @@
<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>
<div class="modal-mobile">
<div class="header-modal">
@ -8,7 +8,7 @@
<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="text-gray">
To:
<span translate>To:</span>
<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-unlock"></i> {{tx.merchant.domain}}</span>
@ -44,7 +44,7 @@
<div class="m10v line-b size-14" ng-if="tx.merchant">
<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">
<span><i>Expires</i>: {{tx.merchant.expirationDate | amTimeAgo }}</span>
</div>
@ -55,7 +55,7 @@
</div>
<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]">
<li ng-repeat="cId in registeredCopayerIds"
ng-class="{'bottom-line-copayers':!$last}">
@ -79,7 +79,7 @@
<i class="fi-x size-24"></i>
</div>
<span class="text-warning size-14">
{{error}}
{{error|translate}}
</span>
</div>
@ -119,13 +119,13 @@
<a class="button outline light-gray tiny right"
ng-click="$root.openExternalLink('http://' + getShortNetworkName() + '.insight.is/tx/' +
$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>
<div class="m10t">Transaction sent!</div>
<div class="m10t" translate>Transaction sent!</div>
</div>
<div class="text-center text-warning"
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
</div>
</div>

View File

@ -1,11 +1,11 @@
<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>
<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]">
<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">

View File

@ -1,7 +1,7 @@
<div class="backup" ng-controller="MoreController">
<div class="row show-for-large-up">
<div class="large-12 medium-12 small-12 columns">
<h1>{{$root.title}}</h1>
<h1>{{$root.title|translate}}</h1>
</div>
</div>
<form name="settingsForm">
@ -24,32 +24,32 @@
</form>
<div class="row">
<div class="large-8 columns" ng-init="isComplete = wallet.isComplete(); networkName = wallet.getNetworkName()">
<h4>Wallet info</h4>
<h4 translate>Wallet info</h4>
<table>
<tr>
<td><strong>Name:</strong></td>
<td><strong translate>Name:</strong></td>
<td>{{wallet.name || wallet.id }}</td>
</tr>
<tr>
<td><strong>Status:</strong></td>
<td><strong translate>Status:</strong></td>
<td>{{isComplete ? 'Complete' : 'Waiting for copayers...'}}</td>
</tr>
<tr>
<td><strong>Type:</strong></td>
<td><strong translate>Type:</strong></td>
<td>{{wallet.requiredCopayers}} of {{wallet.totalCopayers}} - {{networkName}}</td>
</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>
</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>
</tr>
</table>
</div>
<div class="large-4 columns" ng-if="$root.wallet.isShared()">
<h4>Copayers</h4>
<h4 translate>Copayers</h4>
<div class="panel oh">
<div ng-include="'views/includes/copayers.html'"></div>
</div>
@ -59,29 +59,33 @@
<div class="row" ng-show="!backupWalletPlainText && !error">
<div class="large-8 medium-12 small-12 columns">
<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"
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">
<h4>Backup options</h4>
<h4 translate>Backup options</h4>
<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"
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 class="row m20b" ng-show="backupWalletPlainText">
<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">
<textarea class="show-for-large-up" readonly rows="7">{{backupWalletPlainText}}</textarea>
<textarea class="hide-for-large-up" rows="12">{{backupWalletPlainText}}</textarea>
</div>
<div translate class="size-12 text-gray text-right">
<div class="size-12 text-gray text-right">
<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>
@ -119,15 +123,15 @@
</a>
</div>
<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="large-6 medium-6 small-6 columns">
<button class="gray" ng-disabled="loading"
ng-click="confirmDelete=!confirmDelete">Cancel</button>
ng-click="confirmDelete=!confirmDelete" translate>Cancel</button>
</div>
<div class="large-6 medium-6 small-6 columns">
<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>
</div>
</div>
@ -149,7 +153,7 @@
<textarea>{{priv}}</textarea>
<span ng-if="isCordova" class="button outline dark-gray tiny"
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>
</div>
</div>
@ -203,7 +207,7 @@
<textarea>{{secret}}</textarea>
<span ng-if="isCordova" class="button outline dark-gray tiny"
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>
</div>
</div>

View File

@ -14,9 +14,13 @@
</a>
</div>
<div class="large-10 medium-10 columns">
<h2>Profile <span class="size-12 text-warning" ng-if="$root.iden.backupNeeded"> [ Needs Backup ]</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>
<h2>
<span translate>Profile</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>
@ -26,29 +30,33 @@
<div class="row" ng-show="!backupProfilePlainText">
<div class="large-12 columns">
<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"
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">
<h4>Backup options</h4>
<h4 translate>Backup options</h4>
<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"
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 class="row m20b" ng-show="backupProfilePlainText">
<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">
<textarea class="show-for-large-up" readonly rows="5">{{backupProfilePlainText}}</textarea>
<textarea class="hide-for-large-up" rows="5">{{backupProfilePlainText}}</textarea>
</div>
<div translate class="size-12 text-gray text-right">
<div class="size-12 text-gray text-right">
<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>
@ -58,11 +66,12 @@
<div class="row size-12 m20b">
<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.
</div>
<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>
@ -95,15 +104,15 @@
</a>
</div>
<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="large-6 medium-6 small-6 columns">
<button class="gray" ng-disabled="loading"
ng-click="confirmDelete=!confirmDelete">Cancel</button>
ng-click="confirmDelete=!confirmDelete" translate>Cancel</button>
</div>
<div class="large-6 medium-6 small-6 columns">
<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>
</div>
</div>

View File

@ -1,7 +1,7 @@
<div class="addresses" ng-controller="ReceiveController" ng-init="init()">
<div class="row">
<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>
@ -19,10 +19,11 @@
<div class="m10t text-center" ng-show="isCordova">
<span class="button outline dark-gray tiny"
ng-click="shareAddress(addr)">
<i class="fi-share"></i> Share address
<i class="fi-share"></i>
<span translate>Share address</span>
</span>
</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.
</div>
</div>
@ -58,7 +59,7 @@
</a>
</div>
<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
</a>
</div>

View File

@ -6,8 +6,14 @@
<i class="fi-info size-42 m10r"></i>
</div>
<div>
<p class="m0 size-14 text-bold">Available Balance: {{$root.wallet.balanceInfo.availableBalance}} {{$root.wallet.settings.unitName}}</p>
<span class="size-12 text-gray">{{$root.wallet.balanceInfo.lockedBalance}} {{$root.wallet.settings.unitName}} in pending transactions</span>
<p class="m0 size-14 text-bold">
<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>
@ -16,7 +22,7 @@
<div class="large-8 large-centered columns">
<div class="row show-for-large-up">
<div class="large-7 columns">
<h1>{{$root.title}}</h1>
<h1>{{$root.title|translate}}</h1>
</div>
<div class="large-5 columns show-for-large-up text-right"
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>
</div>
<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>
@ -32,7 +38,7 @@
<div class="box-icon secondary">
<i class="fi-bitcoin-circle size-24"></i>
</div>
<span class="text-secondary size-14">
<span class="text-secondary size-14" translate>
Fetching Payment Information...
</span>
</div>
@ -65,11 +71,11 @@
</label>
<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">
<i class="fi-x"></i>
</span>
Not valid
<span translate>Not valid</span>
</span>
<small class="icon-input right" ng-show="!sendForm.address.$invalid">
<i class="fi-check"></i>
@ -101,9 +107,9 @@
<div class="row" ng-init="showAlternative = false" ng-hide="hideAmount">
<div class="large-12 medium-12 columns">
<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>
Not valid
<span translate>Not valid</span>
</span>
<small class="icon-input right" ng-show="!sendForm.amount.$invalid">
<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>
</label>
<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" placeholder="Add a private comment to identify the transaction" 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="{{'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 class="row">
<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
</button>
</div>
<div class="large-4 medium-4 small-12 columns text-right">
<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>

View File

@ -1,5 +1,5 @@
<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="logo-setup show-for-large-up" id="top">
<img src="img/logo-negative-beta.svg" alt="Copay" width="100">
@ -19,9 +19,9 @@
<legend translate>Insight API server</legend>
<div class="row collapse">
<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>
Not valid
<span translate>Not valid</span>
</div>
</div>
<div class="input">
@ -30,38 +30,33 @@
<div class="row collapse">
<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>
Not valid
<span translate>Not valid</span>
</div>
</div>
<div class="input">
<input type="text" ng-model="insightTestnet" class="form-control" name="insightTestnet" valid-url required>
</div>
<small translate class="text-gray">
Insight API server is open-source software. You can run your own instances, check
<a href
ng-click="$root.openExternalLink('https://insight.is')">Insight API Homepage</a>
<small class="text-gray">
<span translate>Insight API server is open-source software. You can run your own instances, check</span>
<a href
ng-click="$root.openExternalLink('https://insight.is')">Insight API Homepage</a>
</small>
</fieldset>
<fieldset>
<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>
<small translate 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).
<a href
ng-click="$root.openExternalLink('https://github.com/bitpay/copay/tree/master/js/plugins')">
More pluggins are welcomed!</a>
<small class="text-gray">
<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 translate href
ng-click="$root.openExternalLink('https://github.com/bitpay/copay/tree/master/js/plugins')">
More pluggins are welcomed!</a>
</small>
</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>
<legend translate>Log level</legend>
<select class="form-control" ng-model="selectedLogLevel" ng-options="o.name for o in availableLogLevels" required>