Translation - Configure app (#484)

This commit is contained in:
Tobias 2021-11-16 21:05:45 +01:00 committed by GitHub
commit 0e3c906f3c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 257 additions and 122 deletions

View file

@ -1,14 +1,14 @@
<div class="uk-animation-slide-left-small" uk-grid>
<div class="uk-animation-slide-left-small" uk-grid *transloco="let t">
<div class="uk-width-1-1">
<h2 class="uk-heading-divider">Configure Nault</h2>
<h2 class="uk-heading-divider">{{ 'configure-app.configure-nault' | transloco }}</h2>
<div class="uk-card uk-card-default uk-margin">
<div class="uk-card-header">
<h3 class="uk-card-title">Display Settings</h3>
<h3 class="uk-card-title">{{ 'configure-app.display-settings' | transloco }}</h3>
</div>
<div class="uk-card-body">
<div uk-grid>
<div class="uk-width-1-1">
<div class="uk-form-horizontal">
@ -30,7 +30,7 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label" for="form-horizontal-select">FIAT Currency <span uk-icon="icon: info;" uk-tooltip title="Change the currency pair used when showing fiat values in the application. Select None to hide fiat pairs."></span></label>
<label class="uk-form-label" for="form-horizontal-select">{{ 'configure-app.fiat-currency' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.change-the-currency-pair-used-when-showing-fiat-values')"></span></label>
<div class="uk-form-controls">
<select class="uk-select" [(ngModel)]="selectedCurrency" id="form-horizontal-select">
<option *ngFor="let currency of currencies" [value]="currency.value">{{ currency.name }}</option>
@ -45,7 +45,7 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label" for="form-horizontal-select">Night Mode</label>
<label class="uk-form-label" for="form-horizontal-select">{{ 'configure-app.night-mode' | transloco }}</label>
<div class="uk-form-controls">
<select class="uk-select" [(ngModel)]="selectedNightModeOption" id="form-horizontal-select">
<option *ngFor="let nightModeOption of nightModeOptions" [value]="nightModeOption.value">{{ nightModeOption.name }}</option>
@ -60,7 +60,7 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label" for="form-horizontal-select">Identicons</label>
<label class="uk-form-label" for="form-horizontal-select">{{ 'configure-app.identicons' | transloco }}</label>
<div class="uk-form-controls">
<select class="uk-select" [(ngModel)]="selectedIdenticonOption" id="form-horizontal-select">
<option *ngFor="let identiconOption of identiconOptions" [value]="identiconOption.value">{{ identiconOption.name }}</option>
@ -74,14 +74,14 @@
</div>
</div>
<div class="uk-card-footer uk-text-right@s uk-text-center nlt-button-group">
<button (click)="updateDisplaySettings()" class="uk-button uk-button-primary uk-width-auto@s uk-width-1-1">Update Display Settings</button>
<button (click)="updateDisplaySettings()" class="uk-button uk-button-primary uk-width-auto@s uk-width-1-1">{{ 'configure-app.update-display-settings' | transloco }}</button>
</div>
</div>
<div class="uk-card uk-card-default uk-margin">
<div class="uk-card-header">
<h3 class="uk-card-title">Wallet Settings</h3>
<h3 class="uk-card-title">{{ 'configure-app.wallet-settings' | transloco }}</h3>
</div>
<div class="uk-card-body">
<div uk-grid>
@ -90,7 +90,7 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label">Lock After Inactivity <span uk-icon="icon: info;" uk-tooltip title="Change if your wallet should be locked automatically after you have not interacted with it for a certain period of time"></span></label>
<label class="uk-form-label">{{ 'configure-app.lock-after-inactivity' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.change-if-your-wallet-should-be-locked-automatically-after')"></span></label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1">
@ -107,7 +107,7 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label">Wallet Storage <span uk-icon="icon: info;" uk-tooltip title="Change where your wallet is stored. If you select none, your wallet is reset every time you reload."></span></label>
<label class="uk-form-label">{{ 'configure-app.component.wallet-storage' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.change-where-your-wallet-is-stored-if-you-select-none-your')"></span></label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1">
@ -124,7 +124,7 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label">PoW Source <span uk-icon="icon: info;" uk-tooltip title="Change how Proof of Work for your blocks are generated."></span></label>
<label class="uk-form-label">{{ 'configure-app.pow-source' | transloco }}</label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1">
@ -138,16 +138,16 @@
</div>
</div>
<div class="uk-margin" *ngIf="selectedPoWOption === 'custom'">
<label class="uk-form-label">Work Server <span uk-icon="icon: info;" uk-tooltip title="Path to custom work server application. Localhost such as 127.0.0.1:1234 may not work if using nault.cc. Try the desktop app."></span></label>
<label class="uk-form-label">{{ 'configure-app.work-server' | transloco }}</label>
<div class="uk-form-controls">
<input [(ngModel)]="customWorkServer" class="uk-input uk-margin-small-bottom" type="text" placeholder="http://my-work-server:port">
<span class="uk-text-meta">
This has to be a valid <a href="https://docs.nault.cc/2021/02/13/custom-work-server.html" target="_blank" rel="noopener noreferrer">Nano Work Server</a> endpoint or an API compliant with it.
{{ 'configure-app.this-has-to-be-a-valid-work.1' | transloco }} <a href="https://docs.nault.cc/2021/02/13/custom-work-server.html" target="_blank" rel="noopener noreferrer">{{ 'configure-app.this-has-to-be-a-valid-work.2-link-work' | transloco }}</a> {{ 'configure-app.this-has-to-be-a-valid-work.3' | transloco }}
</span>
</div>
</div>
<div class="uk-margin" *ngIf="selectedPoWOption === 'clientWebGL' || selectedPoWOption === 'clientCPU' || selectedPoWOption === 'custom'">
<label class="uk-form-label">PoW Multiplier <span uk-icon="icon: info;" uk-tooltip title="Optional increased work for transaction priority during network saturation. Overrides both default SEND 1x and RECEIVE 1/64x difficulties."></span></label>
<label class="uk-form-label">{{ 'configure-app.pow-multiplier' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.optional-increased-work-for-transaction-priority-during')"></span></label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1">
@ -164,7 +164,7 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label">Receive Method <span uk-icon="icon: info;" uk-tooltip title="If automatically receiving incoming transactions with the largest amount first or chronological from recorded time. Manual will allow you to pick your own transactions from the receive screen."></span></label>
<label class="uk-form-label">{{ 'configure-app.receive-method' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.if-automatically-receiving-incoming-transactions-with-the')"></span></label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1">
@ -181,13 +181,13 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label">Min. Receive Amount <span uk-icon="icon: info;" uk-tooltip title="Minimum NANO amount to receive. Transactions below this amount will be ignored by the wallet both for receiving and in the transactions list. Set to blank or 0 to accept all transactions."></span></label>
<label class="uk-form-label">{{ 'configure-app.min-receive-amount' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.minimum-nano-amount-to-receive-transactions-below-this')"></span></label>
<div class="uk-form-controls">
<div uk-grid>
<div class="uk-width-1-1">
<div class="uk-inline uk-width-1-1">
<label class="uk-form-icon uk-link-reset uk-link-muted icon-nano-logo" for="form-horizontal-amount"></label>
<input [(ngModel)]="minimumReceive" class="uk-input" style="padding-left: 52px !important;" id="form-horizontal-text4" type="text" placeholder="Leave blank to accept transactions of any amount">
<input [(ngModel)]="minimumReceive" class="uk-input" style="padding-left: 52px !important;" id="form-horizontal-text4" type="text" [placeholder]="t('configure-app.leave-blank-to-accept-transactions-of-any-amount')">
</div>
</div>
@ -201,22 +201,22 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label">Default Representative <span uk-icon="icon: info;" uk-tooltip title="This representative will be used when creating the initial open block on a new account"></span></label>
<label class="uk-form-label">{{ 'configure-app.default-representative' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.this-representative-will-be-used-for-any-new-account')"></span></label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1">
<a class="uk-form-icon uk-form-icon-flip" uk-icon="icon: camera" (click)="openQR('rep1','account')" uk-tooltip title="Scan from QR code"></a>
<input (blur)="validateRepresentative()" (input)="searchRepresentatives()" (focus)="searchRepresentatives()" [(ngModel)]="defaultRepresentative" class="uk-input" [ngClass]="{ 'uk-form-success': repStatus === 2, 'uk-form-danger': repStatus === 0 }" id="form-horizontal-text3" type="text" placeholder="Leave blank to use a recommended one" #repInput>
<a class="uk-form-icon uk-form-icon-flip" uk-icon="icon: camera" (click)="openQR('rep1','account')" uk-tooltip [title]="t('general.scan-qr-code')"></a>
<input (blur)="validateRepresentative()" (input)="searchRepresentatives()" (focus)="searchRepresentatives()" [(ngModel)]="defaultRepresentative" class="uk-input" [ngClass]="{ 'uk-form-success': repStatus === 2, 'uk-form-danger': repStatus === 0 }" id="form-horizontal-text3" type="text" [placeholder]="t('configure-app.leave-blank-to-use-a-recommended-one')" #repInput>
<div *ngIf="(representativeResults$ | async).length" [hidden]="!showRepresentatives" class="nlt-dropdown uk-animation-slide-down-small uk-width-1-1 uk-card uk-card-default uk-card-body uk-position-absolute" style="z-index: 15000">
<ul class="uk-nav uk-nav-default">
<li class="uk-nav-header">Representative List Results</li>
<li class="uk-nav-header">{{ 'representative-search.representative-list-results' | transloco }}</li>
<li class="uk-nav-divider"></li>
<li *ngFor="let rep of representativeResults$ | async">
<a (click)="selectRepresentative(rep.id)">
{{ rep.name }}
<span *ngIf="rep.trusted" class="uk-text-success" style="margin-left: 4px;"><span uk-icon="icon: star;"></span></span>
<span *ngIf="rep.warn" class="uk-text-warning" style="margin-left: 4px;"><span uk-icon="icon: warning;"></span> Avoid</span>
<span *ngIf="rep.warn" class="uk-text-warning" style="margin-left: 4px;"><span uk-icon="icon: warning;"></span> {{ 'general.avoid' | transloco }}</span>
</a>
</li>
</ul>
@ -237,14 +237,14 @@
</div>
</div>
<div class="uk-card-footer uk-text-right@s uk-text-center nlt-button-group">
<button (click)="updateWalletSettings()" class="uk-button uk-button-primary uk-width-auto@s uk-width-1-1">Update Wallet Settings</button>
<button (click)="updateWalletSettings()" class="uk-button uk-button-primary uk-width-auto@s uk-width-1-1">{{ 'configure-app.update-wallet-settings' | transloco }}</button>
</div>
</div>
<div class="uk-card uk-card-default uk-margin">
<div class="uk-card-header" id="server-settings">
<h3 class="uk-card-title">Server Settings</h3>
<h3 class="uk-card-title">{{ 'configure-app.server-settings' | transloco }}</h3>
</div>
<div class="uk-card-body">
<div uk-grid>
@ -253,7 +253,7 @@
<div class="uk-form-horizontal">
<div class="uk-margin">
<label class="uk-form-label" for="form-horizontal-select">Server Configuration <span uk-icon="icon: info;" uk-tooltip title="Change which server is used to communicate with the Nano network"></span></label>
<label class="uk-form-label" for="form-horizontal-select">{{ 'configure-app.server-configuration' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.change-which-server-is-used-to-communicate-with-the-nano')"></span></label>
<div class="uk-form-controls">
<select class="uk-select" [(ngModel)]="selectedServer" (change)="serverConfigChange(selectedServer)" id="form-horizontal-select">
<option *ngFor="let server of serverOptions" [value]="server.value">{{ server.name }}</option>
@ -267,7 +267,7 @@
<div class="uk-width-1-1" *ngIf="showServerValues()">
<div class="uk-form-horizontal">
<div class="">
<label class="uk-form-label uk-text-right">API Server <span uk-icon="icon: info;" uk-tooltip title="This server is used to load, cache, and enhance results from the Nano node"></span></label>
<label class="uk-form-label uk-text-right">{{ 'configure-app.api-server' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.this-server-is-used-for-rpc-communication-with-the-nano-node')"></span></label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1" *ngIf="!showServerConfigs()">
@ -276,7 +276,7 @@
<div class="uk-inline uk-width-1-1" *ngIf="showServerConfigs()">
<input [(ngModel)]="serverAPI" class="uk-input uk-margin-small-bottom" type="text" placeholder="https://domain.com/path">
<span class="uk-text-meta">
This has to be a valid <a href="https://docs.nano.org/commands/rpc-protocol/" target="_blank" rel="noopener noreferrer">Nano RPC endpoint</a> or an API compliant with it.
{{ 'configure-app.this-has-to-be-a-valid-rpc.1' | transloco }} <a href="https://docs.nano.org/commands/rpc-protocol/" target="_blank" rel="noopener noreferrer">{{ 'configure-app.this-has-to-be-a-valid-rpc.2-link-rpc' | transloco }}</a> {{ 'configure-app.this-has-to-be-a-valid-rpc.3' | transloco }}
</span>
</div>
</div>
@ -287,7 +287,7 @@
<div class="uk-width-1-1" *ngIf="showServerValues()">
<div class="uk-form-horizontal">
<div class="">
<label class="uk-form-label uk-text-right">WebSocket Server <span uk-icon="icon: info;" uk-tooltip title="This server is used to notify the wallet in real time when new transactions arrive"></span></label>
<label class="uk-form-label uk-text-right">{{ 'configure-app.websocket-server' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.this-server-is-used-to-notify-the-wallet-in-real-time-when')"></span></label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1" *ngIf="!showServerConfigs()">
<strong>{{ serverWS }}</strong>
@ -296,8 +296,8 @@
<div class="uk-inline uk-width-1-1" *ngIf="showServerConfigs()">
<input [(ngModel)]="serverWS" class="uk-input uk-margin-small-bottom" id="form-horizontal-text2" type="text" placeholder="wss://domain.com/path">
<span class="uk-text-meta">
This has to be a <a href="https://docs.nano.org/integration-guides/websockets/#configuration" target="_blank" rel="noopener noreferrer">Nano Node Websocket</a> or a WebSocket API compliant with it.<br>
<i>Note: Since this server only notifies about new transactions, most of the wallet functions fine without it.</i>
{{ 'configure-app.this-has-to-be-a-valid-websocket.1' | transloco }} <a href="https://docs.nano.org/integration-guides/websockets/#configuration" target="_blank" rel="noopener noreferrer">{{ 'configure-app.this-has-to-be-a-valid-websocket.2-link-websocket' | transloco }}</a> {{ 'configure-app.this-has-to-be-a-valid-websocket.3' | transloco }}<br>
<i>{{ 'configure-app.note-since-this-server-only-notifies-about-new-transactions' | transloco }}</i>
</span>
</div>
</div>
@ -308,7 +308,7 @@
<div class="uk-width-1-1" *ngIf="showServerValues()">
<div class="uk-form-horizontal">
<div class="">
<label class="uk-form-label uk-text-right">Auth Header <span uk-icon="icon: info;" uk-tooltip title="If API requires authentication. For example using basic auth: Basic xyz"></span></label>
<label class="uk-form-label uk-text-right">{{ 'configure-app.authorization' | transloco }} <span uk-icon="icon: info;" uk-tooltip [title]="t('configure-app.use-if-the-api-requires-authentication')"></span></label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1" *ngIf="!showServerConfigs()">
@ -317,8 +317,8 @@
<div class="uk-inline uk-width-1-1" *ngIf="showServerConfigs()">
<input [(ngModel)]="serverAuth" class="uk-input uk-margin-small-bottom" type="text" placeholder="Optional">
<span class="uk-text-meta">
This has to be a valid Authorization header.<br>
<i>For example, basic auth defined as "Authorization: Basic base64Encode(username:password)"<br>In that case, enter: Basic dHV0c3BsdXM6MTIzNDU2</i>
{{ 'configure-app.this-has-to-be-a-valid-authorization-header' | transloco }}<br>
<i>{{ 'configure-app.for-example-using-basic-auth' | transloco }}</i>
</span>
</div>
</div>
@ -329,22 +329,22 @@
<div class="uk-width-1-1" *ngIf="showStatValues() || showServerConfigs()">
<div class="uk-form-horizontal">
<div>
<label class="uk-form-label uk-text-right">Node Stats <span class="{{statsRefreshEnabled ? '':'node-stats-disabled'}}" id="node-stats" uk-icon="icon: refresh;" (click)="updateNodeStats(true)" uk-tooltip title="Can be used for troubleshooting. Click refresh to update."></span></label>
<label class="uk-form-label uk-text-right">{{ 'configure-app.node-stats' | transloco }} <span class="{{statsRefreshEnabled ? '':'node-stats-disabled'}}" id="node-stats" uk-icon="icon: refresh;" (click)="updateNodeStats(true)" uk-tooltip [title]="t('configure-app.click-to-refresh')"></span></label>
<div class="uk-form-controls">
<div class="uk-inline uk-width-1-1">
<span class="uk-text-meta">
<table id="node-stats-table">
<tr>
<td>
<strong>Server</strong>
<strong>{{ 'general.server' | transloco }}</strong>
</td>
<td>
{{serverAPIUpdated ? serverAPI:'Save settings to update'}}
{{serverAPIUpdated ? serverAPI: ('configure-app.save-settings-to-update' | transloco)}}
</td>
</tr>
<tr>
<td>
<strong>Block Count</strong>
<strong>{{ 'general.block-count' | transloco }}</strong>
</td>
<td>
{{nodeBlockCount || 'N/A'}}
@ -352,7 +352,7 @@
</tr>
<tr>
<td>
<strong>Uncemented Blocks</strong>
<strong>{{ 'general.uncemented-blocks' | transloco }}</strong>
</td>
<td>
{{nodeUncemented || 'N/A'}}
@ -360,7 +360,7 @@
</tr>
<tr>
<td>
<strong>Peers Stake Required</strong>
<strong>{{ 'general.peers-stake-required' | transloco }}</strong>
</td>
<td>
{{peersStakeReq || 'N/A'}}
@ -368,7 +368,7 @@
</tr>
<tr>
<td>
<strong>Peers Stake Total</strong>
<strong>{{ 'general.peers-stake-total' | transloco }}</strong>
</td>
<td>
{{peersStakeTotal || 'N/A'}}
@ -376,7 +376,7 @@
</tr>
<tr>
<td>
<strong>Node Version</strong>
<strong>{{ 'general.node-version' | transloco }}</strong>
</td>
<td>
{{nodeVendor || 'N/A'}}
@ -384,7 +384,7 @@
</tr>
<tr>
<td>
<strong>Network</strong>
<strong>{{ 'general.network' | transloco }}</strong>
</td>
<td>
{{nodeNetwork || 'N/A'}}
@ -392,10 +392,10 @@
</tr>
<tr *ngIf="showServerValues() && !showServerConfigs()">
<td>
<strong>Random Server</strong>
<strong>{{ 'configure-app.random-server' | transloco }}</strong>
</td>
<td>
{{shouldRandom || 'No'}}
{{shouldRandom || ('general.no' | transloco)}}
</td>
</tr>
</table>
@ -409,32 +409,29 @@
</div>
</div>
<div class="uk-card-footer uk-text-right@s uk-text-center">
<button (click)="updateServerSettings()" class="uk-button uk-button-primary uk-width-auto@s uk-width-1-1">Update Server Settings</button>
<button (click)="updateServerSettings()" class="uk-button uk-button-primary uk-width-auto@s uk-width-1-1">{{ 'configure-app.update-server-settings' | transloco }}</button>
</div>
</div>
<div class="uk-card uk-card-default uk-margin">
<div class="uk-card-header">
<h3 class="uk-card-title">Advanced Options</h3>
<h3 class="uk-card-title">{{ 'configure-app.advanced-options' | transloco }}</h3>
</div>
<div class="uk-card-body uk-text-center">
<div uk-grid>
<div class="uk-width-1-3@m">
<button class="uk-button uk-button-danger" (click)="clearWorkCache()" uk-tooltip title="This will delete all locally cached Proof of Work values">Clear Work Cache</button>
<button class="uk-button uk-button-danger" (click)="clearWorkCache()" uk-tooltip [title]="t('configure-app.this-will-delete-all-locally-cached-proof-of-work-values')">{{ 'configure-app.clear-work-cache' | transloco }}</button>
</div>
<div class="uk-width-1-3@m">
<button class="uk-button uk-button-danger" (click)="clearWalletData()" uk-tooltip title="This will delete all data related to your wallet (Your seed and accounts)">Delete Wallet Data</button>
<button class="uk-button uk-button-danger" (click)="clearWalletData()" uk-tooltip [title]="t('configure-app.this-will-delete-all-data-related-to-your-wallet-your-seed-a')">{{ 'configure-app.delete-wallet-data' | transloco }}</button>
</div>
<div class="uk-width-1-3@m">
<button class="uk-button uk-button-danger" (click)="clearAllData()" uk-tooltip title="This will delete ALL stored data and reset app settings, including your wallet, address book and more.">Delete ALL Data</button>
<button class="uk-button uk-button-danger" (click)="clearAllData()" uk-tooltip [title]="t('configure-app.this-will-delete-all-stored-data-and-reset-app-settings-incl')">{{ 'configure-app.delete-all-data' | transloco }}</button>
</div>
</div>
</div>
<!--<div class="uk-card-footer uk-text-right">-->
<!--<button (click)="updateWalletSettings()" class="uk-button uk-button-secondary">Update Wallet Settings</button>-->
<!--</div>-->
</div>
</div>

View file

@ -40,10 +40,10 @@ export class ConfigureAppComponent implements OnInit {
private ninja: NinjaService,
private renderer: Renderer2,
private qrModalService: QrModalService,
private translate: TranslocoService) { }
private translocoService: TranslocoService) { }
wallet = this.walletService.wallet;
languages = this.translate.getAvailableLangs() as [{id: string, label: string}];
languages = this.translocoService.getAvailableLangs() as [{id: string, label: string}];
selectedLanguage = this.languages[0].id;
denominations = [
@ -54,13 +54,13 @@ export class ConfigureAppComponent implements OnInit {
selectedDenomination = this.denominations[0].value;
storageOptions = [
{ name: 'Browser Local Storage', value: 'localStorage' },
{ name: 'None', value: 'none' },
{ name: this.translocoService.translate('configure-app.storage-options.browser-local-storage'), value: 'localStorage' },
{ name: this.translocoService.translate('configure-app.storage-options.none'), value: 'none' },
];
selectedStorage = this.storageOptions[0].value;
currencies = [
{ name: 'None', value: '' },
{ name: this.translocoService.translate('configure-app.currencies.none'), value: '' },
{ name: 'USD - US Dollar', value: 'USD' },
{ name: 'BTC - Bitcoin', value: 'BTC' },
{ name: 'AUD - Australian Dollar', value: 'AUD' },
@ -98,40 +98,40 @@ export class ConfigureAppComponent implements OnInit {
selectedCurrency = this.currencies[0].value;
nightModeOptions = [
{ name: 'Enabled', value: 'enabled' },
{ name: 'Disabled', value: 'disabled' },
{ name: this.translocoService.translate('configure-app.night-mode-options.enabled'), value: 'enabled' },
{ name: this.translocoService.translate('configure-app.night-mode-options.disabled'), value: 'disabled' },
];
selectedNightModeOption = this.nightModeOptions[0].value;
identiconOptions = [
{ name: 'None', value: 'none' },
{ name: 'Nanoidenticons (by keerifox)', value: 'nanoidenticons' },
{ name: 'Natricon (by Appditto)', value: 'natricon' },
{ name: this.translocoService.translate('configure-app.identicon-options.none'), value: 'none' },
{ name: this.translocoService.translate('configure-app.identicon-options.nanoidenticons-by-keerifox'), value: 'nanoidenticons' },
{ name: this.translocoService.translate('configure-app.identicon-options.natricon-by-appditto'), value: 'natricon' },
];
selectedIdenticonOption = this.identiconOptions[0].value;
inactivityOptions = [
{ name: 'Never', value: 0 },
{ name: '1 Minute', value: 1 },
{ name: '5 Minutes', value: 5 },
{ name: '15 Minutes', value: 15 },
{ name: '30 Minutes', value: 30 },
{ name: '1 Hour', value: 60 },
{ name: '6 Hours', value: 360 },
{ name: this.translocoService.translate('configure-app.identicon-options.never'), value: 0 },
{ name: this.translocoService.translate('configure-app.identicon-options.1-minute'), value: 1 },
{ name: this.translocoService.translate('configure-app.identicon-options.x-minutes', { minutes: 5 }), value: 5 },
{ name: this.translocoService.translate('configure-app.identicon-options.x-minutes', { minutes: 15 }), value: 15 },
{ name: this.translocoService.translate('configure-app.identicon-options.x-minutes', { minutes: 30 }), value: 30 },
{ name: this.translocoService.translate('configure-app.identicon-options.1-hour'), value: 60 },
{ name: this.translocoService.translate('configure-app.identicon-options.x-hours', { hours: 6 }), value: 360 },
];
selectedInactivityMinutes = this.inactivityOptions[4].value;
powOptions = [
{ name: 'Best Option Available', value: 'best' },
{ name: 'Client-side - GPU/WebGL', value: 'clientWebGL' },
{ name: 'Client-side - CPU (Slowest)', value: 'clientCPU' },
{ name: 'External - Selected Server', value: 'server' },
{ name: 'External - Custom Server', value: 'custom' },
{ name: this.translocoService.translate('configure-app.pow-options.best-option-available'), value: 'best' },
{ name: this.translocoService.translate('configure-app.pow-options.client-side-gpu-webgl'), value: 'clientWebGL' },
{ name: this.translocoService.translate('configure-app.pow-options.client-side-cpu-slowest'), value: 'clientCPU' },
{ name: this.translocoService.translate('configure-app.pow-options.external-selected-server'), value: 'server' },
{ name: this.translocoService.translate('configure-app.pow-options.external-custom-server'), value: 'custom' },
];
selectedPoWOption = this.powOptions[0].value;
multiplierOptions = [
{ name: 'Default (1x or 1/64x)', value: 1 },
{ name: this.translocoService.translate('configure-app.multiplier-options.default-1x-or-1-64x'), value: 1 },
{ name: '2x', value: 2 },
{ name: '4x', value: 4 },
{ name: '8x', value: 8 },
@ -142,9 +142,9 @@ export class ConfigureAppComponent implements OnInit {
selectedMultiplierOption: number = this.multiplierOptions[0].value;
pendingOptions = [
{ name: 'Automatic - Largest Amount First', value: 'amount' },
{ name: 'Automatic - Oldest Transaction First', value: 'date' },
{ name: 'Manual', value: 'manual' },
{ name: this.translocoService.translate('configure-app.pending-options.automatic-largest-amount-first'), value: 'amount' },
{ name: this.translocoService.translate('configure-app.pending-options.automatic-oldest-transaction-first'), value: 'date' },
{ name: this.translocoService.translate('configure-app.pending-options.manual'), value: 'manual' },
];
selectedPendingOption = this.pendingOptions[0].value;
@ -312,7 +312,7 @@ export class ConfigureAppComponent implements OnInit {
const newCurrency = this.selectedCurrency;
// const updatePrefixes = this.appSettings.settings.displayPrefix !== this.selectedPrefix;
const reloadFiat = this.appSettings.settings.displayCurrency !== newCurrency;
this.notifications.sendSuccess(`App display settings successfully updated!`);
this.notifications.sendSuccess(this.translocoService.translate('configure-app.app-display-settings-successfully-updated'));
if (reloadFiat) {
// Reload prices with our currency, then call to reload fiat balances.
@ -322,7 +322,7 @@ export class ConfigureAppComponent implements OnInit {
}
this.appSettings.setAppSetting('language', this.selectedLanguage);
this.translate.setActiveLang(this.selectedLanguage);
this.translocoService.setActiveLang(this.selectedLanguage);
// if (updatePrefixes) {
// this.appSettings.setAppSetting('displayPrefix', this.selectedPrefix);
@ -348,11 +348,11 @@ export class ConfigureAppComponent implements OnInit {
if (resaveWallet && newStorage === this.storageOptions[1].value) {
const UIkit = window['UIkit'];
try {
await UIkit.modal.confirm('<p class="uk-alert uk-alert-danger"><br><span class="uk-flex"><span uk-icon="icon: warning; ratio: 3;" class="uk-align-center"></span></span><span style="font-size: 18px;">You are about to <b>disable storage of all wallet data, which means there will be no wallet configured next time you use Nault</b>.</span><br><br><b style="font-size: 18px;">Before continuing, make sure you have saved the Nano seed and/or mnemonic of your current wallet</b>.<br><br><span style="font-size: 18px;"><b>YOU WILL NOT BE ABLE TO RECOVER THE FUNDS</b><br>without a backup of your currently configured wallet.</span></p><br>');
await UIkit.modal.confirm('<p class="uk-alert uk-alert-danger"><br><span class="uk-flex"><span uk-icon="icon: warning; ratio: 3;" class="uk-align-center"></span></span><span style="font-size: 18px;">' + this.translocoService.translate('configure-app.you-are-about-to-disable-storage-of-all-wallet-data-which') + '</span><br><br><b style="font-size: 18px;">' + this.translocoService.translate('reset-wallet.before-continuing-make-sure-you-have-saved-the-nano-seed') + '</b><br><br><span style="font-size: 18px;"><b>' + this.translocoService.translate('reset-wallet.you-will-not-be-able-to-recover-the-funds-without-a-backup') + '</b></span></p><br>');
} catch (err) {
// pressing cancel, reset storage setting and interrupt
this.selectedStorage = this.storageOptions[0].value;
this.notifications.sendInfo(`Switched back to "Browser Local Storage" for the wallet data. Use the button again if you want to save other settings.`, {length: 10000});
this.notifications.sendInfo(this.translocoService.translate('configure-app.switched-back-to-browser-local-storage-for-the-wallet-data'), {length: 10000});
return;
}
}
@ -372,17 +372,19 @@ export class ConfigureAppComponent implements OnInit {
if (this.defaultRepresentative && this.defaultRepresentative.length) {
const valid = this.util.account.isValidAccount(this.defaultRepresentative);
if (!valid) {
return this.notifications.sendWarning(`Default representative is not a valid account`);
return this.notifications.sendWarning(
this.translocoService.translate('configure-app.default-representative-is-not-a-valid-account')
);
}
}
if (this.appSettings.settings.powSource !== newPoW) {
if (newPoW === 'clientWebGL' && !this.pow.hasWebGLSupport()) {
this.notifications.sendWarning(`WebGL support not available, set PoW to Best`);
this.notifications.sendWarning(this.translocoService.translate('configure-app.webgl-support-not-available-set-pow-to-best'));
newPoW = 'best';
}
if (newPoW === 'clientCPU' && !this.pow.hasWorkerSupport()) {
this.notifications.sendWarning(`CPU Worker support not available, set PoW to Best`);
this.notifications.sendWarning(this.translocoService.translate('configure-app.cpu-worker-support-not-available-set-pow-to-best'));
newPoW = 'best';
}
// reset multiplier when not using it to avoid user mistake
@ -429,7 +431,7 @@ export class ConfigureAppComponent implements OnInit {
};
this.appSettings.setAppSettings(newSettings);
this.notifications.sendSuccess(`App wallet settings successfully updated!`);
this.notifications.sendSuccess(this.translocoService.translate('configure-app.app-wallet-settings-successfully-updated'));
if (resaveWallet) {
this.walletService.saveWalletExport(); // If swapping the storage engine, resave the wallet
@ -452,7 +454,7 @@ export class ConfigureAppComponent implements OnInit {
if (this.serverAPI.startsWith('https://') || this.serverAPI.startsWith('http://')) {
newSettings.serverAPI = this.serverAPI;
} else {
return this.notifications.sendWarning(`Custom API Server has an invalid address.`);
return this.notifications.sendWarning(this.translocoService.translate('configure-app.custom-api-server-has-an-invalid-address'));
}
}
@ -460,7 +462,7 @@ export class ConfigureAppComponent implements OnInit {
if (this.serverWS.startsWith('wss://') || this.serverWS.startsWith('ws://')) {
newSettings.serverWS = this.serverWS;
} else {
return this.notifications.sendWarning(`Custom Update Server has an invalid address.`);
return this.notifications.sendWarning(this.translocoService.translate('configure-app.custom-update-server-has-an-invalid-address'));
}
}
@ -471,11 +473,7 @@ export class ConfigureAppComponent implements OnInit {
this.appSettings.setAppSettings(newSettings);
this.appSettings.loadAppSettings();
if (this.selectedServer !== 'offline') {
this.notifications.sendSuccess(`Server settings successfully updated, reconnecting to backend`);
} else {
this.notifications.sendSuccess(`Server settings successfully updated. Now in offline mode.`);
}
this.notifications.sendSuccess(this.translocoService.translate('configure-app.server-settings-successfully-updated'));
this.node.node.status = false; // Directly set node to offline since API url changed. Status will get set by reloadBalances
@ -541,7 +539,7 @@ export class ConfigureAppComponent implements OnInit {
this.serverAPIUpdated = null;
this.serverWS = custom.ws;
this.serverAuth = custom.auth;
this.shouldRandom = custom.shouldRandom ? 'Yes' : 'No';
this.shouldRandom = custom.shouldRandom ? this.translocoService.translate('general.yes') : this.translocoService.translate('general.no');
}
// reset server stats until updated
@ -575,9 +573,9 @@ export class ConfigureAppComponent implements OnInit {
async clearWorkCache() {
const UIkit = window['UIkit'];
try {
await UIkit.modal.confirm('<p style="text-align: center;">You are about to delete all locally cached Proof of Work values<br><br><b>Are you sure?</b></p>');
await UIkit.modal.confirm('<p style="text-align: center;">' + this.translocoService.translate('configure-app.you-are-about-to-delete-all-locally-cached-proof-of-work') + '<br><br><b>' + this.translocoService.translate('configure-app.are-you-sure') + '</b></p>');
this.workPool.clearCache();
this.notifications.sendSuccess(`Successfully cleared the work cache!`);
this.notifications.sendSuccess(this.translocoService.translate('configure-app.successfully-cleared-the-work-cache'));
return true;
} catch (err) { return false; }
}
@ -585,18 +583,18 @@ export class ConfigureAppComponent implements OnInit {
async clearWalletData() {
const UIkit = window['UIkit'];
try {
await UIkit.modal.confirm('<p class="uk-alert uk-alert-danger"><br><span class="uk-flex"><span uk-icon="icon: warning; ratio: 3;" class="uk-align-center"></span></span><span style="font-size: 18px;">You are about to <b>delete all locally stored data about your currently configured wallet</b>.</span><br><br><b style="font-size: 18px;">Before continuing, make sure you have saved the Nano seed and/or mnemonic of your current wallet</b>.<br><br><span style="font-size: 18px;"><b>YOU WILL NOT BE ABLE TO RECOVER THE FUNDS</b><br>without a backup of your currently configured wallet.</span></p><br>');
await UIkit.modal.confirm('<p class="uk-alert uk-alert-danger"><br><span class="uk-flex"><span uk-icon="icon: warning; ratio: 3;" class="uk-align-center"></span></span><span style="font-size: 18px;">' + this.translocoService.translate('configure-app.you-are-about-to-delete-all-locally-stored-data-about-your') + '</span><br><br><b style="font-size: 18px;">' + this.translocoService.translate('reset-wallet.before-continuing-make-sure-you-have-saved-the-nano-seed') + '</b><br><br><span style="font-size: 18px;"><b>' + this.translocoService.translate('reset-wallet.you-will-not-be-able-to-recover-the-funds-without-a-backup') + '</b></span></p><br>');
this.walletService.resetWallet();
this.walletService.removeWalletData();
this.notifications.sendSuccess(`Successfully deleted all wallet data!`);
this.notifications.sendSuccess(this.translocoService.translate('configure-app.successfully-deleted-all-wallet-data'));
} catch (err) {}
}
async clearAllData() {
const UIkit = window['UIkit'];
try {
await UIkit.modal.confirm('<p class="uk-alert uk-alert-danger"><br><span class="uk-flex"><span uk-icon="icon: warning; ratio: 3;" class="uk-align-center"></span></span><span style="font-size: 18px;">You are about to delete all data stored in Nault, <b>which includes all locally stored data about your currently configured wallet, all entries from your address and representative books, and any other cached data. All settings will be reset to default</b>.</span><br><br><b style="font-size: 18px;">Before continuing, make sure you have saved the Nano seed and/or mnemonic of your current wallet</b>.<br><br><span style="font-size: 18px;"><b>YOU WILL NOT BE ABLE TO RECOVER THE FUNDS</b><br>without a backup of your currently configured wallet.</span></p><br>');
await UIkit.modal.confirm('<p class="uk-alert uk-alert-danger"><br><span class="uk-flex"><span uk-icon="icon: warning; ratio: 3;" class="uk-align-center"></span></span><span style="font-size: 18px;">' + this.translocoService.translate('configure-app.clear-all-data.1') + '</span><br><br><b style="font-size: 18px;">' + this.translocoService.translate('reset-wallet.before-continuing-make-sure-you-have-saved-the-nano-seed') + '</b><br><br><span style="font-size: 18px;"><b>' + this.translocoService.translate('reset-wallet.you-will-not-be-able-to-recover-the-funds-without-a-backup') + '</b></span></p><br>');
this.walletService.resetWallet();
this.walletService.removeWalletData();
@ -608,7 +606,7 @@ export class ConfigureAppComponent implements OnInit {
this.loadFromSettings();
this.notifications.sendSuccess(`Successfully deleted locally stored data and reset the settings!`);
this.notifications.sendSuccess(this.translocoService.translate('configure-app.clear-all-data.successfully-deleted-locally-stored-data-and-reset-the'));
// Get a new random API server or Nault will get stuck in offline mode
this.updateServerSettings();

View file

@ -82,19 +82,138 @@
"you-can-change-representative-at-any-time": "You can change representative at any time by clicking on its name above.",
"you-have-marked-this-representative-as-trusted": "You have marked this representative as trusted, meaning its status will remain \"Good\" even in case of severe issues with uptime or weight distribution."
},
"configure-wallet": {
"set-wallet-password": {
"set-wallet-password": "Set Wallet Password",
"choose-a-wallet-password-that-will-be-used-to-unlock-this-application": "Choose a wallet password that will be used to unlock this application.",
"while-the-application-is-locked-the-secret-recovery-phrase-will-be-encrypted": "While the application is locked, the secret recovery phrase will be encrypted, which prevents sending/receiving funds and managing accounts.",
"for-the-safety-of-your-funds-use-a-secure-password": "For the safety of your funds, use a secure password (the bar should be green).",
"errors": {
"password-must-be-at-least-x-characters-long": "Password must be at least {{ minCharacters }} characters long",
"passwords-do-not-match": "Passwords do not match!"
}
"configure-app": {
"advanced-options": "Advanced Options",
"api-server": "API Server",
"app-display-settings-successfully-updated": "App display settings successfully updated!",
"app-wallet-settings-successfully-updated": "App wallet settings successfully updated!",
"are-you-sure": "Are you sure?",
"authorization": "Authorization",
"change-if-your-wallet-should-be-locked-automatically-after": "Change if your wallet should be locked automatically after you have not interacted with it for a certain period of time",
"change-the-currency-pair-used-when-showing-fiat-values": "Change the currency pair used when showing fiat values in the application. Select None to hide fiat pairs.",
"change-where-your-wallet-is-stored-if-you-select-none-your": "Change where your wallet is stored. If you select none, your wallet is reset every time you reload.",
"change-which-server-is-used-to-communicate-with-the-nano": "Change which server is used to communicate with the Nano network",
"clear-all-data": {
"1": "You are about to delete all data stored in Nault, which includes all locally stored data about your currently configured wallet, all entries from your address and representative books, and any other cached data. All settings will be reset to default.",
"2": "Before continuing, make sure you have saved the Nano seed and/or mnemonic of your current wallet.",
"successfully-deleted-locally-stored-data-and-reset-the": "Successfully deleted locally stored data and reset the settings!"
},
"clear-work-cache": "Clear Work Cache",
"click-to-refresh": "Click to refresh",
"component": {
"wallet-storage": "Wallet Storage"
},
"configure-nault": "Configure Nault",
"cpu-worker-support-not-available-set-pow-to-best": "CPU Worker support not available, set PoW to Best",
"currencies": {
"none": "None"
},
"custom-api-server-has-an-invalid-address": "Custom API Server has an invalid address.",
"custom-update-server-has-an-invalid-address": "Custom Update Server has an invalid address.",
"default-representative": "Default Representative",
"default-representative-is-not-a-valid-account": "Default representative is not a valid account",
"delete-all-data": "Delete ALL Data",
"delete-wallet-data": "Delete Wallet Data",
"display-settings": "Display Settings",
"fiat-currency": "FIAT Currency",
"for-example-using-basic-auth": "For example using basic auth: Basic xyz",
"identicon-options": {
"1-hour": "1 Hour",
"1-minute": "1 Minute",
"nanoidenticons-by-keerifox": "Nanoidenticons (by keerifox)",
"natricon-by-appditto": "Natricon (by Appditto)",
"never": "Never",
"none": "None",
"x-hours": "{{ hours }} Hours",
"x-minutes": "{{ minutes }} Minutes"
},
"identicons": "Identicons",
"if-automatically-receiving-incoming-transactions-with-the": "If automatically receiving incoming transactions with the largest amount first or chronological from recorded time. Manual will allow you to pick your own transactions from the receive screen.",
"language": "Language",
"leave-blank-to-accept-transactions-of-any-amount": "Leave blank to accept transactions of any amount",
"leave-blank-to-use-a-recommended-one": "Leave blank to use a recommended one",
"lock-after-inactivity": "Lock After Inactivity",
"min-receive-amount": "Min. Receive Amount",
"minimum-nano-amount-to-receive-transactions-below-this": "Minimum NANO amount to receive. Transactions below this amount will be ignored by the wallet both for receiving and in the transactions list. Set to blank or 0 to accept all transactions.",
"multiplier-options": {
"default-1x-or-1-64x": "Default (1x or 1/64x)"
},
"night-mode": "Night Mode",
"night-mode-options": {
"disabled": "Disabled",
"enabled": "Enabled"
},
"node-stats": "Node Stats",
"note-since-this-server-only-notifies-about-new-transactions": "Note: Since this server only notifies about new transactions, most of the wallet functions fine without it.",
"optional-increased-work-for-transaction-priority-during": "Optional increased work for transaction priority during network saturation. Overrides both default SEND 1x and RECEIVE 1/64x difficulties.",
"pending-options": {
"automatic-largest-amount-first": "Automatic - Largest Amount First",
"automatic-oldest-transaction-first": "Automatic - Oldest Transaction First",
"manual": "Manual"
},
"pow-multiplier": "PoW Multiplier",
"pow-options": {
"best-option-available": "Best Option Available",
"client-side-cpu-slowest": "Client-side - CPU (Slowest)",
"client-side-gpu-webgl": "Client-side - GPU/WebGL",
"external-custom-server": "External - Custom Server",
"external-selected-server": "External - Selected Server"
},
"pow-source": "PoW Source",
"random-server": "Random Server",
"receive-method": "Receive Method",
"save-settings-to-update": "Save settings to update",
"server-configuration": "Server Configuration",
"server-settings": "Server Settings",
"server-settings-successfully-updated": "Server settings successfully updated!",
"storage-options": {
"browser-local-storage": "Browser Local Storage",
"none": "None"
},
"successfully-cleared-the-work-cache": "Successfully cleared the work cache!",
"successfully-deleted-all-wallet-data": "Successfully deleted all wallet data!",
"successfully-updated": "Successfully updated!",
"switched-back-to-browser-local-storage-for-the-wallet-data": "Switched back to \"Browser Local Storage\" for the wallet data. Use the button again if you want to save other settings.",
"this-has-to-be-a-valid-authorization-header": "This has to be a valid Authorization header.",
"this-has-to-be-a-valid-rpc": {
"1": "This has to be a valid",
"2-link-rpc": "Nano RPC endpoint",
"3": "or an API compliant with it."
},
"this-has-to-be-a-valid-websocket": {
"1": "This has to be a valid",
"2-link-websocket": "Nano Node Websocket",
"3": "or a WebSocket API compliant with it."
},
"this-has-to-be-a-valid-work": {
"1": "This has to be a valid",
"2-link-work": "Nano Work Server",
"3": "endpoint or an API compliant with it. If your server on localhost does not work, try the desktop app instead."
},
"this-representative-will-be-used-for-any-new-account": "This representative will be used for any new account",
"this-server-is-used-for-rpc-communication-with-the-nano-node": "This server is used for RPC communication with the Nano Node",
"this-server-is-used-to-notify-the-wallet-in-real-time-when": "This server is used to notify the wallet in real time when new transactions arrive",
"this-will-delete-all-data-related-to-your-wallet-your-seed-a": "This will delete all data related to your wallet (Your seed and accounts)",
"this-will-delete-all-locally-cached-proof-of-work-values": "This will delete all locally cached Proof of Work values",
"this-will-delete-all-stored-data-and-reset-app-settings-incl": "This will delete ALL stored data and reset app settings, including your wallet, address book and more",
"update-display-settings": "Update Display Settings",
"update-server-settings": "Update Server Settings",
"update-wallet-settings": "Update Wallet Settings",
"use-if-the-api-requires-authentication": "Use if the API requires authentication",
"wallet-settings": "Wallet Settings",
"webgl-support-not-available-set-pow-to-best": "WebGL support not available, set PoW to Best",
"websocket-server": "WebSocket Server",
"work-server": "Work Server",
"you-are-about-to-delete-all-locally-cached-proof-of-work": "You are about to delete all locally cached Proof of Work values.",
"you-are-about-to-delete-all-locally-stored-data-about-your": "You are about to delete all locally stored data about your currently configured wallet.",
"you-are-about-to-disable-storage-of-all-wallet-data-which": "You are about to disable storage of all wallet data, which means there will be no wallet configured next time you use Nault."
},
"configure-wallet": {
"new-wallet": {
"recovery-phrases-for-new-wallet": "Recovery Phrases for New Wallet",
"copy-secret-recovery-mnemonic": "Copy Secret Recovery Mnemonic",
"copy-secret-recovery-seed": "Copy Secret Recovery Seed",
"create-wallet": "Create Wallet",
"i-have-securely-stored-recovery-phrases": "I have securely stored the secret recovery seed and/or mnemonic",
"please-take-some-time-to-write-down-recovery-phrases": "Please take some time to backup the secret recovery seed and/or mnemonic, to be able to access this wallet in the future.",
"recovery-phrases-alert": {
"1": {
@ -104,19 +223,23 @@
},
"2": "It is the master key to all of your accounts, and the only way to recover your funds in an emergency."
},
"secret-recovery-seed": "Secret Recovery Seed",
"recovery-phrases-for-new-wallet": "Recovery Phrases for New Wallet",
"secret-recovery-mnemonic": "Secret Recovery Mnemonic",
"copy-secret-recovery-seed": "Copy Secret Recovery Seed",
"copy-secret-recovery-mnemonic": "Copy Secret Recovery Mnemonic",
"successfully-copied-secret-recovery-seed": "Successfully copied Secret Recovery Seed to clipboard!",
"secret-recovery-seed": "Secret Recovery Seed",
"successfully-copied-secret-recovery-mnemonic": "Successfully copied Secret Recovery Mnemonic to clipboard!",
"i-have-securely-stored-recovery-phrases": "I have securely stored the secret recovery seed and/or mnemonic",
"create-wallet": "Create Wallet"
"successfully-copied-secret-recovery-seed": "Successfully copied Secret Recovery Seed to clipboard!"
},
"set-wallet-password": {
"choose-a-wallet-password-that-will-be-used-to-unlock-this-application": "Choose a wallet password that will be used to unlock this application.",
"errors": {
"password-must-be-at-least-x-characters-long": "Password must be at least {{ minCharacters }} characters long",
"passwords-do-not-match": "Passwords do not match!"
},
"for-the-safety-of-your-funds-use-a-secure-password": "For the safety of your funds, use a secure password (the bar should be green).",
"set-wallet-password": "Set Wallet Password",
"while-the-application-is-locked-the-secret-recovery-phrase-will-be-encrypted": "While the application is locked, the secret recovery phrase will be encrypted, which prevents sending/receiving funds and managing accounts."
}
},
"configure-app": {
"language": "Language"
},
"general": {
"account": "Account",
"accounts": "Accounts",
@ -130,14 +253,21 @@
"address-book": "Address Book",
"amount": "Amount",
"app-settings": "App Settings",
"avoid": "Avoid",
"balance": "Balance",
"block": "Block",
"block-count": "Block Count",
"cancel": "Cancel",
"copy": "Copy",
"date": "Date",
"edit": "Edit",
"loading": "Loading...",
"network": "Network",
"new": "New",
"no": "No",
"node-version": "Node Version",
"peers-stake-required": "Peers Stake Required",
"peers-stake-total": "Peers Stake Total",
"receive": "Receive",
"reload": "Reload",
"representative": "Representative",
@ -145,12 +275,22 @@
"save": "Save",
"scan-qr-code": "Scan QR Code",
"send": "Send",
"server": "Server",
"settings": "Settings",
"show-more": "Show More",
"show-qr-code": "Show QR Code",
"successfully-copied-to-clipboard": "Successfully copied to clipboard!",
"uncemented-blocks": "Uncemented Blocks",
"unknown": "Unknown",
"view-details": "View Details"
"view-details": "View Details",
"yes": "Yes"
},
"representative-search": {
"representative-list-results": "Representative List Results"
},
"reset-wallet": {
"before-continuing-make-sure-you-have-saved-the-nano-seed": "Before continuing, make sure you have saved the Nano seed and/or mnemonic of your current wallet.",
"you-will-not-be-able-to-recover-the-funds-without-a-backup": "YOU WILL NOT BE ABLE TO RECOVER THE FUNDS without a backup of your currently configured wallet."
},
"welcome": {
"a-secure-open-source-wallet-for-nano": "A secure open source wallet for Nano",