summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-11-16 16:04:52 -0300
committerSebastian <sebasjm@gmail.com>2022-11-16 16:05:13 -0300
commit1a63d56bfdd091cc7aefdf1e25f3a074bfdf5e0e (patch)
tree7255cf4a5b51af4807e2a01a370497413a78968f
parent53164dc47b1138235a0c797affaa6fb37ea43239 (diff)
downloadwallet-core-1a63d56bfdd091cc7aefdf1e25f3a074bfdf5e0e.tar.gz
wallet-core-1a63d56bfdd091cc7aefdf1e25f3a074bfdf5e0e.tar.bz2
wallet-core-1a63d56bfdd091cc7aefdf1e25f3a074bfdf5e0e.zip
fix #7411, also making the backup payment visible
-rw-r--r--packages/taler-util/src/punycode.ts2
-rw-r--r--packages/taler-util/src/wallet-types.ts8
-rw-r--r--packages/taler-wallet-core/src/crypto/workers/synchronousWorkerFactoryPlain.ts4
-rw-r--r--packages/taler-wallet-core/src/operations/backup/index.ts166
-rw-r--r--packages/taler-wallet-core/src/operations/pay-merchant.ts2
-rw-r--r--packages/taler-wallet-core/src/wallet-api-types.ts3
-rw-r--r--packages/taler-wallet-core/src/wallet.ts9
-rw-r--r--packages/taler-wallet-webextension/src/NavigationBar.tsx32
-rw-r--r--packages/taler-wallet-webextension/src/components/QR.stories.tsx31
-rw-r--r--packages/taler-wallet-webextension/src/components/QR.tsx2
-rw-r--r--packages/taler-wallet-webextension/src/components/TermsOfService/index.ts2
-rw-r--r--packages/taler-wallet-webextension/src/components/TermsOfService/state.ts19
-rw-r--r--packages/taler-wallet-webextension/src/components/index.stories.tsx3
-rw-r--r--packages/taler-wallet-webextension/src/context/devContext.ts7
-rw-r--r--packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts87
-rw-r--r--packages/taler-wallet-webextension/src/cta/InvoicePay/index.ts2
-rw-r--r--packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts26
-rw-r--r--packages/taler-wallet-webextension/src/cta/Payment/index.ts6
-rw-r--r--packages/taler-wallet-webextension/src/cta/Payment/state.ts26
-rw-r--r--packages/taler-wallet-webextension/src/cta/Payment/test.ts396
-rw-r--r--packages/taler-wallet-webextension/src/cta/Recovery/state.ts4
-rw-r--r--packages/taler-wallet-webextension/src/cta/Refund/index.ts2
-rw-r--r--packages/taler-wallet-webextension/src/cta/Refund/state.ts14
-rw-r--r--packages/taler-wallet-webextension/src/cta/Refund/test.ts61
-rw-r--r--packages/taler-wallet-webextension/src/cta/Tip/index.ts2
-rw-r--r--packages/taler-wallet-webextension/src/cta/Tip/state.ts8
-rw-r--r--packages/taler-wallet-webextension/src/cta/Tip/test.ts23
-rw-r--r--packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts80
-rw-r--r--packages/taler-wallet-webextension/src/cta/TransferPickup/index.ts2
-rw-r--r--packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts16
-rw-r--r--packages/taler-wallet-webextension/src/cta/Withdraw/index.ts2
-rw-r--r--packages/taler-wallet-webextension/src/cta/Withdraw/state.ts63
-rw-r--r--packages/taler-wallet-webextension/src/cta/Withdraw/test.ts137
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useAutoOpenPermissions.ts4
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useBackupDeviceName.ts9
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useClipboardPermissions.ts4
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useProviderStatus.ts9
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts6
-rw-r--r--packages/taler-wallet-webextension/src/i18n/strings.ts10813
-rw-r--r--packages/taler-wallet-webextension/src/stories.test.ts2
-rw-r--r--packages/taler-wallet-webextension/src/test-utils.ts126
-rw-r--r--packages/taler-wallet-webextension/src/utils/index.ts7
-rw-r--r--packages/taler-wallet-webextension/src/wallet/AddBackupProvider/index.ts95
-rw-r--r--packages/taler-wallet-webextension/src/wallet/AddBackupProvider/state.ts260
-rw-r--r--packages/taler-wallet-webextension/src/wallet/AddBackupProvider/stories.tsx109
-rw-r--r--packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts79
-rw-r--r--packages/taler-wallet-webextension/src/wallet/AddBackupProvider/views.tsx172
-rw-r--r--packages/taler-wallet-webextension/src/wallet/Application.tsx9
-rw-r--r--packages/taler-wallet-webextension/src/wallet/DepositPage/index.ts4
-rw-r--r--packages/taler-wallet-webextension/src/wallet/DepositPage/state.ts42
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts4
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts19
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx7
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts8
-rw-r--r--packages/taler-wallet-webextension/src/wallet/ManageAccount/state.ts34
-rw-r--r--packages/taler-wallet-webextension/src/wallet/QrReader.stories.tsx2
-rw-r--r--packages/taler-wallet-webextension/src/wallet/index.stories.tsx4
-rw-r--r--packages/taler-wallet-webextension/src/wxApi.ts26
58 files changed, 4638 insertions, 8463 deletions
diff --git a/packages/taler-util/src/punycode.ts b/packages/taler-util/src/punycode.ts
index 353e3bf25..acb8ce911 100644
--- a/packages/taler-util/src/punycode.ts
+++ b/packages/taler-util/src/punycode.ts
@@ -465,4 +465,4 @@ export const punycode = {
encode: encode,
toASCII: toASCII,
toUnicode: toUnicode,
-}; \ No newline at end of file
+};
diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts
index 4e1563e27..900fb7407 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -241,12 +241,18 @@ export interface ConfirmPayResultPending {
lastError: TalerErrorDetail | undefined;
}
+export const codecForTalerErrorDetail = (): Codec<TalerErrorDetail> =>
+ buildCodecForObject<TalerErrorDetail>()
+ .property("code", codecForNumber())
+ .property("hint", codecOptional(codecForString()))
+ .build("TalerErrorDetail");
+
export type ConfirmPayResult = ConfirmPayResultDone | ConfirmPayResultPending;
export const codecForConfirmPayResultPending =
(): Codec<ConfirmPayResultPending> =>
buildCodecForObject<ConfirmPayResultPending>()
- .property("lastError", codecForAny())
+ .property("lastError", codecOptional(codecForTalerErrorDetail()))
.property("transactionId", codecForString())
.property("type", codecForConstString(ConfirmPayResultType.Pending))
.build("ConfirmPayResultPending");
diff --git a/packages/taler-wallet-core/src/crypto/workers/synchronousWorkerFactoryPlain.ts b/packages/taler-wallet-core/src/crypto/workers/synchronousWorkerFactoryPlain.ts
index 7662b41f5..d0c8e4b3a 100644
--- a/packages/taler-wallet-core/src/crypto/workers/synchronousWorkerFactoryPlain.ts
+++ b/packages/taler-wallet-core/src/crypto/workers/synchronousWorkerFactoryPlain.ts
@@ -25,7 +25,9 @@ import { SynchronousCryptoWorkerPlain } from "./synchronousWorkerPlain.js";
* The synchronous crypto worker produced by this factory doesn't run in the
* background, but actually blocks the caller until the operation is done.
*/
-export class SynchronousCryptoWorkerFactoryPlain implements CryptoWorkerFactory {
+export class SynchronousCryptoWorkerFactoryPlain
+ implements CryptoWorkerFactory
+{
startWorker(): CryptoWorker {
return new SynchronousCryptoWorkerPlain();
}
diff --git a/packages/taler-wallet-core/src/operations/backup/index.ts b/packages/taler-wallet-core/src/operations/backup/index.ts
index 080adf1cd..aed37b865 100644
--- a/packages/taler-wallet-core/src/operations/backup/index.ts
+++ b/packages/taler-wallet-core/src/operations/backup/index.ts
@@ -29,15 +29,18 @@ import {
AmountString,
BackupRecovery,
buildCodecForObject,
+ buildCodecForUnion,
bytesToString,
canonicalizeBaseUrl,
canonicalJson,
Codec,
codecForAmountString,
codecForBoolean,
+ codecForConstString,
codecForList,
codecForNumber,
codecForString,
+ codecForTalerErrorDetail,
codecOptional,
ConfirmPayResultType,
decodeCrock,
@@ -78,6 +81,7 @@ import {
WalletBackupConfState,
} from "../../db.js";
import { InternalWalletState } from "../../internal-wallet-state.js";
+import { assertUnreachable } from "../../util/assertUnreachable.js";
import {
readSuccessResponseJsonOrThrow,
readTalerErrorResponse,
@@ -232,12 +236,6 @@ function deriveBlobSecret(bc: WalletBackupConfState): Uint8Array {
interface BackupForProviderArgs {
backupProviderBaseUrl: string;
-
- /**
- * Should we attempt one more upload after trying
- * to pay?
- */
- retryAfterPayment: boolean;
}
function getNextBackupTimestamp(): TalerProtocolTimestamp {
@@ -253,7 +251,7 @@ function getNextBackupTimestamp(): TalerProtocolTimestamp {
async function runBackupCycleForProvider(
ws: InternalWalletState,
args: BackupForProviderArgs,
-): Promise<OperationAttemptResult> {
+): Promise<OperationAttemptResult<unknown, { talerUri: string }>> {
const provider = await ws.db
.mktx((x) => [x.backupProviders])
.runReadOnly(async (tx) => {
@@ -339,57 +337,34 @@ async function runBackupCycleForProvider(
if (!talerUri) {
throw Error("no taler URI available to pay provider");
}
- const res = await preparePayForUri(ws, talerUri);
- let proposalId = res.proposalId;
- let doPay = false;
- switch (res.status) {
- case PreparePayResultType.InsufficientBalance:
- // FIXME: record in provider state!
- logger.warn("insufficient balance to pay for backup provider");
- proposalId = res.proposalId;
- break;
- case PreparePayResultType.PaymentPossible:
- doPay = true;
- break;
- case PreparePayResultType.AlreadyConfirmed:
- break;
- }
- // FIXME: check if the provider is overcharging us!
+ //We can't delay downloading the proposal since we need the id
+ //FIXME: check download errors
+
+ const res = await preparePayForUri(ws, talerUri);
await ws.db
.mktx((x) => [x.backupProviders, x.operationRetries])
.runReadWrite(async (tx) => {
- const provRec = await tx.backupProviders.get(provider.baseUrl);
- checkDbInvariant(!!provRec);
- const ids = new Set(provRec.paymentProposalIds);
- ids.add(proposalId);
- provRec.paymentProposalIds = Array.from(ids).sort();
- provRec.currentPaymentProposalId = proposalId;
- // FIXME: allocate error code for this!
- await tx.backupProviders.put(provRec);
- const opId = RetryTags.forBackup(provRec);
+ const prov = await tx.backupProviders.get(provider.baseUrl);
+ if (!prov) {
+ logger.warn("backup provider not found anymore");
+ return;
+ }
+ const opId = RetryTags.forBackup(prov);
await scheduleRetryInTx(ws, tx, opId);
+ prov.currentPaymentProposalId = res.proposalId;
+ prov.state = {
+ tag: BackupProviderStateTag.Retrying,
+ };
+ await tx.backupProviders.put(prov);
});
- if (doPay) {
- const confirmRes = await confirmPay(ws, proposalId);
- switch (confirmRes.type) {
- case ConfirmPayResultType.Pending:
- logger.warn("payment not yet finished yet");
- break;
- }
- }
-
- if (args.retryAfterPayment) {
- return await runBackupCycleForProvider(ws, {
- ...args,
- retryAfterPayment: false,
- });
- }
return {
type: OperationAttemptResultType.Pending,
- result: undefined,
+ result: {
+ talerUri,
+ },
};
}
@@ -442,10 +417,7 @@ async function runBackupCycleForProvider(
});
logger.info("processed existing backup");
// Now upload our own, merged backup.
- return await runBackupCycleForProvider(ws, {
- ...args,
- retryAfterPayment: false,
- });
+ return await runBackupCycleForProvider(ws, args);
}
// Some other response that we did not expect!
@@ -477,7 +449,6 @@ export async function processBackupForProvider(
return await runBackupCycleForProvider(ws, {
backupProviderBaseUrl: provider.baseUrl,
- retryAfterPayment: true,
});
}
@@ -540,12 +511,11 @@ export async function runBackupCycle(
for (const provider of providers) {
await runBackupCycleForProvider(ws, {
backupProviderBaseUrl: provider.baseUrl,
- retryAfterPayment: true,
});
}
}
-interface SyncTermsOfServiceResponse {
+export interface SyncTermsOfServiceResponse {
// maximum backup size supported
storage_limit_in_megabytes: number;
@@ -557,7 +527,7 @@ interface SyncTermsOfServiceResponse {
version: string;
}
-const codecForSyncTermsOfServiceResponse =
+export const codecForSyncTermsOfServiceResponse =
(): Codec<SyncTermsOfServiceResponse> =>
buildCodecForObject<SyncTermsOfServiceResponse>()
.property("storage_limit_in_megabytes", codecForNumber())
@@ -584,10 +554,58 @@ export const codecForAddBackupProviderRequest =
.property("activate", codecOptional(codecForBoolean()))
.build("AddBackupProviderRequest");
+export type AddBackupProviderResponse =
+ | AddBackupProviderOk
+ | AddBackupProviderPaymentRequired
+ | AddBackupProviderError;
+
+interface AddBackupProviderOk {
+ status: "ok";
+}
+interface AddBackupProviderPaymentRequired {
+ status: "payment-required";
+ talerUri: string;
+}
+interface AddBackupProviderError {
+ status: "error";
+ error: TalerErrorDetail;
+}
+
+export const codecForAddBackupProviderOk = (): Codec<AddBackupProviderOk> =>
+ buildCodecForObject<AddBackupProviderOk>()
+ .property("status", codecForConstString("ok"))
+ .build("AddBackupProviderOk");
+
+export const codecForAddBackupProviderPaymenrRequired =
+ (): Codec<AddBackupProviderPaymentRequired> =>
+ buildCodecForObject<AddBackupProviderPaymentRequired>()
+ .property("status", codecForConstString("payment-required"))
+ .property("talerUri", codecForString())
+ .build("AddBackupProviderPaymentRequired");
+
+export const codecForAddBackupProviderError =
+ (): Codec<AddBackupProviderError> =>
+ buildCodecForObject<AddBackupProviderError>()
+ .property("status", codecForConstString("error"))
+ .property("error", codecForTalerErrorDetail())
+ .build("AddBackupProviderError");
+
+export const codecForAddBackupProviderResponse =
+ (): Codec<AddBackupProviderResponse> =>
+ buildCodecForUnion<AddBackupProviderResponse>()
+ .discriminateOn("status")
+ .alternative("ok", codecForAddBackupProviderOk())
+ .alternative(
+ "payment-required",
+ codecForAddBackupProviderPaymenrRequired(),
+ )
+ .alternative("error", codecForAddBackupProviderError())
+ .build("AddBackupProviderResponse");
+
export async function addBackupProvider(
ws: InternalWalletState,
req: AddBackupProviderRequest,
-): Promise<void> {
+): Promise<AddBackupProviderResponse> {
logger.info(`adding backup provider ${j2s(req)}`);
await provideBackupState(ws);
const canonUrl = canonicalizeBaseUrl(req.backupProviderBaseUrl);
@@ -618,6 +636,7 @@ export async function addBackupProvider(
.mktx((x) => [x.backupProviders])
.runReadWrite(async (tx) => {
let state: BackupProviderState;
+ //FIXME: what is the difference provisional and ready?
if (req.activate) {
state = {
tag: BackupProviderStateTag.Ready,
@@ -641,6 +660,39 @@ export async function addBackupProvider(
uids: [encodeCrock(getRandomBytes(32))],
});
});
+
+ return await runFirstBackupCycleForProvider(ws, {
+ backupProviderBaseUrl: canonUrl,
+ });
+}
+
+async function runFirstBackupCycleForProvider(
+ ws: InternalWalletState,
+ args: BackupForProviderArgs,
+): Promise<AddBackupProviderResponse> {
+ const resp = await runBackupCycleForProvider(ws, args);
+ switch (resp.type) {
+ case OperationAttemptResultType.Error:
+ return {
+ status: "error",
+ error: resp.errorDetail,
+ };
+ case OperationAttemptResultType.Finished:
+ return {
+ status: "ok",
+ };
+ case OperationAttemptResultType.Longpoll:
+ throw Error(
+ "unexpected runFirstBackupCycleForProvider result (longpoll)",
+ );
+ case OperationAttemptResultType.Pending:
+ return {
+ status: "payment-required",
+ talerUri: resp.result.talerUri,
+ };
+ default:
+ assertUnreachable(resp);
+ }
}
export async function restoreFromRecoverySecret(): Promise<void> {
diff --git a/packages/taler-wallet-core/src/operations/pay-merchant.ts b/packages/taler-wallet-core/src/operations/pay-merchant.ts
index bb391d468..6246951ad 100644
--- a/packages/taler-wallet-core/src/operations/pay-merchant.ts
+++ b/packages/taler-wallet-core/src/operations/pay-merchant.ts
@@ -1584,7 +1584,7 @@ export async function runPayForConfirmPay(
const numRetry = opRetry?.retryInfo.retryCounter ?? 0;
if (
res.errorDetail.code ===
- TalerErrorCode.WALLET_PAY_MERCHANT_SERVER_ERROR &&
+ TalerErrorCode.WALLET_PAY_MERCHANT_SERVER_ERROR &&
numRetry < maxRetry
) {
// Pretend the operation is pending instead of reporting
diff --git a/packages/taler-wallet-core/src/wallet-api-types.ts b/packages/taler-wallet-core/src/wallet-api-types.ts
index b7d0ada3d..04c1bb6b4 100644
--- a/packages/taler-wallet-core/src/wallet-api-types.ts
+++ b/packages/taler-wallet-core/src/wallet-api-types.ts
@@ -106,6 +106,7 @@ import {
import { WalletContractData } from "./db.js";
import {
AddBackupProviderRequest,
+ AddBackupProviderResponse,
BackupInfo,
RemoveBackupProviderRequest,
RunBackupCycleRequest,
@@ -519,7 +520,7 @@ export type ExportBackupOp = {
export type AddBackupProviderOp = {
op: WalletApiOperation.AddBackupProvider;
request: AddBackupProviderRequest;
- response: EmptyObject;
+ response: AddBackupProviderResponse;
};
export type RemoveBackupProviderOp = {
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index caaf6d410..9fa0e32ba 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -933,9 +933,9 @@ async function dumpCoins(ws: InternalWalletState): Promise<CoinDumpJson> {
ageCommitmentProof: c.ageCommitmentProof,
spend_allocation: c.spendAllocation
? {
- amount: c.spendAllocation.amount,
- id: c.spendAllocation.id,
- }
+ amount: c.spendAllocation.amount,
+ id: c.spendAllocation.id,
+ }
: undefined,
});
}
@@ -1215,8 +1215,7 @@ async function dispatchRequestInternal<Op extends WalletApiOperation>(
}
case WalletApiOperation.AddBackupProvider: {
const req = codecForAddBackupProviderRequest().decode(payload);
- await addBackupProvider(ws, req);
- return {};
+ return await addBackupProvider(ws, req);
}
case WalletApiOperation.RunBackupCycle: {
const req = codecForRunBackupCycle().decode(payload);
diff --git a/packages/taler-wallet-webextension/src/NavigationBar.tsx b/packages/taler-wallet-webextension/src/NavigationBar.tsx
index b0a7a1016..ff2404800 100644
--- a/packages/taler-wallet-webextension/src/NavigationBar.tsx
+++ b/packages/taler-wallet-webextension/src/NavigationBar.tsx
@@ -25,7 +25,6 @@
* Imports.
*/
import { h, VNode } from "preact";
-import { JustInDevMode } from "./components/JustInDevMode.js";
import {
NavigationHeader,
NavigationHeaderHolder,
@@ -138,14 +137,9 @@ export function PopupNavBar({ path = "" }: { path?: string }): VNode {
>
<i18n.Translate>Balance</i18n.Translate>
</a>
- <JustInDevMode>
- <a
- href={Pages.backup}
- class={path.startsWith("/backup") ? "active" : ""}
- >
- <i18n.Translate>Backup</i18n.Translate>
- </a>
- </JustInDevMode>
+ <a href={Pages.backup} class={path.startsWith("/backup") ? "active" : ""}>
+ <i18n.Translate>Backup</i18n.Translate>
+ </a>
<div style={{ display: "flex", paddingTop: 4, justifyContent: "right" }}>
<a href={Pages.qr}>
<SvgIcon
@@ -177,18 +171,16 @@ export function WalletNavBar({ path = "" }: { path?: string }): VNode {
>
<i18n.Translate>Balance</i18n.Translate>
</a>
- <JustInDevMode>
- <a
- href={Pages.backup}
- class={path.startsWith("/backup") ? "active" : ""}
- >
- <i18n.Translate>Backup</i18n.Translate>
- </a>
+ <a
+ href={Pages.backup}
+ class={path.startsWith("/backup") ? "active" : ""}
+ >
+ <i18n.Translate>Backup</i18n.Translate>
+ </a>
- <a href={Pages.dev} class={path.startsWith("/dev") ? "active" : ""}>
- <i18n.Translate>Dev</i18n.Translate>
- </a>
- </JustInDevMode>
+ <a href={Pages.dev} class={path.startsWith("/dev") ? "active" : ""}>
+ <i18n.Translate>Dev</i18n.Translate>
+ </a>
<div
style={{ display: "flex", paddingTop: 4, justifyContent: "right" }}
diff --git a/packages/taler-wallet-webextension/src/components/QR.stories.tsx b/packages/taler-wallet-webextension/src/components/QR.stories.tsx
new file mode 100644
index 000000000..890cd1941
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/components/QR.stories.tsx
@@ -0,0 +1,31 @@
+/*
+ This file is part of GNU Taler
+ (C) 2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ *
+ * @author Sebastian Javier Marchano (sebasjm)
+ */
+
+import { createExample } from "../test-utils.js";
+import { QR } from "./QR.js";
+
+export default {
+ title: "wallet/qr",
+};
+
+export const Restore = createExample(QR, {
+ text: "taler://restore/6J0RZTJC6AV21WXK87BTE67WTHE9P2QSHF2BZXTP7PDZY2ARYBPG@sync1.demo.taler.net,sync2.demo.taler.net,sync1.demo.taler.net,sync3.demo.taler.net",
+});
diff --git a/packages/taler-wallet-webextension/src/components/QR.tsx b/packages/taler-wallet-webextension/src/components/QR.tsx
index b2257d24d..60710ab15 100644
--- a/packages/taler-wallet-webextension/src/components/QR.tsx
+++ b/packages/taler-wallet-webextension/src/components/QR.tsx
@@ -22,7 +22,7 @@ export function QR({ text }: { text: string }): VNode {
const divRef = useRef<HTMLDivElement>(null);
useEffect(() => {
if (!divRef.current) return;
- const qr = qrcode(0, "L");
+ const qr = qrcode(0, "H");
qr.addData(text);
qr.make();
divRef.current.innerHTML = qr.createSvgTag({
diff --git a/packages/taler-wallet-webextension/src/components/TermsOfService/index.ts b/packages/taler-wallet-webextension/src/components/TermsOfService/index.ts
index 79778a595..4d2c4346e 100644
--- a/packages/taler-wallet-webextension/src/components/TermsOfService/index.ts
+++ b/packages/taler-wallet-webextension/src/components/TermsOfService/index.ts
@@ -26,7 +26,7 @@ import {
LoadingUriView,
ShowButtonsAcceptedTosView,
ShowButtonsNonAcceptedTosView,
- ShowTosContentView
+ ShowTosContentView,
} from "./views.js";
export interface Props {
diff --git a/packages/taler-wallet-webextension/src/components/TermsOfService/state.ts b/packages/taler-wallet-webextension/src/components/TermsOfService/state.ts
index 3cad967ae..c5be71ef0 100644
--- a/packages/taler-wallet-webextension/src/components/TermsOfService/state.ts
+++ b/packages/taler-wallet-webextension/src/components/TermsOfService/state.ts
@@ -35,10 +35,13 @@ export function useComponentState(
* For the exchange selected, bring the status of the terms of service
*/
const terms = useAsyncAsHook(async () => {
- const exchangeTos = await api.wallet.call(WalletApiOperation.GetExchangeTos, {
- exchangeBaseUrl: exchangeUrl,
- acceptedFormat: ["text/xml"]
- })
+ const exchangeTos = await api.wallet.call(
+ WalletApiOperation.GetExchangeTos,
+ {
+ exchangeBaseUrl: exchangeUrl,
+ acceptedFormat: ["text/xml"],
+ },
+ );
const state = buildTermsOfServiceState(exchangeTos);
@@ -78,14 +81,14 @@ export function useComponentState(
if (accepted) {
api.wallet.call(WalletApiOperation.SetExchangeTosAccepted, {
exchangeBaseUrl: exchangeUrl,
- etag: state.version
- })
+ etag: state.version,
+ });
} else {
// mark as not accepted
api.wallet.call(WalletApiOperation.SetExchangeTosAccepted, {
exchangeBaseUrl: exchangeUrl,
- etag: undefined
- })
+ etag: undefined,
+ });
}
// setAccepted(accepted);
if (!readOnly) onChange(accepted); //external update
diff --git a/packages/taler-wallet-webextension/src/components/index.stories.tsx b/packages/taler-wallet-webextension/src/components/index.stories.tsx
index 0e1bc22b2..d71adf689 100644
--- a/packages/taler-wallet-webextension/src/components/index.stories.tsx
+++ b/packages/taler-wallet-webextension/src/components/index.stories.tsx
@@ -24,5 +24,6 @@ import * as a2 from "./PendingTransactions.stories.js";
import * as a3 from "./Amount.stories.js";
import * as a4 from "./ShowFullContractTermPopup.stories.js";
import * as a5 from "./TermsOfService/stories.js";
+import * as a6 from "./QR.stories";
-export default [a1, a2, a3, a4, a5];
+export default [a1, a2, a3, a4, a5, a6];
diff --git a/packages/taler-wallet-webextension/src/context/devContext.ts b/packages/taler-wallet-webextension/src/context/devContext.ts
index c494b9403..99301df52 100644
--- a/packages/taler-wallet-webextension/src/context/devContext.ts
+++ b/packages/taler-wallet-webextension/src/context/devContext.ts
@@ -48,8 +48,9 @@ export const DevContextProviderForTesting = ({
value: {
devMode: !!value,
devModeToggle: {
- value, button: {}
- }
+ value,
+ button: {},
+ },
},
children,
});
@@ -57,7 +58,7 @@ export const DevContextProviderForTesting = ({
export const DevContextProvider = ({ children }: { children: any }): VNode => {
const devModeToggle = useWalletDevMode();
- const value: Type = { devMode: !!devModeToggle.value, devModeToggle }
+ const value: Type = { devMode: !!devModeToggle.value, devModeToggle };
//support for function as children, useful for getting the value right away
children =
children.length === 1 && typeof children === "function"
diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts
index 27f05ce03..4ce81dad8 100644
--- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts
@@ -15,7 +15,11 @@
*/
/* eslint-disable react-hooks/rules-of-hooks */
-import { Amounts, TalerErrorDetail, TalerProtocolTimestamp } from "@gnu-taler/taler-util";
+import {
+ Amounts,
+ TalerErrorDetail,
+ TalerProtocolTimestamp,
+} from "@gnu-taler/taler-util";
import { TalerError, WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { isFuture, parse } from "date-fns";
import { useState } from "preact/hooks";
@@ -32,7 +36,9 @@ export function useComponentState(
): RecursiveState<State> {
const amount = Amounts.parseOrThrow(amountStr);
- const hook = useAsyncAsHook(() => api.wallet.call(WalletApiOperation.ListExchanges, {}));
+ const hook = useAsyncAsHook(() =>
+ api.wallet.call(WalletApiOperation.ListExchanges, {}),
+ );
if (!hook) {
return {
@@ -51,7 +57,7 @@ export function useComponentState(
return () => {
const [subject, setSubject] = useState<string | undefined>();
- const [timestamp, setTimestamp] = useState<string | undefined>()
+ const [timestamp, setTimestamp] = useState<string | undefined>();
const [operationError, setOperationError] = useState<
TalerErrorDetail | undefined
@@ -70,45 +76,51 @@ export function useComponentState(
const exchange = selectedExchange.selected;
const hook = useAsyncAsHook(async () => {
- const resp = await api.wallet.call(WalletApiOperation.PreparePeerPullPayment, {
- amount: amountStr,
- exchangeBaseUrl: exchange.exchangeBaseUrl,
- })
- return resp
- })
+ const resp = await api.wallet.call(
+ WalletApiOperation.PreparePeerPullPayment,
+ {
+ amount: amountStr,
+ exchangeBaseUrl: exchange.exchangeBaseUrl,
+ },
+ );
+ return resp;
+ });
if (!hook) {
return {
status: "loading",
- error: undefined
- }
+ error: undefined,
+ };
}
if (hook.hasError) {
return {
status: "loading-uri",
- error: hook
- }
+ error: hook,
+ };
}
- const { amountEffective, amountRaw } = hook.response
- const requestAmount = Amounts.parseOrThrow(amountRaw)
- const toBeReceived = Amounts.parseOrThrow(amountEffective)
+ const { amountEffective, amountRaw } = hook.response;
+ const requestAmount = Amounts.parseOrThrow(amountRaw);
+ const toBeReceived = Amounts.parseOrThrow(amountEffective);
- let purse_expiration: TalerProtocolTimestamp | undefined = undefined
+ let purse_expiration: TalerProtocolTimestamp | undefined = undefined;
let timestampError: string | undefined = undefined;
- const t = timestamp === undefined ? undefined : parse(timestamp, "dd/MM/yyyy", new Date())
+ const t =
+ timestamp === undefined
+ ? undefined
+ : parse(timestamp, "dd/MM/yyyy", new Date());
if (t !== undefined) {
if (Number.isNaN(t.getTime())) {
- timestampError = 'Should have the format "dd/MM/yyyy"'
+ timestampError = 'Should have the format "dd/MM/yyyy"';
} else {
if (!isFuture(t)) {
- timestampError = 'Should be in the future'
+ timestampError = "Should be in the future";
} else {
purse_expiration = {
- t_s: t.getTime() / 1000
- }
+ t_s: t.getTime() / 1000,
+ };
}
}
}
@@ -116,14 +128,17 @@ export function useComponentState(
async function accept(): Promise<void> {
if (!subject || !purse_expiration) return;
try {
- const resp = await api.wallet.call(WalletApiOperation.InitiatePeerPullPayment, {
- exchangeBaseUrl: exchange.exchangeBaseUrl,
- partialContractTerms: {
- amount: Amounts.stringify(amount),
- summary: subject,
- purse_expiration
+ const resp = await api.wallet.call(
+ WalletApiOperation.InitiatePeerPullPayment,
+ {
+ exchangeBaseUrl: exchange.exchangeBaseUrl,
+ partialContractTerms: {
+ amount: Amounts.stringify(amount),
+ summary: subject,
+ purse_expiration,
+ },
},
- });
+ );
onSuccess(resp.transactionId);
} catch (e) {
@@ -134,12 +149,18 @@ export function useComponentState(
throw Error("error trying to accept");
}
}
- const unableToCreate = !subject || Amounts.isZero(amount) || !purse_expiration
+ const unableToCreate =
+ !subject || Amounts.isZero(amount) || !purse_expiration;
return {
status: "ready",
subject: {
- error: subject === undefined ? undefined : !subject ? "Can't be empty" : undefined,
+ error:
+ subject === undefined
+ ? undefined
+ : !subject
+ ? "Can't be empty"
+ : undefined,
value: subject ?? "",
onInput: async (e) => setSubject(e),
},
@@ -147,8 +168,8 @@ export function useComponentState(
error: timestampError,
value: timestamp === undefined ? "" : timestamp,
onInput: async (e) => {
- setTimestamp(e)
- }
+ setTimestamp(e);
+ },
},
doSelectExchange: selectedExchange.doSelect,
exchangeUrl: exchange.exchangeBaseUrl,
diff --git a/packages/taler-wallet-webextension/src/cta/InvoicePay/index.ts b/packages/taler-wallet-webextension/src/cta/InvoicePay/index.ts
index 693803587..6e16b528c 100644
--- a/packages/taler-wallet-webextension/src/cta/InvoicePay/index.ts
+++ b/packages/taler-wallet-webextension/src/cta/InvoicePay/index.ts
@@ -18,7 +18,7 @@ import {
AbsoluteTime,
AmountJson,
PreparePayResult,
- TalerErrorDetail
+ TalerErrorDetail,
} from "@gnu-taler/taler-util";
import { Loading } from "../../components/Loading.js";
import { HookError } from "../../hooks/useAsyncAsHook.js";
diff --git a/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts b/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts
index 457827127..1846794fc 100644
--- a/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/InvoicePay/state.ts
@@ -21,7 +21,7 @@ import {
PreparePayResult,
PreparePayResultType,
TalerErrorDetail,
- TalerProtocolTimestamp
+ TalerProtocolTimestamp,
} from "@gnu-taler/taler-util";
import { TalerError, WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { useEffect, useState } from "preact/hooks";
@@ -41,10 +41,12 @@ export function useComponentState(
return { p2p, balance };
});
- useEffect(() => api.listener.onUpdateNotification(
- [NotificationType.CoinWithdrawn],
- hook?.retry
- ));
+ useEffect(() =>
+ api.listener.onUpdateNotification(
+ [NotificationType.CoinWithdrawn],
+ hook?.retry,
+ ),
+ );
const [operationError, setOperationError] = useState<
TalerErrorDetail | undefined
@@ -63,10 +65,7 @@ export function useComponentState(
};
}
- const {
- contractTerms,
- peerPullPaymentIncomingId,
- } = hook.response.p2p;
+ const { contractTerms, peerPullPaymentIncomingId } = hook.response.p2p;
const amountStr: string = contractTerms?.amount;
const amount = Amounts.parseOrThrow(amountStr);
@@ -134,9 +133,12 @@ export function useComponentState(
async function accept(): Promise<void> {
try {
- const resp = await api.wallet.call(WalletApiOperation.AcceptPeerPullPayment, {
- peerPullPaymentIncomingId,
- });
+ const resp = await api.wallet.call(
+ WalletApiOperation.AcceptPeerPullPayment,
+ {
+ peerPullPaymentIncomingId,
+ },
+ );
onSuccess(resp.transactionId);
} catch (e) {
if (e instanceof TalerError) {
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/index.ts b/packages/taler-wallet-webextension/src/cta/Payment/index.ts
index b4e59e666..f0270b96c 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/index.ts
+++ b/packages/taler-wallet-webextension/src/cta/Payment/index.ts
@@ -15,8 +15,10 @@
*/
import {
- AmountJson, PreparePayResult,
- PreparePayResultAlreadyConfirmed, PreparePayResultPaymentPossible
+ AmountJson,
+ PreparePayResult,
+ PreparePayResultAlreadyConfirmed,
+ PreparePayResultPaymentPossible,
} from "@gnu-taler/taler-util";
import { Loading } from "../../components/Loading.js";
import { HookError } from "../../hooks/useAsyncAsHook.js";
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/state.ts b/packages/taler-wallet-webextension/src/cta/Payment/state.ts
index 414bc2000..49d022320 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Payment/state.ts
@@ -15,10 +15,11 @@
*/
import {
- Amounts, ConfirmPayResultType,
+ Amounts,
+ ConfirmPayResultType,
NotificationType,
PreparePayResultType,
- TalerErrorCode
+ TalerErrorCode,
} from "@gnu-taler/taler-util";
import { TalerError, WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { useEffect, useState } from "preact/hooks";
@@ -35,17 +36,24 @@ export function useComponentState(
const hook = useAsyncAsHook(async () => {
if (!talerPayUri) throw Error("ERROR_NO-URI-FOR-PAYMENT");
- const payStatus = await api.wallet.call(WalletApiOperation.PreparePayForUri, {
- talerPayUri: talerPayUri
- });
+ const payStatus = await api.wallet.call(
+ WalletApiOperation.PreparePayForUri,
+ {
+ talerPayUri: talerPayUri,
+ },
+ );
const balance = await api.wallet.call(WalletApiOperation.GetBalances, {});
return { payStatus, balance, uri: talerPayUri };
}, []);
- useEffect(() => api.listener.onUpdateNotification(
- [NotificationType.CoinWithdrawn],
- hook?.retry
- ), [hook]);
+ useEffect(
+ () =>
+ api.listener.onUpdateNotification(
+ [NotificationType.CoinWithdrawn],
+ hook?.retry,
+ ),
+ [hook],
+ );
const hookResponse = !hook || hook.hasError ? undefined : hook.response;
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/test.ts b/packages/taler-wallet-webextension/src/cta/Payment/test.ts
index 8aa099fdc..b02ac6274 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Payment/test.ts
@@ -20,11 +20,13 @@
*/
import {
- Amounts, ConfirmPayResult,
+ Amounts,
+ ConfirmPayResult,
ConfirmPayResultType,
- NotificationType, PreparePayResultInsufficientBalance,
+ NotificationType,
+ PreparePayResultInsufficientBalance,
PreparePayResultPaymentPossible,
- PreparePayResultType
+ PreparePayResultType,
} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { expect } from "chai";
@@ -42,11 +44,9 @@ describe("Payment CTA states", () => {
onSuccess: async () => {
null;
},
- }
+ };
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentState(props, mock),
- );
+ mountHook(() => useComponentState(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -66,7 +66,7 @@ describe("Payment CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should response with no balance", async () => {
@@ -78,18 +78,24 @@ describe("Payment CTA states", () => {
onSuccess: async () => {
null;
},
- }
+ };
- handler.addWalletCallResponse(WalletApiOperation.PreparePayForUri, undefined, {
- status: PreparePayResultType.InsufficientBalance,
- amountRaw: "USD:10",
- } as PreparePayResultInsufficientBalance)
- handler.addWalletCallResponse(WalletApiOperation.GetBalances, {}, { balances: [] })
+ handler.addWalletCallResponse(
+ WalletApiOperation.PreparePayForUri,
+ undefined,
+ {
+ status: PreparePayResultType.InsufficientBalance,
+ amountRaw: "USD:10",
+ } as PreparePayResultInsufficientBalance,
+ );
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetBalances,
+ {},
+ { balances: [] },
+ );
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentState(props, mock),
- );
+ mountHook(() => useComponentState(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -102,7 +108,7 @@ describe("Payment CTA states", () => {
{
const r = pullLastResultOrThrow();
if (r.status !== "no-balance-for-currency") {
- expect(r).eq({})
+ expect(r).eq({});
return;
}
expect(r.balance).undefined;
@@ -110,7 +116,7 @@ describe("Payment CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should not be able to pay if there is no enough balance", async () => {
@@ -122,25 +128,33 @@ describe("Payment CTA states", () => {
onSuccess: async () => {
null;
},
- }
- handler.addWalletCallResponse(WalletApiOperation.PreparePayForUri, undefined, {
- status: PreparePayResultType.InsufficientBalance,
- amountRaw: "USD:10",
- } as PreparePayResultInsufficientBalance)
- handler.addWalletCallResponse(WalletApiOperation.GetBalances, {}, {
- balances: [{
- available: "USD:5",
- hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
- requiresUserInput: false,
- }]
- })
+ };
+ handler.addWalletCallResponse(
+ WalletApiOperation.PreparePayForUri,
+ undefined,
+ {
+ status: PreparePayResultType.InsufficientBalance,
+ amountRaw: "USD:10",
+ } as PreparePayResultInsufficientBalance,
+ );
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetBalances,
+ {},
+ {
+ balances: [
+ {
+ available: "USD:5",
+ hasPendingTransactions: false,
+ pendingIncoming: "USD:0",
+ pendingOutgoing: "USD:0",
+ requiresUserInput: false,
+ },
+ ],
+ },
+ );
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentState(props, mock),
- );
+ mountHook(() => useComponentState(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -158,7 +172,7 @@ describe("Payment CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should be able to pay (without fee)", async () => {
@@ -170,25 +184,33 @@ describe("Payment CTA states", () => {
onSuccess: async () => {
null;
},
- }
- handler.addWalletCallResponse(WalletApiOperation.PreparePayForUri, undefined, {
- status: PreparePayResultType.PaymentPossible,
- amountRaw: "USD:10",
- amountEffective: "USD:10",
- } as PreparePayResultPaymentPossible)
- handler.addWalletCallResponse(WalletApiOperation.GetBalances, {}, {
- balances: [{
- available: "USD:15",
- hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
- requiresUserInput: false,
- }]
- })
+ };
+ handler.addWalletCallResponse(
+ WalletApiOperation.PreparePayForUri,
+ undefined,
+ {
+ status: PreparePayResultType.PaymentPossible,
+ amountRaw: "USD:10",
+ amountEffective: "USD:10",
+ } as PreparePayResultPaymentPossible,
+ );
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetBalances,
+ {},
+ {
+ balances: [
+ {
+ available: "USD:15",
+ hasPendingTransactions: false,
+ pendingIncoming: "USD:0",
+ pendingOutgoing: "USD:0",
+ requiresUserInput: false,
+ },
+ ],
+ },
+ );
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentState(props, mock),
- );
+ mountHook(() => useComponentState(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -201,8 +223,8 @@ describe("Payment CTA states", () => {
{
const r = pullLastResultOrThrow();
if (r.status !== "ready") {
- expect(r).eq({})
- return
+ expect(r).eq({});
+ return;
}
expect(r.balance).deep.equal(Amounts.parseOrThrow("USD:15"));
expect(r.amount).deep.equal(Amounts.parseOrThrow("USD:10"));
@@ -210,7 +232,7 @@ describe("Payment CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should be able to pay (with fee)", async () => {
@@ -222,29 +244,33 @@ describe("Payment CTA states", () => {
onSuccess: async () => {
null;
},
- }
- handler.addWalletCallResponse(WalletApiOperation.PreparePayForUri, undefined, {
- status: PreparePayResultType.PaymentPossible,
- amountRaw: "USD:9",
- amountEffective: "USD:10",
- } as PreparePayResultPaymentPossible)
- handler.addWalletCallResponse(WalletApiOperation.GetBalances, {}, {
- balances: [{
- available: "USD:15",
- hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
- requiresUserInput: false,
- }]
- })
+ };
+ handler.addWalletCallResponse(
+ WalletApiOperation.PreparePayForUri,
+ undefined,
+ {
+ status: PreparePayResultType.PaymentPossible,
+ amountRaw: "USD:9",
+ amountEffective: "USD:10",
+ } as PreparePayResultPaymentPossible,
+ );
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetBalances,
+ {},
+ {
+ balances: [
+ {
+ available: "USD:15",
+ hasPendingTransactions: false,
+ pendingIncoming: "USD:0",
+ pendingOutgoing: "USD:0",
+ requiresUserInput: false,
+ },
+ ],
+ },
+ );
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentState(
- props,
- mock
-
- ),
- );
+ mountHook(() => useComponentState(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -263,7 +289,7 @@ describe("Payment CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should get confirmation done after pay successfully", async () => {
@@ -275,33 +301,39 @@ describe("Payment CTA states", () => {
onSuccess: async () => {
null;
},
- }
- handler.addWalletCallResponse(WalletApiOperation.PreparePayForUri, undefined, {
- status: PreparePayResultType.PaymentPossible,
- amountRaw: "USD:9",
- amountEffective: "USD:10",
- } as PreparePayResultPaymentPossible)
-
- handler.addWalletCallResponse(WalletApiOperation.GetBalances, {}, {
- balances: [{
- available: "USD:15",
- hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
- requiresUserInput: false,
- }]
- })
+ };
+ handler.addWalletCallResponse(
+ WalletApiOperation.PreparePayForUri,
+ undefined,
+ {
+ status: PreparePayResultType.PaymentPossible,
+ amountRaw: "USD:9",
+ amountEffective: "USD:10",
+ } as PreparePayResultPaymentPossible,
+ );
+
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetBalances,
+ {},
+ {
+ balances: [
+ {
+ available: "USD:15",
+ hasPendingTransactions: false,
+ pendingIncoming: "USD:0",
+ pendingOutgoing: "USD:0",
+ requiresUserInput: false,
+ },
+ ],
+ },
+ );
handler.addWalletCallResponse(WalletApiOperation.ConfirmPay, undefined, {
type: ConfirmPayResultType.Done,
contractTerms: {},
- } as ConfirmPayResult)
+ } as ConfirmPayResult);
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentState(
- props, mock
- ),
- );
+ mountHook(() => useComponentState(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -314,7 +346,7 @@ describe("Payment CTA states", () => {
{
const r = pullLastResultOrThrow();
if (r.status !== "ready") {
- expect(r).eq({})
+ expect(r).eq({});
return;
}
expect(r.balance).deep.equal(Amounts.parseOrThrow("USD:15"));
@@ -324,7 +356,7 @@ describe("Payment CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should not stay in ready state after pay with error", async () => {
@@ -335,32 +367,38 @@ describe("Payment CTA states", () => {
goToWalletManualWithdraw: nullFunction,
onSuccess: nullFunction,
};
- handler.addWalletCallResponse(WalletApiOperation.PreparePayForUri, undefined, {
- status: PreparePayResultType.PaymentPossible,
- amountRaw: "USD:9",
- amountEffective: "USD:10",
- } as PreparePayResultPaymentPossible)
-
- handler.addWalletCallResponse(WalletApiOperation.GetBalances, {}, {
- balances: [{
- available: "USD:15",
- hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
- requiresUserInput: false,
- }]
- })
+ handler.addWalletCallResponse(
+ WalletApiOperation.PreparePayForUri,
+ undefined,
+ {
+ status: PreparePayResultType.PaymentPossible,
+ amountRaw: "USD:9",
+ amountEffective: "USD:10",
+ } as PreparePayResultPaymentPossible,
+ );
+
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetBalances,
+ {},
+ {
+ balances: [
+ {
+ available: "USD:15",
+ hasPendingTransactions: false,
+ pendingIncoming: "USD:0",
+ pendingOutgoing: "USD:0",
+ requiresUserInput: false,
+ },
+ ],
+ },
+ );
handler.addWalletCallResponse(WalletApiOperation.ConfirmPay, undefined, {
type: ConfirmPayResultType.Pending,
lastError: { code: 1 },
- } as ConfirmPayResult)
+ } as ConfirmPayResult);
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentState(
- props, mock
- ),
- );
+ mountHook(() => useComponentState(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -368,7 +406,7 @@ describe("Payment CTA states", () => {
expect(error).undefined;
}
- expect(await waitForStateUpdate()).true
+ expect(await waitForStateUpdate()).true;
{
const r = pullLastResultOrThrow();
@@ -380,7 +418,7 @@ describe("Payment CTA states", () => {
r.payHandler.onClick();
}
- expect(await waitForStateUpdate()).true
+ expect(await waitForStateUpdate()).true;
{
const r = pullLastResultOrThrow();
@@ -402,7 +440,7 @@ describe("Payment CTA states", () => {
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should update balance if a coins is withdraw", async () => {
@@ -415,46 +453,62 @@ describe("Payment CTA states", () => {
onSuccess: async () => {
null;
},
- }
+ };
- handler.addWalletCallResponse(WalletApiOperation.PreparePayForUri, undefined, {
- status: PreparePayResultType.PaymentPossible,
- amountRaw: "USD:9",
- amountEffective: "USD:10",
- } as PreparePayResultPaymentPossible)
-
- handler.addWalletCallResponse(WalletApiOperation.GetBalances, {}, {
- balances: [{
- available: "USD:10",
- hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
- requiresUserInput: false,
- }]
- })
-
- handler.addWalletCallResponse(WalletApiOperation.PreparePayForUri, undefined, {
- status: PreparePayResultType.PaymentPossible,
- amountRaw: "USD:9",
- amountEffective: "USD:10",
- } as PreparePayResultPaymentPossible)
-
- handler.addWalletCallResponse(WalletApiOperation.GetBalances, {}, {
- balances: [{
- available: "USD:15",
- hasPendingTransactions: false,
- pendingIncoming: "USD:0",
- pendingOutgoing: "USD:0",
- requiresUserInput: false,
- }]
- })
+ handler.addWalletCallResponse(
+ WalletApiOperation.PreparePayForUri,
+ undefined,
+ {
+ status: PreparePayResultType.PaymentPossible,
+ amountRaw: "USD:9",
+ amountEffective: "USD:10",
+ } as PreparePayResultPaymentPossible,
+ );
+
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetBalances,
+ {},
+ {
+ balances: [
+ {
+ available: "USD:10",
+ hasPendingTransactions: false,
+ pendingIncoming: "USD:0",
+ pendingOutgoing: "USD:0",
+ requiresUserInput: false,
+ },
+ ],
+ },
+ );
+
+ handler.addWalletCallResponse(
+ WalletApiOperation.PreparePayForUri,
+ undefined,
+ {
+ status: PreparePayResultType.PaymentPossible,
+ amountRaw: "USD:9",
+ amountEffective: "USD:10",
+ } as PreparePayResultPaymentPossible,
+ );
+
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetBalances,
+ {},
+ {
+ balances: [
+ {
+ available: "USD:15",
+ hasPendingTransactions: false,
+ pendingIncoming: "USD:0",
+ pendingOutgoing: "USD:0",
+ requiresUserInput: false,
+ },
+ ],
+ },
+ );
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentState(
- props, mock
- ),
- );
+ mountHook(() => useComponentState(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -467,8 +521,8 @@ describe("Payment CTA states", () => {
{
const r = pullLastResultOrThrow();
if (r.status !== "ready") {
- expect(r).eq({})
- return
+ expect(r).eq({});
+ return;
}
expect(r.balance).deep.equal(Amounts.parseOrThrow("USD:10"));
expect(r.amount).deep.equal(Amounts.parseOrThrow("USD:9"));
@@ -483,8 +537,8 @@ describe("Payment CTA states", () => {
{
const r = pullLastResultOrThrow();
if (r.status !== "ready") {
- expect(r).eq({})
- return
+ expect(r).eq({});
+ return;
}
expect(r.balance).deep.equal(Amounts.parseOrThrow("USD:15"));
expect(r.amount).deep.equal(Amounts.parseOrThrow("USD:9"));
@@ -493,6 +547,6 @@ describe("Payment CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
});
diff --git a/packages/taler-wallet-webextension/src/cta/Recovery/state.ts b/packages/taler-wallet-webextension/src/cta/Recovery/state.ts
index 750fd22f7..3a5d94e2e 100644
--- a/packages/taler-wallet-webextension/src/cta/Recovery/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Recovery/state.ts
@@ -48,7 +48,9 @@ export function useComponentState(
const recovery = info;
async function recoverBackup(): Promise<void> {
- await wxApi.wallet.call(WalletApiOperation.ImportBackupRecovery, { recovery });
+ await wxApi.wallet.call(WalletApiOperation.ImportBackupRecovery, {
+ recovery,
+ });
onSuccess();
}
diff --git a/packages/taler-wallet-webextension/src/cta/Refund/index.ts b/packages/taler-wallet-webextension/src/cta/Refund/index.ts
index 6bd976aab..099f72919 100644
--- a/packages/taler-wallet-webextension/src/cta/Refund/index.ts
+++ b/packages/taler-wallet-webextension/src/cta/Refund/index.ts
@@ -25,7 +25,7 @@ import {
IgnoredView,
InProgressView,
LoadingUriView,
- ReadyView
+ ReadyView,
} from "./views.js";
export interface Props {
diff --git a/packages/taler-wallet-webextension/src/cta/Refund/state.ts b/packages/taler-wallet-webextension/src/cta/Refund/state.ts
index 65a895fc3..94c5567d6 100644
--- a/packages/taler-wallet-webextension/src/cta/Refund/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Refund/state.ts
@@ -29,13 +29,17 @@ export function useComponentState(
const info = useAsyncAsHook(async () => {
if (!talerRefundUri) throw Error("ERROR_NO-URI-FOR-REFUND");
- const refund = await api.wallet.call(WalletApiOperation.PrepareRefund, { talerRefundUri });
+ const refund = await api.wallet.call(WalletApiOperation.PrepareRefund, {
+ talerRefundUri,
+ });
return { refund, uri: talerRefundUri };
});
- useEffect(() => api.listener.onUpdateNotification(
- [NotificationType.RefreshMelted],
- info?.retry)
+ useEffect(() =>
+ api.listener.onUpdateNotification(
+ [NotificationType.RefreshMelted],
+ info?.retry,
+ ),
);
if (!info) {
@@ -52,7 +56,7 @@ export function useComponentState(
const doAccept = async (): Promise<void> => {
const res = await api.wallet.call(WalletApiOperation.ApplyRefund, {
- talerRefundUri: uri
+ talerRefundUri: uri,
});
onSuccess(res.transactionId);
diff --git a/packages/taler-wallet-webextension/src/cta/Refund/test.ts b/packages/taler-wallet-webextension/src/cta/Refund/test.ts
index 41996c133..927c45981 100644
--- a/packages/taler-wallet-webextension/src/cta/Refund/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Refund/test.ts
@@ -21,7 +21,10 @@
import {
AmountJson,
- Amounts, NotificationType, OrderShortInfo, PrepareRefundResult
+ Amounts,
+ NotificationType,
+ OrderShortInfo,
+ PrepareRefundResult,
} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { expect } from "chai";
@@ -45,7 +48,7 @@ describe("Refund CTA states", () => {
null;
},
},
- mock
+ mock,
// {
// prepareRefund: async () => ({}),
// applyRefund: async () => ({}),
@@ -73,7 +76,7 @@ describe("Refund CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should be ready after loading", async () => {
@@ -86,7 +89,7 @@ describe("Refund CTA states", () => {
onSuccess: async () => {
null;
},
- }
+ };
handler.addWalletCallResponse(WalletApiOperation.PrepareRefund, undefined, {
awaiting: "EUR:2",
@@ -103,12 +106,13 @@ describe("Refund CTA states", () => {
orderId: "orderId1",
summary: "the summary",
} as OrderShortInfo,
- })
+ });
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
mountHook(() =>
useComponentState(
- props, mock
+ props,
+ mock,
// {
// prepareRefund: async () =>
// ({
@@ -154,7 +158,7 @@ describe("Refund CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should be ignored after clicking the ignore button", async () => {
@@ -167,7 +171,7 @@ describe("Refund CTA states", () => {
onSuccess: async () => {
null;
},
- }
+ };
handler.addWalletCallResponse(WalletApiOperation.PrepareRefund, undefined, {
awaiting: "EUR:2",
@@ -184,7 +188,7 @@ describe("Refund CTA states", () => {
orderId: "orderId1",
summary: "the summary",
} as OrderShortInfo,
- })
+ });
// handler.addWalletCall(WalletApiOperation.ApplyRefund)
// handler.addWalletCall(WalletApiOperation.PrepareRefund, undefined, {
// awaiting: "EUR:1",
@@ -205,7 +209,8 @@ describe("Refund CTA states", () => {
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
mountHook(() =>
useComponentState(
- props, mock
+ props,
+ mock,
// {
// prepareRefund: async () =>
// ({
@@ -242,11 +247,11 @@ describe("Refund CTA states", () => {
const state = pullLastResultOrThrow();
if (state.status !== "ready") {
- expect(state).eq({})
+ expect(state).eq({});
return;
}
if (state.error) {
- expect(state).eq({})
+ expect(state).eq({});
return;
}
expect(state.accept.onClick).not.undefined;
@@ -264,18 +269,18 @@ describe("Refund CTA states", () => {
const state = pullLastResultOrThrow();
if (state.status !== "ignored") {
- expect(state).eq({})
+ expect(state).eq({});
return;
}
if (state.error) {
- expect(state).eq({})
+ expect(state).eq({});
return;
}
expect(state.merchantName).eq("the merchant name");
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should be in progress when doing refresh", async () => {
@@ -288,7 +293,7 @@ describe("Refund CTA states", () => {
onSuccess: async () => {
null;
},
- }
+ };
handler.addWalletCallResponse(WalletApiOperation.PrepareRefund, undefined, {
awaiting: "EUR:2",
@@ -305,7 +310,7 @@ describe("Refund CTA states", () => {
orderId: "orderId1",
summary: "the summary",
} as OrderShortInfo,
- })
+ });
handler.addWalletCallResponse(WalletApiOperation.PrepareRefund, undefined, {
awaiting: "EUR:1",
effectivePaid: "EUR:2",
@@ -321,7 +326,7 @@ describe("Refund CTA states", () => {
orderId: "orderId1",
summary: "the summary",
} as OrderShortInfo,
- })
+ });
handler.addWalletCallResponse(WalletApiOperation.PrepareRefund, undefined, {
awaiting: "EUR:0",
effectivePaid: "EUR:2",
@@ -337,14 +342,10 @@ describe("Refund CTA states", () => {
orderId: "orderId1",
summary: "the summary",
} as OrderShortInfo,
- })
+ });
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentState(
- props, mock
- ),
- );
+ mountHook(() => useComponentState(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -358,7 +359,7 @@ describe("Refund CTA states", () => {
const state = pullLastResultOrThrow();
if (state.status !== "in-progress") {
- expect(state).eq({})
+ expect(state).eq({});
return;
}
if (state.error) expect.fail();
@@ -367,7 +368,7 @@ describe("Refund CTA states", () => {
expect(state.amount).deep.eq(Amounts.parseOrThrow("EUR:2"));
// expect(state.progress).closeTo(1 / 3, 0.01)
- handler.notifyEventFromWallet(NotificationType.RefreshMelted)
+ handler.notifyEventFromWallet(NotificationType.RefreshMelted);
}
expect(await waitForStateUpdate()).true;
@@ -376,7 +377,7 @@ describe("Refund CTA states", () => {
const state = pullLastResultOrThrow();
if (state.status !== "in-progress") {
- expect(state).eq({})
+ expect(state).eq({});
return;
}
if (state.error) expect.fail();
@@ -385,7 +386,7 @@ describe("Refund CTA states", () => {
expect(state.amount).deep.eq(Amounts.parseOrThrow("EUR:2"));
// expect(state.progress).closeTo(2 / 3, 0.01)
- handler.notifyEventFromWallet(NotificationType.RefreshMelted)
+ handler.notifyEventFromWallet(NotificationType.RefreshMelted);
}
expect(await waitForStateUpdate()).true;
@@ -394,7 +395,7 @@ describe("Refund CTA states", () => {
const state = pullLastResultOrThrow();
if (state.status !== "ready") {
- expect(state).eq({})
+ expect(state).eq({});
return;
}
if (state.error) expect.fail();
@@ -404,6 +405,6 @@ describe("Refund CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
});
diff --git a/packages/taler-wallet-webextension/src/cta/Tip/index.ts b/packages/taler-wallet-webextension/src/cta/Tip/index.ts
index 520d854f2..ff917008f 100644
--- a/packages/taler-wallet-webextension/src/cta/Tip/index.ts
+++ b/packages/taler-wallet-webextension/src/cta/Tip/index.ts
@@ -25,7 +25,7 @@ import {
AcceptedView,
IgnoredView,
LoadingUriView,
- ReadyView
+ ReadyView,
} from "./views.js";
export interface Props {
diff --git a/packages/taler-wallet-webextension/src/cta/Tip/state.ts b/packages/taler-wallet-webextension/src/cta/Tip/state.ts
index 00e1fddad..ea9ba1b37 100644
--- a/packages/taler-wallet-webextension/src/cta/Tip/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Tip/state.ts
@@ -26,7 +26,9 @@ export function useComponentState(
): State {
const tipInfo = useAsyncAsHook(async () => {
if (!talerTipUri) throw Error("ERROR_NO-URI-FOR-TIP");
- const tip = await api.wallet.call(WalletApiOperation.PrepareTip, { talerTipUri });
+ const tip = await api.wallet.call(WalletApiOperation.PrepareTip, {
+ talerTipUri,
+ });
return { tip };
});
@@ -46,7 +48,9 @@ export function useComponentState(
const { tip } = tipInfo.response;
const doAccept = async (): Promise<void> => {
- const res = await api.wallet.call(WalletApiOperation.AcceptTip, { walletTipId: tip.walletTipId });
+ const res = await api.wallet.call(WalletApiOperation.AcceptTip, {
+ walletTipId: tip.walletTipId,
+ });
//FIX: this may not be seen since we are moving to the success also
tipInfo.retry();
diff --git a/packages/taler-wallet-webextension/src/cta/Tip/test.ts b/packages/taler-wallet-webextension/src/cta/Tip/test.ts
index 69badbede..e57b9ec4d 100644
--- a/packages/taler-wallet-webextension/src/cta/Tip/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Tip/test.ts
@@ -65,11 +65,10 @@ describe("Tip CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should be ready for accepting the tip", async () => {
-
const { handler, mock } = createWalletApiMock();
handler.addWalletCallResponse(WalletApiOperation.PrepareTip, undefined, {
@@ -79,9 +78,9 @@ describe("Tip CTA states", () => {
tipAmountEffective: "EUR:1",
walletTipId: "tip_id",
expirationTimestamp: {
- t_s: 1
+ t_s: 1,
},
- tipAmountRaw: ""
+ tipAmountRaw: "",
});
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
@@ -112,7 +111,7 @@ describe("Tip CTA states", () => {
const state = pullLastResultOrThrow();
if (state.status !== "ready") {
- expect(state).eq({ status: "ready" })
+ expect(state).eq({ status: "ready" });
return;
}
if (state.error) expect.fail();
@@ -132,9 +131,9 @@ describe("Tip CTA states", () => {
tipAmountEffective: "EUR:1",
walletTipId: "tip_id",
expirationTimestamp: {
- t_s: 1
+ t_s: 1,
},
- tipAmountRaw: ""
+ tipAmountRaw: "",
});
expect(await waitForStateUpdate()).true;
@@ -142,7 +141,7 @@ describe("Tip CTA states", () => {
const state = pullLastResultOrThrow();
if (state.status !== "accepted") {
- expect(state).eq({ status: "accepted" })
+ expect(state).eq({ status: "accepted" });
return;
}
if (state.error) expect.fail();
@@ -151,7 +150,7 @@ describe("Tip CTA states", () => {
expect(state.exchangeBaseUrl).eq("exchange url");
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should be ignored after clicking the ignore button", async () => {
@@ -165,7 +164,7 @@ describe("Tip CTA states", () => {
expirationTimestamp: {
t_s: 1,
},
- tipAmountRaw: ""
+ tipAmountRaw: "",
});
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
@@ -203,7 +202,7 @@ describe("Tip CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should render accepted if the tip has been used previously", async () => {
@@ -255,6 +254,6 @@ describe("Tip CTA states", () => {
expect(state.exchangeBaseUrl).eq("exchange url");
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
});
diff --git a/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts b/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts
index 089f46047..c5e143f42 100644
--- a/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/TransferCreate/state.ts
@@ -14,7 +14,11 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { Amounts, TalerErrorDetail, TalerProtocolTimestamp } from "@gnu-taler/taler-util";
+import {
+ Amounts,
+ TalerErrorDetail,
+ TalerProtocolTimestamp,
+} from "@gnu-taler/taler-util";
import { TalerError, WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { format, isFuture, parse } from "date-fns";
import { useState } from "preact/hooks";
@@ -29,52 +33,57 @@ export function useComponentState(
const amount = Amounts.parseOrThrow(amountStr);
const [subject, setSubject] = useState<string | undefined>();
- const [timestamp, setTimestamp] = useState<string | undefined>()
+ const [timestamp, setTimestamp] = useState<string | undefined>();
const [operationError, setOperationError] = useState<
TalerErrorDetail | undefined
>(undefined);
-
const hook = useAsyncAsHook(async () => {
- const resp = await api.wallet.call(WalletApiOperation.PreparePeerPushPayment, {
- amount: amountStr
- })
- return resp
- })
+ const resp = await api.wallet.call(
+ WalletApiOperation.PreparePeerPushPayment,
+ {
+ amount: amountStr,
+ },
+ );
+ return resp;
+ });
if (!hook) {
return {
status: "loading",
- error: undefined
- }
+ error: undefined,
+ };
}
if (hook.hasError) {
return {
status: "loading-uri",
- error: hook
- }
+ error: hook,
+ };
}
- const { amountEffective, amountRaw } = hook.response
- const debitAmount = Amounts.parseOrThrow(amountRaw)
- const toBeReceived = Amounts.parseOrThrow(amountEffective)
+ const { amountEffective, amountRaw } = hook.response;
+ const debitAmount = Amounts.parseOrThrow(amountRaw);
+ const toBeReceived = Amounts.parseOrThrow(amountEffective);
- let purse_expiration: TalerProtocolTimestamp | undefined = undefined
+ let purse_expiration: TalerProtocolTimestamp | undefined = undefined;
let timestampError: string | undefined = undefined;
- const t = timestamp === undefined ? undefined : parse(timestamp, "dd/MM/yyyy", new Date())
+ const t =
+ timestamp === undefined
+ ? undefined
+ : parse(timestamp, "dd/MM/yyyy", new Date());
if (t !== undefined) {
if (Number.isNaN(t.getTime())) {
- timestampError = 'Should have the format "dd/MM/yyyy"'
+ timestampError = 'Should have the format "dd/MM/yyyy"';
} else {
if (!isFuture(t)) {
- timestampError = 'Should be in the future'
+ timestampError = "Should be in the future";
} else {
purse_expiration = {
- t_s: t.getTime() / 1000
- }
+ t_s: t.getTime() / 1000,
+ };
}
}
}
@@ -82,13 +91,16 @@ export function useComponentState(
async function accept(): Promise<void> {
if (!subject || !purse_expiration) return;
try {
- const resp = await api.wallet.call(WalletApiOperation.InitiatePeerPushPayment, {
- partialContractTerms: {
- summary: subject,
- amount: amountStr,
- purse_expiration
+ const resp = await api.wallet.call(
+ WalletApiOperation.InitiatePeerPushPayment,
+ {
+ partialContractTerms: {
+ summary: subject,
+ amount: amountStr,
+ purse_expiration,
+ },
},
- });
+ );
onSuccess(resp.transactionId);
} catch (e) {
if (e instanceof TalerError) {
@@ -99,7 +111,8 @@ export function useComponentState(
}
}
- const unableToCreate = !subject || Amounts.isZero(amount) || !purse_expiration
+ const unableToCreate =
+ !subject || Amounts.isZero(amount) || !purse_expiration;
return {
status: "ready",
@@ -107,7 +120,12 @@ export function useComponentState(
onClick: onClose,
},
subject: {
- error: subject === undefined ? undefined : !subject ? "Can't be empty" : undefined,
+ error:
+ subject === undefined
+ ? undefined
+ : !subject
+ ? "Can't be empty"
+ : undefined,
value: subject ?? "",
onInput: async (e) => setSubject(e),
},
@@ -115,8 +133,8 @@ export function useComponentState(
error: timestampError,
value: timestamp === undefined ? "" : timestamp,
onInput: async (e) => {
- setTimestamp(e)
- }
+ setTimestamp(e);
+ },
},
create: {
onClick: unableToCreate ? undefined : accept,
diff --git a/packages/taler-wallet-webextension/src/cta/TransferPickup/index.ts b/packages/taler-wallet-webextension/src/cta/TransferPickup/index.ts
index 954243fe8..399f1e290 100644
--- a/packages/taler-wallet-webextension/src/cta/TransferPickup/index.ts
+++ b/packages/taler-wallet-webextension/src/cta/TransferPickup/index.ts
@@ -17,7 +17,7 @@
import {
AbsoluteTime,
AmountJson,
- TalerErrorDetail
+ TalerErrorDetail,
} from "@gnu-taler/taler-util";
import { Loading } from "../../components/Loading.js";
import { HookError } from "../../hooks/useAsyncAsHook.js";
diff --git a/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts b/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts
index 4b860559e..e8fb99ab7 100644
--- a/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/TransferPickup/state.ts
@@ -18,7 +18,7 @@ import {
AbsoluteTime,
Amounts,
TalerErrorDetail,
- TalerProtocolTimestamp
+ TalerProtocolTimestamp,
} from "@gnu-taler/taler-util";
import { TalerError, WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { useState } from "preact/hooks";
@@ -52,10 +52,7 @@ export function useComponentState(
};
}
- const {
- contractTerms,
- peerPushPaymentIncomingId,
- } = hook.response;
+ const { contractTerms, peerPushPaymentIncomingId } = hook.response;
const amount: string = contractTerms?.amount;
const summary: string | undefined = contractTerms?.summary;
@@ -64,9 +61,12 @@ export function useComponentState(
async function accept(): Promise<void> {
try {
- const resp = await api.wallet.call(WalletApiOperation.AcceptPeerPushPayment, {
- peerPushPaymentIncomingId,
- });
+ const resp = await api.wallet.call(
+ WalletApiOperation.AcceptPeerPushPayment,
+ {
+ peerPushPaymentIncomingId,
+ },
+ );
onSuccess(resp.transactionId);
} catch (e) {
if (e instanceof TalerError) {
diff --git a/packages/taler-wallet-webextension/src/cta/Withdraw/index.ts b/packages/taler-wallet-webextension/src/cta/Withdraw/index.ts
index 9a7acf9f1..68b314c07 100644
--- a/packages/taler-wallet-webextension/src/cta/Withdraw/index.ts
+++ b/packages/taler-wallet-webextension/src/cta/Withdraw/index.ts
@@ -23,7 +23,7 @@ import { compose, StateViewMap } from "../../utils/index.js";
import { wxApi } from "../../wxApi.js";
import {
useComponentStateFromParams,
- useComponentStateFromURI
+ useComponentStateFromURI,
} from "./state.js";
import { ExchangeSelectionPage } from "../../wallet/ExchangeSelection/index.js";
diff --git a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
index 704ef1ac3..016027163 100644
--- a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
@@ -19,7 +19,7 @@ import {
AmountJson,
Amounts,
ExchangeListItem,
- ExchangeTosStatus
+ ExchangeTosStatus,
} from "@gnu-taler/taler-util";
import { TalerError, WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { useState } from "preact/hooks";
@@ -35,7 +35,10 @@ export function useComponentStateFromParams(
api: typeof wxApi,
): RecursiveState<State> {
const uriInfoHook = useAsyncAsHook(async () => {
- const exchanges = await api.wallet.call(WalletApiOperation.ListExchanges, {});
+ const exchanges = await api.wallet.call(
+ WalletApiOperation.ListExchanges,
+ {},
+ );
return { amount: Amounts.parseOrThrow(amount), exchanges };
});
@@ -58,11 +61,14 @@ export function useComponentStateFromParams(
transactionId: string;
confirmTransferUrl: string | undefined;
}> {
- const res = await api.wallet.call(WalletApiOperation.AcceptManualWithdrawal, {
- exchangeBaseUrl: exchange,
- amount: Amounts.stringify(chosenAmount),
- restrictAge: ageRestricted,
- });
+ const res = await api.wallet.call(
+ WalletApiOperation.AcceptManualWithdrawal,
+ {
+ exchangeBaseUrl: exchange,
+ amount: Amounts.stringify(chosenAmount),
+ restrictAge: ageRestricted,
+ },
+ );
return {
confirmTransferUrl: undefined,
transactionId: res.transactionId,
@@ -93,9 +99,12 @@ export function useComponentStateFromURI(
const uriInfoHook = useAsyncAsHook(async () => {
if (!talerWithdrawUri) throw Error("ERROR_NO-URI-FOR-WITHDRAWAL");
- const uriInfo = await api.wallet.call(WalletApiOperation.GetWithdrawalDetailsForUri, {
- talerWithdrawUri,
- });
+ const uriInfo = await api.wallet.call(
+ WalletApiOperation.GetWithdrawalDetailsForUri,
+ {
+ talerWithdrawUri,
+ },
+ );
const { amount, defaultExchangeBaseUrl } = uriInfo;
return {
talerWithdrawUri,
@@ -126,11 +135,14 @@ export function useComponentStateFromURI(
transactionId: string;
confirmTransferUrl: string | undefined;
}> {
- const res = await api.wallet.call(WalletApiOperation.AcceptBankIntegratedWithdrawal, {
- exchangeBaseUrl: exchange,
- talerWithdrawUri: uri,
- restrictAge: ageRestricted
- });
+ const res = await api.wallet.call(
+ WalletApiOperation.AcceptBankIntegratedWithdrawal,
+ {
+ exchangeBaseUrl: exchange,
+ talerWithdrawUri: uri,
+ restrictAge: ageRestricted,
+ },
+ );
return {
confirmTransferUrl: res.confirmTransferUrl,
transactionId: res.transactionId,
@@ -189,11 +201,14 @@ function exchangeSelectionState(
* about the withdrawal
*/
const amountHook = useAsyncAsHook(async () => {
- const info = await api.wallet.call(WalletApiOperation.GetWithdrawalDetailsForAmount, {
- exchangeBaseUrl: currentExchange.exchangeBaseUrl,
- amount: Amounts.stringify(chosenAmount),
- restrictAge: ageRestricted,
- });
+ const info = await api.wallet.call(
+ WalletApiOperation.GetWithdrawalDetailsForAmount,
+ {
+ exchangeBaseUrl: currentExchange.exchangeBaseUrl,
+ amount: Amounts.stringify(chosenAmount),
+ restrictAge: ageRestricted,
+ },
+ );
const withdrawAmount = {
raw: Amounts.parseOrThrow(info.amountRaw),
@@ -264,10 +279,10 @@ function exchangeSelectionState(
//TODO: calculate based on exchange info
const ageRestriction = ageRestrictionEnabled
? {
- list: ageRestrictionOptions,
- value: String(ageRestricted),
- onChange: async (v: string) => setAgeRestricted(parseInt(v, 10)),
- }
+ list: ageRestrictionOptions,
+ value: String(ageRestricted),
+ onChange: async (v: string) => setAgeRestricted(parseInt(v, 10)),
+ }
: undefined;
return {
diff --git a/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts b/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts
index b4ba32f8a..7fd8188ce 100644
--- a/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Withdraw/test.ts
@@ -21,7 +21,9 @@
import {
Amounts,
- ExchangeEntryStatus, ExchangeListItem, ExchangeTosStatus
+ ExchangeEntryStatus,
+ ExchangeListItem,
+ ExchangeTosStatus,
} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { expect } from "chai";
@@ -70,13 +72,9 @@ describe("Withdraw CTA states", () => {
onSuccess: async () => {
null;
},
- }
+ };
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentStateFromURI(
- props, mock
- ),
- );
+ mountHook(() => useComponentStateFromURI(props, mock));
{
const { status } = pullLastResultOrThrow();
@@ -96,7 +94,7 @@ describe("Withdraw CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should tell the user that there is not known exchange", async () => {
@@ -109,18 +107,18 @@ describe("Withdraw CTA states", () => {
onSuccess: async () => {
null;
},
- }
- handler.addWalletCallResponse(WalletApiOperation.GetWithdrawalDetailsForUri, undefined, {
- amount: "EUR:2",
- possibleExchanges: [],
- })
+ };
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetWithdrawalDetailsForUri,
+ undefined,
+ {
+ amount: "EUR:2",
+ possibleExchanges: [],
+ },
+ );
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentStateFromURI(
- props, mock
- ),
- );
+ mountHook(() => useComponentStateFromURI(props, mock));
{
const { status } = pullLastResultOrThrow();
@@ -138,7 +136,7 @@ describe("Withdraw CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should be able to withdraw if tos are ok", async () => {
@@ -151,26 +149,30 @@ describe("Withdraw CTA states", () => {
onSuccess: async () => {
null;
},
- }
- handler.addWalletCallResponse(WalletApiOperation.GetWithdrawalDetailsForUri, undefined, {
- amount: "ARS:2",
- possibleExchanges: exchanges,
- defaultExchangeBaseUrl: exchanges[0].exchangeBaseUrl
- })
- handler.addWalletCallResponse(WalletApiOperation.GetWithdrawalDetailsForAmount, undefined, {
- amountRaw: "ARS:2",
- amountEffective: "ARS:2",
- paytoUris: ["payto://"],
- tosAccepted: true,
- ageRestrictionOptions: []
- })
+ };
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetWithdrawalDetailsForUri,
+ undefined,
+ {
+ amount: "ARS:2",
+ possibleExchanges: exchanges,
+ defaultExchangeBaseUrl: exchanges[0].exchangeBaseUrl,
+ },
+ );
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetWithdrawalDetailsForAmount,
+ undefined,
+ {
+ amountRaw: "ARS:2",
+ amountEffective: "ARS:2",
+ paytoUris: ["payto://"],
+ tosAccepted: true,
+ ageRestrictionOptions: [],
+ },
+ );
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentStateFromURI(
- props, mock
- ),
- );
+ mountHook(() => useComponentStateFromURI(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -203,7 +205,7 @@ describe("Withdraw CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
it("should accept the tos before withdraw", async () => {
@@ -216,38 +218,45 @@ describe("Withdraw CTA states", () => {
onSuccess: async () => {
null;
},
- }
+ };
const exchangeWithNewTos = exchanges.map((e) => ({
...e,
tosStatus: ExchangeTosStatus.New,
}));
- handler.addWalletCallResponse(WalletApiOperation.GetWithdrawalDetailsForUri, undefined, {
- amount: "ARS:2",
- possibleExchanges: exchangeWithNewTos,
- defaultExchangeBaseUrl: exchangeWithNewTos[0].exchangeBaseUrl
- })
- handler.addWalletCallResponse(WalletApiOperation.GetWithdrawalDetailsForAmount, undefined, {
- amountRaw: "ARS:2",
- amountEffective: "ARS:2",
- paytoUris: ["payto://"],
- tosAccepted: false,
- ageRestrictionOptions: []
- })
-
-
- handler.addWalletCallResponse(WalletApiOperation.GetWithdrawalDetailsForUri, undefined, {
- amount: "ARS:2",
- possibleExchanges: exchanges,
- defaultExchangeBaseUrl: exchanges[0].exchangeBaseUrl
- })
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetWithdrawalDetailsForUri,
+ undefined,
+ {
+ amount: "ARS:2",
+ possibleExchanges: exchangeWithNewTos,
+ defaultExchangeBaseUrl: exchangeWithNewTos[0].exchangeBaseUrl,
+ },
+ );
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetWithdrawalDetailsForAmount,
+ undefined,
+ {
+ amountRaw: "ARS:2",
+ amountEffective: "ARS:2",
+ paytoUris: ["payto://"],
+ tosAccepted: false,
+ ageRestrictionOptions: [],
+ },
+ );
+
+ handler.addWalletCallResponse(
+ WalletApiOperation.GetWithdrawalDetailsForUri,
+ undefined,
+ {
+ amount: "ARS:2",
+ possibleExchanges: exchanges,
+ defaultExchangeBaseUrl: exchanges[0].exchangeBaseUrl,
+ },
+ );
const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
- mountHook(() =>
- useComponentStateFromURI(
- props, mock
- ),
- );
+ mountHook(() => useComponentStateFromURI(props, mock));
{
const { status, error } = pullLastResultOrThrow();
@@ -297,6 +306,6 @@ describe("Withdraw CTA states", () => {
}
await assertNoPendingUpdate();
- expect(handler.getCallingQueueState()).eq("empty")
+ expect(handler.getCallingQueueState()).eq("empty");
});
});
diff --git a/packages/taler-wallet-webextension/src/hooks/useAutoOpenPermissions.ts b/packages/taler-wallet-webextension/src/hooks/useAutoOpenPermissions.ts
index 5a0194db8..3361394a4 100644
--- a/packages/taler-wallet-webextension/src/hooks/useAutoOpenPermissions.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useAutoOpenPermissions.ts
@@ -63,7 +63,9 @@ async function handleAutoOpenPerm(
onChange(res.newValue);
} else {
try {
- await wxApi.background.toggleHeaderListener(false).then((r) => onChange(r.newValue));
+ await wxApi.background
+ .toggleHeaderListener(false)
+ .then((r) => onChange(r.newValue));
} catch (e) {
console.log(e);
}
diff --git a/packages/taler-wallet-webextension/src/hooks/useBackupDeviceName.ts b/packages/taler-wallet-webextension/src/hooks/useBackupDeviceName.ts
index 7339a876a..be81b7d7d 100644
--- a/packages/taler-wallet-webextension/src/hooks/useBackupDeviceName.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useBackupDeviceName.ts
@@ -32,10 +32,15 @@ export function useBackupDeviceName(): BackupDeviceName {
useEffect(() => {
async function run(): Promise<void> {
//create a first list of backup info by currency
- const status = await wxApi.wallet.call(WalletApiOperation.GetBackupInfo, {});
+ const status = await wxApi.wallet.call(
+ WalletApiOperation.GetBackupInfo,
+ {},
+ );
async function update(newName: string): Promise<void> {
- await wxApi.wallet.call(WalletApiOperation.SetWalletDeviceId, { walletDeviceId: newName });
+ await wxApi.wallet.call(WalletApiOperation.SetWalletDeviceId, {
+ walletDeviceId: newName,
+ });
setStatus((old) => ({ ...old, name: newName }));
}
diff --git a/packages/taler-wallet-webextension/src/hooks/useClipboardPermissions.ts b/packages/taler-wallet-webextension/src/hooks/useClipboardPermissions.ts
index 3d284fb5a..9b7d46ba7 100644
--- a/packages/taler-wallet-webextension/src/hooks/useClipboardPermissions.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useClipboardPermissions.ts
@@ -66,7 +66,9 @@ async function handleClipboardPerm(
onChange(granted);
} else {
try {
- await wxApi.background.toggleHeaderListener(false).then((r) => onChange(r.newValue));
+ await wxApi.background
+ .toggleHeaderListener(false)
+ .then((r) => onChange(r.newValue));
} catch (e) {
console.log(e);
}
diff --git a/packages/taler-wallet-webextension/src/hooks/useProviderStatus.ts b/packages/taler-wallet-webextension/src/hooks/useProviderStatus.ts
index b73c9fc16..e6473d1ec 100644
--- a/packages/taler-wallet-webextension/src/hooks/useProviderStatus.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useProviderStatus.ts
@@ -30,7 +30,10 @@ export function useProviderStatus(url: string): ProviderStatus | undefined {
useEffect(() => {
async function run(): Promise<void> {
//create a first list of backup info by currency
- const status = await wxApi.wallet.call(WalletApiOperation.GetBackupInfo, {});
+ const status = await wxApi.wallet.call(
+ WalletApiOperation.GetBackupInfo,
+ {},
+ );
const providers = status.providers.filter(
(p) => p.syncProviderBaseUrl === url,
@@ -40,7 +43,7 @@ export function useProviderStatus(url: string): ProviderStatus | undefined {
async function sync(): Promise<void> {
if (info) {
await wxApi.wallet.call(WalletApiOperation.RunBackupCycle, {
- providers: [info.syncProviderBaseUrl]
+ providers: [info.syncProviderBaseUrl],
});
}
}
@@ -48,7 +51,7 @@ export function useProviderStatus(url: string): ProviderStatus | undefined {
async function remove(): Promise<void> {
if (info) {
await wxApi.wallet.call(WalletApiOperation.RemoveBackupProvider, {
- provider: info.syncProviderBaseUrl
+ provider: info.syncProviderBaseUrl,
});
}
}
diff --git a/packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts b/packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts
index 8d4921392..d5743eb2e 100644
--- a/packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts
@@ -48,8 +48,10 @@ async function handleOpen(
currentValue: undefined | boolean,
onChange: (value: boolean) => void,
): Promise<void> {
- const nextValue = !currentValue
- await wxApi.wallet.call(WalletApiOperation.SetDevMode, { devModeEnabled: nextValue });
+ const nextValue = !currentValue;
+ await wxApi.wallet.call(WalletApiOperation.SetDevMode, {
+ devModeEnabled: nextValue,
+ });
onChange(nextValue);
return;
}
diff --git a/packages/taler-wallet-webextension/src/i18n/strings.ts b/packages/taler-wallet-webextension/src/i18n/strings.ts
index c6b4df89c..e5281bf54 100644
--- a/packages/taler-wallet-webextension/src/i18n/strings.ts
+++ b/packages/taler-wallet-webextension/src/i18n/strings.ts
@@ -1,8052 +1,3191 @@
export const strings: any = {};
-strings['de'] = {
- "domain": "messages",
- "locale_data": {
- "messages": {
+strings["de"] = {
+ domain: "messages",
+ locale_data: {
+ messages: {
"": {
- "domain": "messages",
- "plural_forms": "nplurals=2; plural=n != 1;",
- "lang": "de"
+ domain: "messages",
+ plural_forms: "nplurals=2; plural=n != 1;",
+ lang: "de",
},
- "Balance": [
- "Guthaben"
- ],
- "Backup": [
- "Backup"
- ],
- "QR Reader and Taler URI": [
- ""
- ],
- "Settings": [
- "Einstellungen"
- ],
- "Dev": [
- "Dev"
- ],
- "%1$s": [
- ""
- ],
- "PENDING OPERATIONS": [
- ""
- ],
- "Loading": [
- "Lädt Daten"
- ],
- "Could not load backup providers": [
- ""
- ],
- "No backup providers configured": [
- ""
- ],
- "Add provider": [
- ""
- ],
- "Sync all backups": [
- ""
- ],
- "Sync now": [
- ""
- ],
- "Last synced": [
- ""
- ],
- "Not synced": [
- ""
- ],
- "Expires in": [
- ""
- ],
+ Balance: ["Guthaben"],
+ Backup: ["Backup"],
+ "QR Reader and Taler URI": [""],
+ Settings: ["Einstellungen"],
+ Dev: ["Dev"],
+ "%1$s": [""],
+ "PENDING OPERATIONS": [""],
+ Loading: ["Lädt Daten"],
+ "Could not load backup providers": [""],
+ "No backup providers configured": [""],
+ "Add provider": [""],
+ "Sync all backups": [""],
+ "Sync now": [""],
+ "Last synced": [""],
+ "Not synced": [""],
+ "Expires in": [""],
"There was an error loading the provider detail for &quot; %1$s&quot;": [
- ""
- ],
- "There is not known provider with url &quot;%1$s&quot;.": [
- ""
- ],
- "See providers": [
- ""
- ],
- "Last backup": [
- ""
- ],
- "Back up": [
- ""
- ],
- "Provider fee": [
- ""
- ],
- "per year": [
- ""
- ],
- "Extend": [
- ""
- ],
- "terms has changed, extending the service will imply accepting the new terms of service": [
- ""
- ],
- "old": [
- ""
- ],
- "new": [
- ""
- ],
- "fee": [
- ""
- ],
- "storage": [
- ""
- ],
- "Remove provider": [
- ""
- ],
- "This provider has reported an error": [
- ""
- ],
- "There is conflict with another backup from %1$s": [
- ""
- ],
- "Backup is not readable": [
- ""
- ],
- "Unknown backup problem: %1$s": [
- ""
- ],
- "service paid": [
- ""
- ],
- "Backup valid until": [
- ""
- ],
- "Cancel": [
- "Abbrechen"
- ],
- "Open reserve page": [
- "Seite der Reserve aufrufen"
- ],
- "Open pay page": [
- "Seite für Zahlungen aufrufen"
- ],
- "Open refund page": [
- "Seite für Rückerstattungen aufrufen"
- ],
- "Open tip page": [
- "Seite der Aufwandsentschädigungen aufrufen"
- ],
- "Open withdraw page": [
- "Abhebeseite öffnen"
- ],
- "Get digital cash": [
- "Digitales Bargeld abheben"
- ],
- "Could not load balance page": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Add": [
- ""
- ],
- "Send %1$s": [
- ""
- ],
- "Taler Action": [
- ""
- ],
- "This page has pay action.": [
- ""
- ],
- "This page has a withdrawal action.": [
- ""
- ],
- "This page has a tip action.": [
- ""
- ],
- "This page has a notify reserve action.": [
- ""
- ],
- "Notify": [
- ""
- ],
- "This page has a refund action.": [
- ""
- ],
- "This page has a malformed taler uri.": [
- ""
- ],
- "Dismiss": [
- ""
- ],
- "this popup is being closed and you are being redirected to %1$s": [
- ""
- ],
+ "",
+ ],
+ "There is not known provider with url &quot;%1$s&quot;.": [""],
+ "See providers": [""],
+ "Last backup": [""],
+ "Back up": [""],
+ "Provider fee": [""],
+ "per year": [""],
+ Extend: [""],
+ "terms has changed, extending the service will imply accepting the new terms of service":
+ [""],
+ old: [""],
+ new: [""],
+ fee: [""],
+ storage: [""],
+ "Remove provider": [""],
+ "This provider has reported an error": [""],
+ "There is conflict with another backup from %1$s": [""],
+ "Backup is not readable": [""],
+ "Unknown backup problem: %1$s": [""],
+ "service paid": [""],
+ "Backup valid until": [""],
+ Cancel: ["Abbrechen"],
+ "Open reserve page": ["Seite der Reserve aufrufen"],
+ "Open pay page": ["Seite für Zahlungen aufrufen"],
+ "Open refund page": ["Seite für Rückerstattungen aufrufen"],
+ "Open tip page": ["Seite der Aufwandsentschädigungen aufrufen"],
+ "Open withdraw page": ["Abhebeseite öffnen"],
+ "Get digital cash": ["Digitales Bargeld abheben"],
+ "Could not load balance page": ["Konnte die Umsatzanzeige nicht laden"],
+ Add: [""],
+ "Send %1$s": [""],
+ "Taler Action": [""],
+ "This page has pay action.": [""],
+ "This page has a withdrawal action.": [""],
+ "This page has a tip action.": [""],
+ "This page has a notify reserve action.": [""],
+ Notify: [""],
+ "This page has a refund action.": [""],
+ "This page has a malformed taler uri.": [""],
+ Dismiss: [""],
+ "this popup is being closed and you are being redirected to %1$s": [""],
"Could not load purchase proposal details": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Order Id": [
- ""
- ],
- "Summary": [
- ""
- ],
- "Amount": [
- "Betrag"
- ],
- "Merchant name": [
- ""
- ],
- "Merchant jurisdiction": [
- ""
- ],
- "Merchant address": [
- ""
- ],
- "Merchant logo": [
- ""
- ],
- "Merchant website": [
- ""
- ],
- "Merchant email": [
- ""
- ],
- "Merchant public key": [
- ""
- ],
- "Delivery date": [
- ""
- ],
- "Delivery location": [
- ""
- ],
- "Products": [
- ""
- ],
- "Created at": [
- ""
- ],
- "Refund deadline": [
- ""
- ],
- "Auto refund": [
- ""
- ],
- "Pay deadline": [
- ""
- ],
- "Fulfillment URL": [
- ""
- ],
- "Fulfillment message": [
- ""
- ],
- "Max deposit fee": [
- ""
- ],
- "Max fee": [
- ""
- ],
- "Minimum age": [
- ""
- ],
- "Wire fee amortization": [
- ""
- ],
- "Auditors": [
- ""
- ],
- "Exchanges": [
- "Exchange"
- ],
- "Bank account": [
- ""
- ],
- "Bitcoin address": [
- ""
- ],
- "IBAN": [
- ""
- ],
- "Could not load deposit status": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Digital cash deposit": [
- ""
- ],
- "Cost": [
- ""
- ],
- "Fee": [
- ""
- ],
- "To be received": [
- ""
- ],
- "Send &nbsp; %1$s": [
- ""
- ],
- "Bitcoin transfer details": [
- ""
- ],
- "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.": [
- ""
- ],
- "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts": [
- ""
- ],
- "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC": [
- ""
- ],
- "Account": [
- ""
- ],
- "Bank host": [
- ""
- ],
- "Bank transfer details": [
- ""
- ],
- "Subject": [
- "Verwendungszweck"
- ],
- "Receiver name": [
- ""
- ],
- "Could not load the transaction information": [
- ""
- ],
- "There was an error trying to complete the transaction": [
- ""
- ],
- "This transaction is not completed": [
- ""
- ],
- "Send": [
- ""
- ],
- "Retry": [
- "Erneut versuchen"
- ],
- "Forget": [
- ""
- ],
- "Caution!": [
- ""
- ],
- "If you have already wired money to the exchange you will loose the chance to get the coins form it.": [
- ""
- ],
- "Confirm": [
- "Bestätigen"
- ],
- "Withdrawal": [
- "Abheben"
- ],
- "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.": [
- ""
- ],
- "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.": [
- ""
- ],
- "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins": [
- ""
- ],
- "Details": [
- ""
- ],
- "Payment": [
- "Zahlung"
- ],
- "Refunds": [
- ""
- ],
+ "Konnte die Umsatzanzeige nicht laden",
+ ],
+ "Order Id": [""],
+ Summary: [""],
+ Amount: ["Betrag"],
+ "Merchant name": [""],
+ "Merchant jurisdiction": [""],
+ "Merchant address": [""],
+ "Merchant logo": [""],
+ "Merchant website": [""],
+ "Merchant email": [""],
+ "Merchant public key": [""],
+ "Delivery date": [""],
+ "Delivery location": [""],
+ Products: [""],
+ "Created at": [""],
+ "Refund deadline": [""],
+ "Auto refund": [""],
+ "Pay deadline": [""],
+ "Fulfillment URL": [""],
+ "Fulfillment message": [""],
+ "Max deposit fee": [""],
+ "Max fee": [""],
+ "Minimum age": [""],
+ "Wire fee amortization": [""],
+ Auditors: [""],
+ Exchanges: ["Exchange"],
+ "Bank account": [""],
+ "Bitcoin address": [""],
+ IBAN: [""],
+ "Could not load deposit status": ["Konnte die Umsatzanzeige nicht laden"],
+ "Digital cash deposit": [""],
+ Cost: [""],
+ Fee: [""],
+ "To be received": [""],
+ "Send &nbsp; %1$s": [""],
+ "Bitcoin transfer details": [""],
+ "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.":
+ [""],
+ "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts":
+ [""],
+ "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC":
+ [""],
+ Account: [""],
+ "Bank host": [""],
+ "Bank transfer details": [""],
+ Subject: ["Verwendungszweck"],
+ "Receiver name": [""],
+ "Could not load the transaction information": [""],
+ "There was an error trying to complete the transaction": [""],
+ "This transaction is not completed": [""],
+ Send: [""],
+ Retry: ["Erneut versuchen"],
+ Forget: [""],
+ "Caution!": [""],
+ "If you have already wired money to the exchange you will loose the chance to get the coins form it.":
+ [""],
+ Confirm: ["Bestätigen"],
+ Withdrawal: ["Abheben"],
+ "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.":
+ [""],
+ "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.":
+ [""],
+ "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins":
+ [""],
+ Details: [""],
+ Payment: ["Zahlung"],
+ Refunds: [""],
"%1$s %2$s on %3$s": [
- "%1$s\n möchte einen Vertrag über %2$s\n mit Ihnen abschließen."
- ],
- "Merchant created a refund for this order but was not automatically picked up.": [
- ""
- ],
- "Offer": [
- ""
- ],
- "Accept": [
- ""
- ],
- "Merchant": [
- ""
- ],
- "Invoice ID": [
- ""
- ],
- "Deposit": [
- ""
- ],
- "Refresh": [
- ""
- ],
- "Tip": [
- ""
- ],
- "Refund": [
- ""
- ],
- "Original order ID": [
- ""
- ],
- "Purchase summary": [
- ""
- ],
- "copy": [
- ""
- ],
- "hide qr": [
- ""
- ],
- "show qr": [
- ""
- ],
- "Credit": [
- ""
- ],
- "Invoice": [
- ""
- ],
- "Exchange": [
- "Exchange"
- ],
- "URI": [
- ""
- ],
- "Debit": [
- ""
- ],
- "Transfer": [
- ""
- ],
- "Country": [
- "Betrag"
- ],
- "Address lines": [
- ""
- ],
- "Building number": [
- ""
- ],
- "Building name": [
- ""
- ],
- "Street": [
- ""
- ],
- "Post code": [
- ""
- ],
- "Town location": [
- ""
- ],
- "Town": [
- ""
- ],
- "District": [
- ""
- ],
- "Country subdivision": [
- ""
- ],
- "Date": [
- ""
- ],
- "Transaction fees": [
- ""
- ],
- "Total": [
- ""
- ],
- "Withdraw": [
- "Abheben"
- ],
- "Price": [
- ""
- ],
- "Refunded": [
- ""
- ],
- "Delivery": [
- ""
- ],
- "Total transfer": [
- "Insgesamt abgehoben"
- ],
- "Could not load pay status": [
- ""
- ],
- "Digital cash payment": [
- ""
- ],
- "Purchase": [
- ""
- ],
- "Receipt": [
- ""
- ],
- "Valid until": [
- ""
- ],
- "List of products": [
- ""
- ],
- "free": [
- ""
- ],
- "Already paid, you are going to be redirected to %1$s": [
- ""
- ],
- "Already paid": [
- ""
- ],
- "Already claimed": [
- ""
- ],
- "Pay with a mobile phone": [
- ""
- ],
- "Hide QR": [
- ""
- ],
- "Scan the QR code or &nbsp; %1$s": [
- ""
- ],
- "Pay &nbsp; %1$s": [
- ""
- ],
+ "%1$s\n möchte einen Vertrag über %2$s\n mit Ihnen abschließen.",
+ ],
+ "Merchant created a refund for this order but was not automatically picked up.":
+ [""],
+ Offer: [""],
+ Accept: [""],
+ Merchant: [""],
+ "Invoice ID": [""],
+ Deposit: [""],
+ Refresh: [""],
+ Tip: [""],
+ Refund: [""],
+ "Original order ID": [""],
+ "Purchase summary": [""],
+ copy: [""],
+ "hide qr": [""],
+ "show qr": [""],
+ Credit: [""],
+ Invoice: [""],
+ Exchange: ["Exchange"],
+ URI: [""],
+ Debit: [""],
+ Transfer: [""],
+ Country: ["Betrag"],
+ "Address lines": [""],
+ "Building number": [""],
+ "Building name": [""],
+ Street: [""],
+ "Post code": [""],
+ "Town location": [""],
+ Town: [""],
+ District: [""],
+ "Country subdivision": [""],
+ Date: [""],
+ "Transaction fees": [""],
+ Total: [""],
+ Withdraw: ["Abheben"],
+ Price: [""],
+ Refunded: [""],
+ Delivery: [""],
+ "Total transfer": ["Insgesamt abgehoben"],
+ "Could not load pay status": [""],
+ "Digital cash payment": [""],
+ Purchase: [""],
+ Receipt: [""],
+ "Valid until": [""],
+ "List of products": [""],
+ free: [""],
+ "Already paid, you are going to be redirected to %1$s": [""],
+ "Already paid": [""],
+ "Already claimed": [""],
+ "Pay with a mobile phone": [""],
+ "Hide QR": [""],
+ "Scan the QR code or &nbsp; %1$s": [""],
+ "Pay &nbsp; %1$s": [""],
"You have no balance for this currency. Withdraw digital cash first.": [
- ""
- ],
- "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.": [
- ""
+ "",
],
+ "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.":
+ [""],
"Your current balance is not enough.": [
- "Es gibt kein Guthaben anzuzeigen."
- ],
- "Merchant message": [
- ""
- ],
- "Could not load refund status": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Digital cash refund": [
- ""
- ],
- "You&apos;ve ignored the tip.": [
- ""
- ],
- "The refund is in progress.": [
- ""
- ],
- "Total to refund": [
- "Insgesamt abgehoben"
- ],
+ "Es gibt kein Guthaben anzuzeigen.",
+ ],
+ "Merchant message": [""],
+ "Could not load refund status": ["Konnte die Umsatzanzeige nicht laden"],
+ "Digital cash refund": [""],
+ "You&apos;ve ignored the tip.": [""],
+ "The refund is in progress.": [""],
+ "Total to refund": ["Insgesamt abgehoben"],
"The merchant &quot;%1$s&quot; is offering you a refund.": [
- "Der Händler %1$s bietet Ihnen eine Aufwandsentschädigung von %2$s durch den Exchange %3$s"
- ],
- "Order amount": [
- ""
- ],
- "Already refunded": [
- ""
- ],
- "Refund offered": [
- ""
- ],
- "Accept &nbsp; %1$s": [
- ""
- ],
- "Could not load tip status": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Digital cash tip": [
- ""
- ],
+ "Der Händler %1$s bietet Ihnen eine Aufwandsentschädigung von %2$s durch den Exchange %3$s",
+ ],
+ "Order amount": [""],
+ "Already refunded": [""],
+ "Refund offered": [""],
+ "Accept &nbsp; %1$s": [""],
+ "Could not load tip status": ["Konnte die Umsatzanzeige nicht laden"],
+ "Digital cash tip": [""],
"The merchant is offering you a tip": [
- "Der Händler %1$s bietet Ihnen eine Aufwandsentschädigung von %2$s durch den Exchange %3$s"
- ],
- "Merchant URL": [
- ""
- ],
- "Receive &nbsp; %1$s": [
- ""
- ],
- "Tip from %1$s accepted. Check your transactions list for more details.": [
- ""
- ],
- "Select one option": [
- ""
- ],
- "Could not load": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Show terms of service": [
- ""
- ],
- "I accept the exchange terms of service": [
- ""
- ],
- "Exchange doesn&apos;t have terms of service": [
- ""
- ],
- "Review exchange terms of service": [
- ""
- ],
- "Review new version of terms of service": [
- ""
- ],
- "The exchange reply with a empty terms of service": [
- ""
- ],
- "Download Terms of Service": [
- ""
- ],
- "Hide terms of service": [
- ""
- ],
- "Could not load exchange fees": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Close": [
- ""
- ],
- "could not find any exchange": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "could not find any exchange for the currency %1$s": [
- ""
- ],
- "Service fee description": [
- ""
- ],
- "Select %1$s exchange": [
- ""
- ],
- "Reset": [
- ""
- ],
- "Use this exchange": [
- ""
- ],
- "Doesn&apos;t have auditors": [
- ""
- ],
- "currency": [
- ""
- ],
- "Operations": [
- ""
- ],
- "Deposits": [
- "%1$s zahlen"
- ],
- "Denomination": [
- ""
- ],
- "Until": [
- ""
- ],
- "Withdrawals": [
- "Abheben"
- ],
- "Currency": [
- ""
- ],
- "Coin operations": [
- ""
- ],
- "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.": [
- ""
- ],
- "Transfer operations": [
- ""
- ],
- "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.": [
- ""
- ],
- "Operation": [
- ""
- ],
- "Wallet operations": [
- ""
- ],
- "Feature": [
- ""
- ],
- "Could not get the info from the URI": [
- ""
- ],
- "Could not get info of withdrawal": [
- ""
- ],
- "Digital cash withdrawal": [
- ""
- ],
- "Could not finish the withdrawal operation": [
- ""
- ],
- "Age restriction": [
- ""
- ],
- "Withdraw &nbsp; %1$s": [
- "Abheben bei %1$s"
- ],
- "Withdraw to a mobile phone": [
- ""
- ],
- "Digital invoice": [
- ""
- ],
- "Could not finish the invoice creation": [
- ""
- ],
- "Create": [
- ""
- ],
- "Could not finish the payment operation": [
- ""
- ],
- "Digital cash transfer": [
- ""
- ],
- "Could not finish the transfer creation": [
- ""
- ],
- "Could not finish the pickup operation": [
- ""
- ],
- "Manual Withdrawal for %1$s": [
- "Manuelles Abheben"
- ],
- "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.": [
- ""
- ],
- "No exchange found for %1$s": [
- ""
- ],
- "Add Exchange": [
- ""
- ],
- "No exchange configured": [
- ""
- ],
- "Can&apos;t create the reserve": [
- ""
- ],
- "Start withdrawal": [
- "Abhebung beginnen"
- ],
+ "Der Händler %1$s bietet Ihnen eine Aufwandsentschädigung von %2$s durch den Exchange %3$s",
+ ],
+ "Merchant URL": [""],
+ "Receive &nbsp; %1$s": [""],
+ "Tip from %1$s accepted. Check your transactions list for more details.":
+ [""],
+ "Select one option": [""],
+ "Could not load": ["Konnte die Umsatzanzeige nicht laden"],
+ "Show terms of service": [""],
+ "I accept the exchange terms of service": [""],
+ "Exchange doesn&apos;t have terms of service": [""],
+ "Review exchange terms of service": [""],
+ "Review new version of terms of service": [""],
+ "The exchange reply with a empty terms of service": [""],
+ "Download Terms of Service": [""],
+ "Hide terms of service": [""],
+ "Could not load exchange fees": ["Konnte die Umsatzanzeige nicht laden"],
+ Close: [""],
+ "could not find any exchange": ["Konnte die Umsatzanzeige nicht laden"],
+ "could not find any exchange for the currency %1$s": [""],
+ "Service fee description": [""],
+ "Select %1$s exchange": [""],
+ Reset: [""],
+ "Use this exchange": [""],
+ "Doesn&apos;t have auditors": [""],
+ currency: [""],
+ Operations: [""],
+ Deposits: ["%1$s zahlen"],
+ Denomination: [""],
+ Until: [""],
+ Withdrawals: ["Abheben"],
+ Currency: [""],
+ "Coin operations": [""],
+ "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.":
+ [""],
+ "Transfer operations": [""],
+ "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.":
+ [""],
+ Operation: [""],
+ "Wallet operations": [""],
+ Feature: [""],
+ "Could not get the info from the URI": [""],
+ "Could not get info of withdrawal": [""],
+ "Digital cash withdrawal": [""],
+ "Could not finish the withdrawal operation": [""],
+ "Age restriction": [""],
+ "Withdraw &nbsp; %1$s": ["Abheben bei %1$s"],
+ "Withdraw to a mobile phone": [""],
+ "Digital invoice": [""],
+ "Could not finish the invoice creation": [""],
+ Create: [""],
+ "Could not finish the payment operation": [""],
+ "Digital cash transfer": [""],
+ "Could not finish the transfer creation": [""],
+ "Could not finish the pickup operation": [""],
+ "Manual Withdrawal for %1$s": ["Manuelles Abheben"],
+ "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.":
+ [""],
+ "No exchange found for %1$s": [""],
+ "Add Exchange": [""],
+ "No exchange configured": [""],
+ "Can&apos;t create the reserve": [""],
+ "Start withdrawal": ["Abhebung beginnen"],
"Could not load deposit balance": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "A currency or an amount should be indicated": [
- ""
- ],
- "There is no enough balance to make a deposit for currency %1$s": [
- ""
- ],
- "Send %1$s to your account": [
- ""
- ],
- "There is no account to make a deposit for currency %1$s": [
- ""
- ],
- "Add account": [
- ""
- ],
- "Select account": [
- ""
- ],
- "Add another account": [
- ""
- ],
- "Deposit fee": [
- ""
- ],
- "Total deposit": [
- ""
- ],
- "Deposit&nbsp;%1$s %2$s": [
- "Einlösen %1$s %2$s"
- ],
- "Add bank account for %1$s": [
- ""
- ],
- "Enter the URL of an exchange you trust.": [
- ""
- ],
- "Unable add this account": [
- ""
- ],
- "Select account type": [
- ""
- ],
- "Review terms of service": [
- ""
- ],
- "Exchange URL": [
- ""
- ],
- "Add exchange": [
- ""
- ],
- "Add new exchange": [
- ""
- ],
- "Add exchange for %1$s": [
- ""
- ],
- "An exchange has been found! Review the information and click next": [
- ""
- ],
- "This exchange doesn&apos;t match the expected currency %1$s": [
- ""
- ],
- "Unable to verify this exchange": [
- ""
- ],
- "Unable to add this exchange": [
- ""
- ],
- "loading": [
- ""
- ],
- "Version": [
- ""
- ],
- "Next": [
- ""
- ],
- "Waiting for confirmation": [
- ""
- ],
- "PENDING": [
- ""
- ],
- "Could not load the list of transactions": [
- ""
- ],
- "Your transaction history is empty for this currency.": [
- ""
- ],
- "Add backup provider": [
- ""
- ],
- "Could not get provider information": [
- ""
- ],
- "Backup providers may charge for their service": [
- ""
- ],
- "URL": [
- ""
- ],
- "Name": [
- ""
- ],
- "Provider URL": [
- ""
- ],
- "Please review and accept this provider&apos;s terms of service": [
- ""
- ],
- "Pricing": [
- ""
- ],
- "free of charge": [
- ""
- ],
- "%1$s per year of service": [
- ""
- ],
- "Storage": [
- ""
- ],
- "%1$s megabytes of storage per year of service": [
- ""
- ],
- "Accept terms of service": [
- ""
- ],
- "Could not parse the payto URI": [
- ""
- ],
- "Please check the uri": [
- ""
- ],
- "Exchange is ready for withdrawal": [
- ""
- ],
- "To complete the process you need to wire%1$s %2$s to the exchange bank account": [
- ""
- ],
- "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905": [
- ""
- ],
- "Cancel withdrawal": [
- ""
- ],
- "Could not toggle auto-open": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Could not toggle clipboard": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Navigator": [
- ""
- ],
- "Automatically open wallet based on page content": [
- ""
- ],
- "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.": [
- ""
- ],
- "Automatically check clipboard for Taler URI": [
- ""
- ],
- "Trust": [
- ""
- ],
- "No exchange yet": [
- ""
- ],
- "Term of Service": [
- ""
- ],
- "ok": [
- ""
- ],
- "changed": [
- ""
- ],
- "not accepted": [
- ""
- ],
- "unknown (exchange status should be updated)": [
- ""
- ],
- "Add an exchange": [
- ""
- ],
- "Troubleshooting": [
- ""
- ],
- "Developer mode": [
- ""
- ],
- "More options and information useful for debugging": [
- ""
- ],
- "Display": [
- ""
- ],
- "Current Language": [
- ""
- ],
- "Wallet Core": [
- ""
- ],
- "Web Extension": [
- ""
- ],
- "Exchange compatibility": [
- ""
- ],
- "Merchant compatibility": [
- ""
- ],
- "Bank compatibility": [
- ""
- ],
- "Browser Extension Installed!": [
- ""
- ],
- "You can open the GNU Taler Wallet using the combination %1$s .": [
- ""
- ],
- "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:": [
- ""
- ],
- "Click the puzzle icon": [
- ""
- ],
- "Search for GNU Taler Wallet": [
- ""
- ],
- "Click the pin icon": [
- ""
- ],
- "Permissions": [
- ""
- ],
- "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)": [
- ""
- ],
- "Next Steps": [
- ""
- ],
- "Try the demo": [
- ""
- ],
- "Learn how to top up your wallet balance": [
- ""
- ],
+ "Konnte die Umsatzanzeige nicht laden",
+ ],
+ "A currency or an amount should be indicated": [""],
+ "There is no enough balance to make a deposit for currency %1$s": [""],
+ "Send %1$s to your account": [""],
+ "There is no account to make a deposit for currency %1$s": [""],
+ "Add account": [""],
+ "Select account": [""],
+ "Add another account": [""],
+ "Deposit fee": [""],
+ "Total deposit": [""],
+ "Deposit&nbsp;%1$s %2$s": ["Einlösen %1$s %2$s"],
+ "Add bank account for %1$s": [""],
+ "Enter the URL of an exchange you trust.": [""],
+ "Unable add this account": [""],
+ "Select account type": [""],
+ "Review terms of service": [""],
+ "Exchange URL": [""],
+ "Add exchange": [""],
+ "Add new exchange": [""],
+ "Add exchange for %1$s": [""],
+ "An exchange has been found! Review the information and click next": [""],
+ "This exchange doesn&apos;t match the expected currency %1$s": [""],
+ "Unable to verify this exchange": [""],
+ "Unable to add this exchange": [""],
+ loading: [""],
+ Version: [""],
+ Next: [""],
+ "Waiting for confirmation": [""],
+ PENDING: [""],
+ "Could not load the list of transactions": [""],
+ "Your transaction history is empty for this currency.": [""],
+ "Add backup provider": [""],
+ "Could not get provider information": [""],
+ "Backup providers may charge for their service": [""],
+ URL: [""],
+ Name: [""],
+ "Provider URL": [""],
+ "Please review and accept this provider&apos;s terms of service": [""],
+ Pricing: [""],
+ "free of charge": [""],
+ "%1$s per year of service": [""],
+ Storage: [""],
+ "%1$s megabytes of storage per year of service": [""],
+ "Accept terms of service": [""],
+ "Could not parse the payto URI": [""],
+ "Please check the uri": [""],
+ "Exchange is ready for withdrawal": [""],
+ "To complete the process you need to wire%1$s %2$s to the exchange bank account":
+ [""],
+ "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905":
+ [""],
+ "Cancel withdrawal": [""],
+ "Could not toggle auto-open": ["Konnte die Umsatzanzeige nicht laden"],
+ "Could not toggle clipboard": ["Konnte die Umsatzanzeige nicht laden"],
+ Navigator: [""],
+ "Automatically open wallet based on page content": [""],
+ "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.":
+ [""],
+ "Automatically check clipboard for Taler URI": [""],
+ Trust: [""],
+ "No exchange yet": [""],
+ "Term of Service": [""],
+ ok: [""],
+ changed: [""],
+ "not accepted": [""],
+ "unknown (exchange status should be updated)": [""],
+ "Add an exchange": [""],
+ Troubleshooting: [""],
+ "Developer mode": [""],
+ "More options and information useful for debugging": [""],
+ Display: [""],
+ "Current Language": [""],
+ "Wallet Core": [""],
+ "Web Extension": [""],
+ "Exchange compatibility": [""],
+ "Merchant compatibility": [""],
+ "Bank compatibility": [""],
+ "Browser Extension Installed!": [""],
+ "You can open the GNU Taler Wallet using the combination %1$s .": [""],
+ "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:":
+ [""],
+ "Click the puzzle icon": [""],
+ "Search for GNU Taler Wallet": [""],
+ "Click the pin icon": [""],
+ Permissions: [""],
+ "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)":
+ [""],
+ "Next Steps": [""],
+ "Try the demo": [""],
+ "Learn how to top up your wallet balance": [""],
"Diagnostics timed out. Could not talk to the wallet backend.": [
- "Die Diagnostik ist abgeschlossen. Es war keine Kommunikation mit dem Wallet-Backend möglich."
- ],
- "Problems detected:": [
- "Ein Problem wurde festgestellt:"
- ],
- "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).": [
- "Bitte prüfen Sie ihre %1$s Einstellungen, für die Sie IndexedDB verwenden (preference name %2$s prüfen)."
- ],
- "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.": [
- "Die Datenbank des Wallets ist veraltet. Aktuell wird jedoch keine Migration auf eine neue Version unterstützt. Bitte wählen Sie %1$s zum Zurücksetzen der Wallet-Datenbank."
- ],
- "Running diagnostics": [
- "Diagnostik wird durchgeführt"
- ],
- "Debug tools": [
- "Debugging-Tools"
- ],
- "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?": [
- ""
- ],
- "reset": [
- "zurücksetzen"
- ],
- "TESTING: This may delete all your coin, proceed with caution": [
- ""
- ],
- "run gc": [
- ""
- ],
- "import database": [
- ""
- ],
- "export database": [
- ""
- ],
- "Database exported at %1$s %2$s to download": [
- ""
- ],
- "Coins": [
- ""
- ],
- "Pending operations": [
- ""
- ],
- "usable coins": [
- ""
- ],
- "id": [
- ""
- ],
- "denom": [
- ""
- ],
- "value": [
- ""
- ],
- "status": [
- ""
- ],
- "from refresh?": [
- ""
- ],
- "age key count": [
- ""
- ],
- "spent coins": [
- ""
- ],
- "click to show": [
- ""
- ],
- "Scan a QR code or enter taler:// URI below": [
- ""
- ],
- "Open": [
- ""
- ],
- "URI is not valid. Taler URI should start with `taler://`": [
- ""
- ],
- "Try another": [
- ""
- ],
+ "Die Diagnostik ist abgeschlossen. Es war keine Kommunikation mit dem Wallet-Backend möglich.",
+ ],
+ "Problems detected:": ["Ein Problem wurde festgestellt:"],
+ "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).":
+ [
+ "Bitte prüfen Sie ihre %1$s Einstellungen, für die Sie IndexedDB verwenden (preference name %2$s prüfen).",
+ ],
+ "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.":
+ [
+ "Die Datenbank des Wallets ist veraltet. Aktuell wird jedoch keine Migration auf eine neue Version unterstützt. Bitte wählen Sie %1$s zum Zurücksetzen der Wallet-Datenbank.",
+ ],
+ "Running diagnostics": ["Diagnostik wird durchgeführt"],
+ "Debug tools": ["Debugging-Tools"],
+ "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?":
+ [""],
+ reset: ["zurücksetzen"],
+ "TESTING: This may delete all your coin, proceed with caution": [""],
+ "run gc": [""],
+ "import database": [""],
+ "export database": [""],
+ "Database exported at %1$s %2$s to download": [""],
+ Coins: [""],
+ "Pending operations": [""],
+ "usable coins": [""],
+ id: [""],
+ denom: [""],
+ value: [""],
+ status: [""],
+ "from refresh?": [""],
+ "age key count": [""],
+ "spent coins": [""],
+ "click to show": [""],
+ "Scan a QR code or enter taler:// URI below": [""],
+ Open: [""],
+ "URI is not valid. Taler URI should start with `taler://`": [""],
+ "Try another": [""],
"Could not load list of exchange": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Choose a currency to proceed or add another exchange": [
- ""
- ],
- "Known currencies": [
- ""
- ],
- "Specify the amount and the origin": [
- ""
- ],
- "Change currency": [
- ""
- ],
- "Use previous origins:": [
- ""
- ],
- "Or specify the origin of the money": [
- ""
- ],
- "Specify the origin of the money": [
- ""
- ],
- "From my bank account": [
- ""
- ],
- "From another wallet": [
- ""
- ],
- "currency not provided": [
- ""
- ],
- "Specify the amount and the destination": [
- ""
- ],
- "Use previous destinations:": [
- ""
- ],
- "Or specify the destination of the money": [
- ""
- ],
- "Specify the destination of the money": [
- ""
- ],
- "To my bank account": [
- ""
- ],
- "To another wallet": [
- ""
- ],
+ "Konnte die Umsatzanzeige nicht laden",
+ ],
+ "Choose a currency to proceed or add another exchange": [""],
+ "Known currencies": [""],
+ "Specify the amount and the origin": [""],
+ "Change currency": [""],
+ "Use previous origins:": [""],
+ "Or specify the origin of the money": [""],
+ "Specify the origin of the money": [""],
+ "From my bank account": [""],
+ "From another wallet": [""],
+ "currency not provided": [""],
+ "Specify the amount and the destination": [""],
+ "Use previous destinations:": [""],
+ "Or specify the destination of the money": [""],
+ "Specify the destination of the money": [""],
+ "To my bank account": [""],
+ "To another wallet": [""],
"Could not load backup recovery information": [
- "Konnte die Umsatzanzeige nicht laden"
- ],
- "Digital wallet recovery": [
- ""
- ],
- "Import backup, show info": [
- ""
- ],
- "All done, your transaction is in progress": [
- ""
- ],
- "Edit": [
- ""
- ],
- "Could not load the list of known exchanges": [
- ""
- ]
- }
- }
+ "Konnte die Umsatzanzeige nicht laden",
+ ],
+ "Digital wallet recovery": [""],
+ "Import backup, show info": [""],
+ "All done, your transaction is in progress": [""],
+ Edit: [""],
+ "Could not load the list of known exchanges": [""],
+ },
+ },
};
-strings['es'] = {
- "domain": "messages",
- "locale_data": {
- "messages": {
+strings["es"] = {
+ domain: "messages",
+ locale_data: {
+ messages: {
"": {
- "domain": "messages",
- "plural_forms": "nplurals=2; plural=n != 1;",
- "lang": "es"
+ domain: "messages",
+ plural_forms: "nplurals=2; plural=n != 1;",
+ lang: "es",
},
- "Balance": [
- "Balance"
- ],
- "Backup": [
- "Copia de seguridad"
- ],
- "QR Reader and Taler URI": [
- "Lector QR y Taler URI"
- ],
- "Settings": [
- "Configuración"
- ],
- "Dev": [
- "Dev"
- ],
- "%1$s": [
- "%1$s"
- ],
- "PENDING OPERATIONS": [
- "OPERACIONES PENDIENTES"
- ],
- "Loading": [
- "Cargando"
- ],
+ Balance: ["Balance"],
+ Backup: ["Copia de seguridad"],
+ "QR Reader and Taler URI": ["Lector QR y Taler URI"],
+ Settings: ["Configuración"],
+ Dev: ["Dev"],
+ "%1$s": ["%1$s"],
+ "PENDING OPERATIONS": ["OPERACIONES PENDIENTES"],
+ Loading: ["Cargando"],
"Could not load backup providers": [
- "No se pudo cargar los proveedores de copias de seguridad"
+ "No se pudo cargar los proveedores de copias de seguridad",
],
"No backup providers configured": [
- "No hay proveedores de copias de seguridad configurados"
- ],
- "Add provider": [
- "Agregar proveedor"
- ],
- "Sync all backups": [
- "Sincronizar todas las copias de seguridad"
- ],
- "Sync now": [
- "Sincronizar ahora"
- ],
- "Last synced": [
- "Ultima vez sincronizado"
- ],
- "Not synced": [
- "No sincronizado"
- ],
- "Expires in": [
- "Expira en"
- ],
+ "No hay proveedores de copias de seguridad configurados",
+ ],
+ "Add provider": ["Agregar proveedor"],
+ "Sync all backups": ["Sincronizar todas las copias de seguridad"],
+ "Sync now": ["Sincronizar ahora"],
+ "Last synced": ["Ultima vez sincronizado"],
+ "Not synced": ["No sincronizado"],
+ "Expires in": ["Expira en"],
"There was an error loading the provider detail for &quot; %1$s&quot;": [
- "Hubo un error cargando los detalles del proveedor para \"%1$s\""
+ 'Hubo un error cargando los detalles del proveedor para "%1$s"',
],
"There is not known provider with url &quot;%1$s&quot;.": [
- "No hay proveedor conocido con la URL \"%1$s\"."
- ],
- "See providers": [
- "Ver proveedores"
- ],
- "Last backup": [
- "Última copia de seguridad"
- ],
- "Back up": [
- "Copia de seguridad"
- ],
- "Provider fee": [
- "Tarifa del proveedor"
- ],
- "per year": [
- "por año"
- ],
- "Extend": [
- "Extender"
- ],
- "terms has changed, extending the service will imply accepting the new terms of service": [
- "los términos han cambiado, extender el servicio implicará aceptar los nuevos términos de servicio"
- ],
- "old": [
- "viejo"
- ],
- "new": [
- "nuevo"
- ],
- "fee": [
- "tarifa"
- ],
- "storage": [
- "almacenamiento"
- ],
- "Remove provider": [
- "Eliminar proveedor"
- ],
+ 'No hay proveedor conocido con la URL "%1$s".',
+ ],
+ "See providers": ["Ver proveedores"],
+ "Last backup": ["Última copia de seguridad"],
+ "Back up": ["Copia de seguridad"],
+ "Provider fee": ["Tarifa del proveedor"],
+ "per year": ["por año"],
+ Extend: ["Extender"],
+ "terms has changed, extending the service will imply accepting the new terms of service":
+ [
+ "los términos han cambiado, extender el servicio implicará aceptar los nuevos términos de servicio",
+ ],
+ old: ["viejo"],
+ new: ["nuevo"],
+ fee: ["tarifa"],
+ storage: ["almacenamiento"],
+ "Remove provider": ["Eliminar proveedor"],
"This provider has reported an error": [
- "Este proveedor ha reportado un error"
+ "Este proveedor ha reportado un error",
],
"There is conflict with another backup from %1$s": [
- "Hay un conflicto con otra copia de seguridad de %1$s"
- ],
- "Backup is not readable": [
- "La copia de seguridad no es legible"
+ "Hay un conflicto con otra copia de seguridad de %1$s",
],
+ "Backup is not readable": ["La copia de seguridad no es legible"],
"Unknown backup problem: %1$s": [
- "Problema de copia de seguridad desconocido: %1$s"
- ],
- "service paid": [
- "servicio pagado"
- ],
- "Backup valid until": [
- "Copia de seguridad válida hasta"
- ],
- "Cancel": [
- "Cancelar"
- ],
- "Open reserve page": [
- "Abrir página de reserva"
- ],
- "Open pay page": [
- "Abrir página de pago"
- ],
- "Open refund page": [
- "Abrir página de devolución"
- ],
- "Open tip page": [
- "Abrir página de propina"
- ],
- "Open withdraw page": [
- "Abrir página de retirada"
- ],
- "Get digital cash": [
- "Retirar dinero digital"
- ],
- "Could not load balance page": [
- "No se pudo cargar la página"
- ],
- "Add": [
- "Agregar"
- ],
- "Send %1$s": [
- "Envíar %1$s"
- ],
- "Taler Action": [
- "Acción Taler"
- ],
- "This page has pay action.": [
- "Esta página tiene una acción de pago."
- ],
+ "Problema de copia de seguridad desconocido: %1$s",
+ ],
+ "service paid": ["servicio pagado"],
+ "Backup valid until": ["Copia de seguridad válida hasta"],
+ Cancel: ["Cancelar"],
+ "Open reserve page": ["Abrir página de reserva"],
+ "Open pay page": ["Abrir página de pago"],
+ "Open refund page": ["Abrir página de devolución"],
+ "Open tip page": ["Abrir página de propina"],
+ "Open withdraw page": ["Abrir página de retirada"],
+ "Get digital cash": ["Retirar dinero digital"],
+ "Could not load balance page": ["No se pudo cargar la página"],
+ Add: ["Agregar"],
+ "Send %1$s": ["Envíar %1$s"],
+ "Taler Action": ["Acción Taler"],
+ "This page has pay action.": ["Esta página tiene una acción de pago."],
"This page has a withdrawal action.": [
- "Esta página tiene una acción de retirada."
+ "Esta página tiene una acción de retirada.",
],
"This page has a tip action.": [
- "Esta página tiene una acción de propina."
+ "Esta página tiene una acción de propina.",
],
"This page has a notify reserve action.": [
- "Esta página tiene una acción de notificación de reserva."
- ],
- "Notify": [
- "Notificar"
+ "Esta página tiene una acción de notificación de reserva.",
],
+ Notify: ["Notificar"],
"This page has a refund action.": [
- "Esta página tiene una acción de devolución."
+ "Esta página tiene una acción de devolución.",
],
"This page has a malformed taler uri.": [
- "Esta página tiene una URI de Taler malformada."
- ],
- "Dismiss": [
- "Descartar"
+ "Esta página tiene una URI de Taler malformada.",
],
+ Dismiss: ["Descartar"],
"this popup is being closed and you are being redirected to %1$s": [
- "Este popup está siendo cerrado y estás siendo redirigido a %1$s"
+ "Este popup está siendo cerrado y estás siendo redirigido a %1$s",
],
"Could not load purchase proposal details": [
- "No se pudo cargar el detalle de la propuesta"
- ],
- "Order Id": [
- "Id de orden"
- ],
- "Summary": [
- "Resumen"
- ],
- "Amount": [
- "Cantidad"
- ],
- "Merchant name": [
- "Comerciante"
- ],
- "Merchant jurisdiction": [
- "Jurisdicción"
- ],
- "Merchant address": [
- "Dirección del comerciante"
- ],
- "Merchant logo": [
- "Logo"
- ],
- "Merchant website": [
- "Siti web"
- ],
- "Merchant email": [
- "Correo electrónico"
- ],
- "Merchant public key": [
- "Clave pública"
- ],
- "Delivery date": [
- "Fecha de entrega"
- ],
- "Delivery location": [
- "Ubicación de entrega"
- ],
- "Products": [
- "Productos"
- ],
- "Created at": [
- "Creado en"
- ],
- "Refund deadline": [
- "Plazo de devolución"
- ],
- "Auto refund": [
- "Devolución automática"
- ],
- "Pay deadline": [
- "Plazo de pago"
- ],
- "Fulfillment URL": [
- "URL de éxito"
- ],
- "Fulfillment message": [
- "Mensaje de éxito"
- ],
- "Max deposit fee": [
- "Máxima comisión de depósito"
- ],
- "Max fee": [
- "Máxima comisión"
- ],
- "Minimum age": [
- "Edad mínima"
- ],
- "Wire fee amortization": [
- "Amortización de comisión de transferencia"
- ],
- "Auditors": [
- "Auditores"
- ],
- "Exchanges": [
- "Exchanges"
- ],
- "Bank account": [
- "Cuenta del banco"
- ],
- "Bitcoin address": [
- "Dirección de Bitcoin"
- ],
- "IBAN": [
- "IBAN"
- ],
+ "No se pudo cargar el detalle de la propuesta",
+ ],
+ "Order Id": ["Id de orden"],
+ Summary: ["Resumen"],
+ Amount: ["Cantidad"],
+ "Merchant name": ["Comerciante"],
+ "Merchant jurisdiction": ["Jurisdicción"],
+ "Merchant address": ["Dirección del comerciante"],
+ "Merchant logo": ["Logo"],
+ "Merchant website": ["Siti web"],
+ "Merchant email": ["Correo electrónico"],
+ "Merchant public key": ["Clave pública"],
+ "Delivery date": ["Fecha de entrega"],
+ "Delivery location": ["Ubicación de entrega"],
+ Products: ["Productos"],
+ "Created at": ["Creado en"],
+ "Refund deadline": ["Plazo de devolución"],
+ "Auto refund": ["Devolución automática"],
+ "Pay deadline": ["Plazo de pago"],
+ "Fulfillment URL": ["URL de éxito"],
+ "Fulfillment message": ["Mensaje de éxito"],
+ "Max deposit fee": ["Máxima comisión de depósito"],
+ "Max fee": ["Máxima comisión"],
+ "Minimum age": ["Edad mínima"],
+ "Wire fee amortization": ["Amortización de comisión de transferencia"],
+ Auditors: ["Auditores"],
+ Exchanges: ["Exchanges"],
+ "Bank account": ["Cuenta del banco"],
+ "Bitcoin address": ["Dirección de Bitcoin"],
+ IBAN: ["IBAN"],
"Could not load deposit status": [
- "No se pudo cargar el estado del depósito"
- ],
- "Digital cash deposit": [
- "Depósito de dinero digital"
- ],
- "Cost": [
- "Costo"
- ],
- "Fee": [
- "Comisión"
- ],
- "To be received": [
- "A recibir"
- ],
- "Send &nbsp; %1$s": [
- "Envíar %1$s"
- ],
- "Bitcoin transfer details": [
- "Detalle de transferencia Bitcoin"
- ],
- "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.": [
- "El exchange necesita una transacción con 3 salidas, una salida es hacia la cuenta del exchange y las otras dos son direcciones segwit falsas para metadata con el monto mínimo."
- ],
- "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts": [
- "En la billetera bitcoincore usar el botón \"Agregar destinatario\" para agregar dos destinatarios y copiar las direcciones y montos"
- ],
- "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC": [
- "Asegurarse de que el monto muestre %1$s BTC, sino tendrá que cambiar la unidad a BTC"
- ],
- "Account": [
- "Cuenta"
- ],
- "Bank host": [
- "Banco anfitrión"
- ],
- "Bank transfer details": [
- "Detalle de transferencia bancaria"
- ],
- "Subject": [
- "Asunto"
- ],
- "Receiver name": [
- "Nombre del receptor"
- ],
+ "No se pudo cargar el estado del depósito",
+ ],
+ "Digital cash deposit": ["Depósito de dinero digital"],
+ Cost: ["Costo"],
+ Fee: ["Comisión"],
+ "To be received": ["A recibir"],
+ "Send &nbsp; %1$s": ["Envíar %1$s"],
+ "Bitcoin transfer details": ["Detalle de transferencia Bitcoin"],
+ "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.":
+ [
+ "El exchange necesita una transacción con 3 salidas, una salida es hacia la cuenta del exchange y las otras dos son direcciones segwit falsas para metadata con el monto mínimo.",
+ ],
+ "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts":
+ [
+ 'En la billetera bitcoincore usar el botón "Agregar destinatario" para agregar dos destinatarios y copiar las direcciones y montos',
+ ],
+ "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC":
+ [
+ "Asegurarse de que el monto muestre %1$s BTC, sino tendrá que cambiar la unidad a BTC",
+ ],
+ Account: ["Cuenta"],
+ "Bank host": ["Banco anfitrión"],
+ "Bank transfer details": ["Detalle de transferencia bancaria"],
+ Subject: ["Asunto"],
+ "Receiver name": ["Nombre del receptor"],
"Could not load the transaction information": [
- "No se pudo cargar información de la transacción"
+ "No se pudo cargar información de la transacción",
],
"There was an error trying to complete the transaction": [
- "Hubo un error intentando completar la transacción"
+ "Hubo un error intentando completar la transacción",
],
"This transaction is not completed": [
- "Esta transacción no está completada"
- ],
- "Send": [
- "Enviar"
- ],
- "Retry": [
- "Reintentar"
- ],
- "Forget": [
- "Olvidar"
- ],
- "Caution!": [
- "Cuidado!"
- ],
- "If you have already wired money to the exchange you will loose the chance to get the coins form it.": [
- "Si tú ya has transferido dinero al exchange, perderás la oportunidad de recibir las monedas desde este."
- ],
- "Confirm": [
- "Confirmar"
- ],
- "Withdrawal": [
- "Retirada"
- ],
- "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.": [
- "Asegúrate de usar el asunto correcto, de lo contrario el dinero no llegará a esta billetera."
- ],
- "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.": [
- "El banco todavía no confirmó la transferencia. Ir a %1$s %2$s y verificar que no hay pasos pendientes."
- ],
- "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins": [
- "El banco confirmó la transferencia. Esperando que el exchange envíe las monedas"
- ],
- "Details": [
- "Detalles"
- ],
- "Payment": [
- "Pago"
- ],
- "Refunds": [
- "Devoluciones"
- ],
- "%1$s %2$s on %3$s": [
- "%1$s %2$s en %3$s"
- ],
- "Merchant created a refund for this order but was not automatically picked up.": [
- "El comerciante creó una devolución para esta orden pero no fue recogida automáticamente."
- ],
- "Offer": [
- "Oferta"
- ],
- "Accept": [
- "Aceptar"
- ],
- "Merchant": [
- "Comerciante"
- ],
- "Invoice ID": [
- "Id de factura"
- ],
- "Deposit": [
- "Depósito"
- ],
- "Refresh": [
- "Actualizar"
- ],
- "Tip": [
- "Propina"
- ],
- "Refund": [
- "Devolución"
- ],
- "Original order ID": [
- "Id de orden original"
- ],
- "Purchase summary": [
- "Resumen de compra"
- ],
- "copy": [
- "Copiar"
- ],
- "hide qr": [
- "Esconder QR"
- ],
- "show qr": [
- "Mostrar QR"
- ],
- "Credit": [
- "Crédito"
- ],
- "Invoice": [
- "Factura"
- ],
- "Exchange": [
- "Exchange"
- ],
- "URI": [
- "URI"
- ],
- "Debit": [
- "Débito"
- ],
- "Transfer": [
- "Transferencia"
- ],
- "Country": [
- "País"
- ],
- "Address lines": [
- "Detalle de dirección"
- ],
- "Building number": [
- "Número de edificio"
- ],
- "Building name": [
- "Nombre de edificio"
- ],
- "Street": [
- "Calle"
- ],
- "Post code": [
- "Código postal"
- ],
- "Town location": [
- "Ubicación de la ciudad"
- ],
- "Town": [
- "Ciudad"
- ],
- "District": [
- "Distrito"
- ],
- "Country subdivision": [
- "Subdivisión de país"
- ],
- "Date": [
- "Fecha"
- ],
- "Transaction fees": [
- "Comisiones de transacción"
- ],
- "Total": [
- "Total"
- ],
- "Withdraw": [
- "Retirar"
- ],
- "Price": [
- "Precio"
- ],
- "Refunded": [
- "Devuelto"
- ],
- "Delivery": [
- "Entrega"
- ],
- "Total transfer": [
- "Total transferido"
- ],
- "Could not load pay status": [
- "No se pudo cargar el estado del pago"
- ],
- "Digital cash payment": [
- "Pago con dinero digital"
- ],
- "Purchase": [
- "Compra"
- ],
- "Receipt": [
- "Recibo"
- ],
- "Valid until": [
- "Válido hasta"
- ],
- "List of products": [
- "Lista de productos"
- ],
- "free": [
- "Gratis"
- ],
+ "Esta transacción no está completada",
+ ],
+ Send: ["Enviar"],
+ Retry: ["Reintentar"],
+ Forget: ["Olvidar"],
+ "Caution!": ["Cuidado!"],
+ "If you have already wired money to the exchange you will loose the chance to get the coins form it.":
+ [
+ "Si tú ya has transferido dinero al exchange, perderás la oportunidad de recibir las monedas desde este.",
+ ],
+ Confirm: ["Confirmar"],
+ Withdrawal: ["Retirada"],
+ "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.":
+ [
+ "Asegúrate de usar el asunto correcto, de lo contrario el dinero no llegará a esta billetera.",
+ ],
+ "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.":
+ [
+ "El banco todavía no confirmó la transferencia. Ir a %1$s %2$s y verificar que no hay pasos pendientes.",
+ ],
+ "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins":
+ [
+ "El banco confirmó la transferencia. Esperando que el exchange envíe las monedas",
+ ],
+ Details: ["Detalles"],
+ Payment: ["Pago"],
+ Refunds: ["Devoluciones"],
+ "%1$s %2$s on %3$s": ["%1$s %2$s en %3$s"],
+ "Merchant created a refund for this order but was not automatically picked up.":
+ [
+ "El comerciante creó una devolución para esta orden pero no fue recogida automáticamente.",
+ ],
+ Offer: ["Oferta"],
+ Accept: ["Aceptar"],
+ Merchant: ["Comerciante"],
+ "Invoice ID": ["Id de factura"],
+ Deposit: ["Depósito"],
+ Refresh: ["Actualizar"],
+ Tip: ["Propina"],
+ Refund: ["Devolución"],
+ "Original order ID": ["Id de orden original"],
+ "Purchase summary": ["Resumen de compra"],
+ copy: ["Copiar"],
+ "hide qr": ["Esconder QR"],
+ "show qr": ["Mostrar QR"],
+ Credit: ["Crédito"],
+ Invoice: ["Factura"],
+ Exchange: ["Exchange"],
+ URI: ["URI"],
+ Debit: ["Débito"],
+ Transfer: ["Transferencia"],
+ Country: ["País"],
+ "Address lines": ["Detalle de dirección"],
+ "Building number": ["Número de edificio"],
+ "Building name": ["Nombre de edificio"],
+ Street: ["Calle"],
+ "Post code": ["Código postal"],
+ "Town location": ["Ubicación de la ciudad"],
+ Town: ["Ciudad"],
+ District: ["Distrito"],
+ "Country subdivision": ["Subdivisión de país"],
+ Date: ["Fecha"],
+ "Transaction fees": ["Comisiones de transacción"],
+ Total: ["Total"],
+ Withdraw: ["Retirar"],
+ Price: ["Precio"],
+ Refunded: ["Devuelto"],
+ Delivery: ["Entrega"],
+ "Total transfer": ["Total transferido"],
+ "Could not load pay status": ["No se pudo cargar el estado del pago"],
+ "Digital cash payment": ["Pago con dinero digital"],
+ Purchase: ["Compra"],
+ Receipt: ["Recibo"],
+ "Valid until": ["Válido hasta"],
+ "List of products": ["Lista de productos"],
+ free: ["Gratis"],
"Already paid, you are going to be redirected to %1$s": [
- "Ya pagado, estás siendo dirigido a %1$s"
- ],
- "Already paid": [
- "Ya pagado"
- ],
- "Already claimed": [
- "Ya reclamado"
- ],
- "Pay with a mobile phone": [
- "Pagar con un teléfono móbil"
- ],
- "Hide QR": [
- "Esconder QR"
- ],
- "Scan the QR code or &nbsp; %1$s": [
- "Escanear el código QR o %1$s"
- ],
- "Pay &nbsp; %1$s": [
- "Pagar %1$s"
- ],
+ "Ya pagado, estás siendo dirigido a %1$s",
+ ],
+ "Already paid": ["Ya pagado"],
+ "Already claimed": ["Ya reclamado"],
+ "Pay with a mobile phone": ["Pagar con un teléfono móbil"],
+ "Hide QR": ["Esconder QR"],
+ "Scan the QR code or &nbsp; %1$s": ["Escanear el código QR o %1$s"],
+ "Pay &nbsp; %1$s": ["Pagar %1$s"],
"You have no balance for this currency. Withdraw digital cash first.": [
- "No hay balance para esta divisa. Extraer dinero digital primero."
- ],
- "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.": [
- "No se encontraron suficientes monedas para pagar. Incluso si tuviera suficiente %1$s algunas restricciones se podrían aplicar."
- ],
- "Your current balance is not enough.": [
- "Tu balance no es suficiente."
- ],
- "Merchant message": [
- "Mensaje del comerciante"
- ],
+ "No hay balance para esta divisa. Extraer dinero digital primero.",
+ ],
+ "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.":
+ [
+ "No se encontraron suficientes monedas para pagar. Incluso si tuviera suficiente %1$s algunas restricciones se podrían aplicar.",
+ ],
+ "Your current balance is not enough.": ["Tu balance no es suficiente."],
+ "Merchant message": ["Mensaje del comerciante"],
"Could not load refund status": [
- "No se pudo cargar el estado de la devolución"
- ],
- "Digital cash refund": [
- "Devolución de dinero digital"
- ],
- "You&apos;ve ignored the tip.": [
- "Has ignorado la propina."
+ "No se pudo cargar el estado de la devolución",
],
+ "Digital cash refund": ["Devolución de dinero digital"],
+ "You&apos;ve ignored the tip.": ["Has ignorado la propina."],
"The refund is in progress.": [
- "El proceso de devolución está en progreso."
- ],
- "Total to refund": [
- "Total para devolver"
+ "El proceso de devolución está en progreso.",
],
+ "Total to refund": ["Total para devolver"],
"The merchant &quot;%1$s&quot; is offering you a refund.": [
- "El comerciante \"%1$s\" te está ofreciendo una devolución."
- ],
- "Order amount": [
- "Monto de la orden"
- ],
- "Already refunded": [
- "Ya devuelto"
- ],
- "Refund offered": [
- "Devolución ofrecida"
- ],
- "Accept &nbsp; %1$s": [
- "Aceptar %1$s"
+ 'El comerciante "%1$s" te está ofreciendo una devolución.',
],
+ "Order amount": ["Monto de la orden"],
+ "Already refunded": ["Ya devuelto"],
+ "Refund offered": ["Devolución ofrecida"],
+ "Accept &nbsp; %1$s": ["Aceptar %1$s"],
"Could not load tip status": [
- "No se pudo cargar el estado de la propina"
- ],
- "Digital cash tip": [
- "Propina con dinero digital"
+ "No se pudo cargar el estado de la propina",
],
+ "Digital cash tip": ["Propina con dinero digital"],
"The merchant is offering you a tip": [
- "El comerciante te ofrece una propina"
- ],
- "Merchant URL": [
- "URL del comerciante"
- ],
- "Receive &nbsp; %1$s": [
- "Recibir %1$s"
- ],
- "Tip from %1$s accepted. Check your transactions list for more details.": [
- "Propina de %1$s aceptada. Revisa tu lista de transacciones para más detalle."
- ],
- "Select one option": [
- "Seleccione una opción"
- ],
- "Could not load": [
- "No se pudo cargar"
- ],
- "Show terms of service": [
- "Mostrar términos de servicio"
- ],
+ "El comerciante te ofrece una propina",
+ ],
+ "Merchant URL": ["URL del comerciante"],
+ "Receive &nbsp; %1$s": ["Recibir %1$s"],
+ "Tip from %1$s accepted. Check your transactions list for more details.":
+ [
+ "Propina de %1$s aceptada. Revisa tu lista de transacciones para más detalle.",
+ ],
+ "Select one option": ["Seleccione una opción"],
+ "Could not load": ["No se pudo cargar"],
+ "Show terms of service": ["Mostrar términos de servicio"],
"I accept the exchange terms of service": [
- "Yo acepto los términos de servicio del exchange"
+ "Yo acepto los términos de servicio del exchange",
],
"Exchange doesn&apos;t have terms of service": [
- "El exchange no tiene los términos de servicio"
- ],
- "Review exchange terms of service": [
- "Revisar los términos de servicio"
+ "El exchange no tiene los términos de servicio",
],
+ "Review exchange terms of service": ["Revisar los términos de servicio"],
"Review new version of terms of service": [
- "Revisar los nuevos términos de servicio"
+ "Revisar los nuevos términos de servicio",
],
"The exchange reply with a empty terms of service": [
- "El exchange respondió con unos términos de servicio vacíos"
- ],
- "Download Terms of Service": [
- "Descargar los términos de servicio"
- ],
- "Hide terms of service": [
- "Esconder los términos de servicio"
+ "El exchange respondió con unos términos de servicio vacíos",
],
+ "Download Terms of Service": ["Descargar los términos de servicio"],
+ "Hide terms of service": ["Esconder los términos de servicio"],
"Could not load exchange fees": [
- "No se pudo cargar la comisión del exchange"
- ],
- "Close": [
- "Cerrar"
- ],
- "could not find any exchange": [
- "No se pudo encontrar ningún exchange"
+ "No se pudo cargar la comisión del exchange",
],
+ Close: ["Cerrar"],
+ "could not find any exchange": ["No se pudo encontrar ningún exchange"],
"could not find any exchange for the currency %1$s": [
- "No se pudo encontrar ningún exchange para la divisa %1$s"
- ],
- "Service fee description": [
- "Descripción de comisión de servicio"
- ],
- "Select %1$s exchange": [
- "Seleccionar exchange %1$s"
- ],
- "Reset": [
- "Reiniciar"
- ],
- "Use this exchange": [
- "Usar este exchange"
- ],
- "Doesn&apos;t have auditors": [
- "No tiene auditores"
- ],
- "currency": [
- "Divisa"
- ],
- "Operations": [
- "Operaciones"
- ],
- "Deposits": [
- "Depósitos"
- ],
- "Denomination": [
- "Operaciones"
- ],
- "Until": [
- "Hasta"
- ],
- "Withdrawals": [
- "Retiradas"
- ],
- "Currency": [
- "Divisa"
- ],
- "Coin operations": [
- "Operaciones de moneda"
- ],
- "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.": [
- "Toda operación en esta sección puede ser diferente por valor de denominación y es válida por un período. El exchange cobrará el monto indicado cada vez que una es usada en dicha operación."
- ],
- "Transfer operations": [
- "Operaciones de transferencia"
- ],
- "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.": [
- "Toda operación en esta sección puede ser diferente por tipo de transacción y es válida por un período. El exchange cobrará el monto indicado cada vez que se haga una transferencia."
- ],
- "Operation": [
- "Operación"
- ],
- "Wallet operations": [
- "Operaciones de billetera"
- ],
- "Feature": [
- "Característica"
- ],
+ "No se pudo encontrar ningún exchange para la divisa %1$s",
+ ],
+ "Service fee description": ["Descripción de comisión de servicio"],
+ "Select %1$s exchange": ["Seleccionar exchange %1$s"],
+ Reset: ["Reiniciar"],
+ "Use this exchange": ["Usar este exchange"],
+ "Doesn&apos;t have auditors": ["No tiene auditores"],
+ currency: ["Divisa"],
+ Operations: ["Operaciones"],
+ Deposits: ["Depósitos"],
+ Denomination: ["Operaciones"],
+ Until: ["Hasta"],
+ Withdrawals: ["Retiradas"],
+ Currency: ["Divisa"],
+ "Coin operations": ["Operaciones de moneda"],
+ "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.":
+ [
+ "Toda operación en esta sección puede ser diferente por valor de denominación y es válida por un período. El exchange cobrará el monto indicado cada vez que una es usada en dicha operación.",
+ ],
+ "Transfer operations": ["Operaciones de transferencia"],
+ "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.":
+ [
+ "Toda operación en esta sección puede ser diferente por tipo de transacción y es válida por un período. El exchange cobrará el monto indicado cada vez que se haga una transferencia.",
+ ],
+ Operation: ["Operación"],
+ "Wallet operations": ["Operaciones de billetera"],
+ Feature: ["Característica"],
"Could not get the info from the URI": [
- "No se pudo obtener la información desde la URI"
+ "No se pudo obtener la información desde la URI",
],
"Could not get info of withdrawal": [
- "No se pudo obtener la información de retiro"
- ],
- "Digital cash withdrawal": [
- "Retirada de dinero digital"
+ "No se pudo obtener la información de retiro",
],
+ "Digital cash withdrawal": ["Retirada de dinero digital"],
"Could not finish the withdrawal operation": [
- "No se pudo completar la operación de retirada"
- ],
- "Age restriction": [
- "Restricción etaria"
- ],
- "Withdraw &nbsp; %1$s": [
- "Retirar %1$s"
- ],
- "Withdraw to a mobile phone": [
- "Retirar con un teléfono móvil"
- ],
- "Digital invoice": [
- "Factura digital"
+ "No se pudo completar la operación de retirada",
],
+ "Age restriction": ["Restricción etaria"],
+ "Withdraw &nbsp; %1$s": ["Retirar %1$s"],
+ "Withdraw to a mobile phone": ["Retirar con un teléfono móvil"],
+ "Digital invoice": ["Factura digital"],
"Could not finish the invoice creation": [
- "No se pudo completar la creación de la factura"
- ],
- "Create": [
- "Crear"
+ "No se pudo completar la creación de la factura",
],
+ Create: ["Crear"],
"Could not finish the payment operation": [
- "No se pudo completar la operación de pago"
- ],
- "Digital cash transfer": [
- "Transferencia de dinero digital"
+ "No se pudo completar la operación de pago",
],
+ "Digital cash transfer": ["Transferencia de dinero digital"],
"Could not finish the transfer creation": [
- "No se pudo completar la operación de creación de transferencia"
+ "No se pudo completar la operación de creación de transferencia",
],
"Could not finish the pickup operation": [
- "No se pudo completar la operación de recolección"
- ],
- "Manual Withdrawal for %1$s": [
- "Retirada Manual para %1$s"
- ],
- "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.": [
- "Elija un exchange desde donde las monedas serán retiradas. El exchange enviará las monedas a esta billetera después de recibir una transferencia bancaria con el asunto correcto."
- ],
- "No exchange found for %1$s": [
- "No se encontró exchange para %1$s"
- ],
- "Add Exchange": [
- "Agregar Exchange"
- ],
- "No exchange configured": [
- "Sin exchange configurado"
- ],
- "Can&apos;t create the reserve": [
- "No se pudo crear una reserva"
- ],
- "Start withdrawal": [
- "Comenzar la retirada"
- ],
+ "No se pudo completar la operación de recolección",
+ ],
+ "Manual Withdrawal for %1$s": ["Retirada Manual para %1$s"],
+ "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.":
+ [
+ "Elija un exchange desde donde las monedas serán retiradas. El exchange enviará las monedas a esta billetera después de recibir una transferencia bancaria con el asunto correcto.",
+ ],
+ "No exchange found for %1$s": ["No se encontró exchange para %1$s"],
+ "Add Exchange": ["Agregar Exchange"],
+ "No exchange configured": ["Sin exchange configurado"],
+ "Can&apos;t create the reserve": ["No se pudo crear una reserva"],
+ "Start withdrawal": ["Comenzar la retirada"],
"Could not load deposit balance": [
- "No se pudo cargar el balance de depósito"
+ "No se pudo cargar el balance de depósito",
],
"A currency or an amount should be indicated": [
- "Se debería especificar una divisa o un monto"
+ "Se debería especificar una divisa o un monto",
],
"There is no enough balance to make a deposit for currency %1$s": [
- "No hay suficiente balance para hacer un depósito para la divisa %1$s"
- ],
- "Send %1$s to your account": [
- "Enviar %1$s a tu cuenta"
+ "No hay suficiente balance para hacer un depósito para la divisa %1$s",
],
+ "Send %1$s to your account": ["Enviar %1$s a tu cuenta"],
"There is no account to make a deposit for currency %1$s": [
- "No hay una cuenta para hacer un depósito para la divisa %1$s"
- ],
- "Add account": [
- "Agregar cuenta"
- ],
- "Select account": [
- "Seleccionar cuenta"
- ],
- "Add another account": [
- "Agregar otra cuenta"
- ],
- "Deposit fee": [
- "Comisión de depósito"
- ],
- "Total deposit": [
- "Depósito total"
- ],
- "Deposit&nbsp;%1$s %2$s": [
- "Depositar %1$s %2$s"
- ],
- "Add bank account for %1$s": [
- "Agregar cuenta de banco para %1$s"
- ],
+ "No hay una cuenta para hacer un depósito para la divisa %1$s",
+ ],
+ "Add account": ["Agregar cuenta"],
+ "Select account": ["Seleccionar cuenta"],
+ "Add another account": ["Agregar otra cuenta"],
+ "Deposit fee": ["Comisión de depósito"],
+ "Total deposit": ["Depósito total"],
+ "Deposit&nbsp;%1$s %2$s": ["Depositar %1$s %2$s"],
+ "Add bank account for %1$s": ["Agregar cuenta de banco para %1$s"],
"Enter the URL of an exchange you trust.": [
- "Ingresar la URL de un exchange en el que confíes."
- ],
- "Unable add this account": [
- "No fue posible agregar esta cuenta"
- ],
- "Select account type": [
- "Seleccione un tipo de cuenta"
- ],
- "Review terms of service": [
- "Revisar los términos de servicio"
- ],
- "Exchange URL": [
- "Exchange URL"
- ],
- "Add exchange": [
- "Agregar exchange"
- ],
- "Add new exchange": [
- "Agregar nuevo exchange"
- ],
- "Add exchange for %1$s": [
- "Agregar exchange para %1$s"
- ],
+ "Ingresar la URL de un exchange en el que confíes.",
+ ],
+ "Unable add this account": ["No fue posible agregar esta cuenta"],
+ "Select account type": ["Seleccione un tipo de cuenta"],
+ "Review terms of service": ["Revisar los términos de servicio"],
+ "Exchange URL": ["Exchange URL"],
+ "Add exchange": ["Agregar exchange"],
+ "Add new exchange": ["Agregar nuevo exchange"],
+ "Add exchange for %1$s": ["Agregar exchange para %1$s"],
"An exchange has been found! Review the information and click next": [
- "Un exchange ha sido encontrado! Revisa la información y haz clic en siguiente"
+ "Un exchange ha sido encontrado! Revisa la información y haz clic en siguiente",
],
"This exchange doesn&apos;t match the expected currency %1$s": [
- "Este exchange no coincide con la divisa %1$s esperada"
+ "Este exchange no coincide con la divisa %1$s esperada",
],
"Unable to verify this exchange": [
- "No fue posible verificar este exchange"
- ],
- "Unable to add this exchange": [
- "No fue posible agregar este exchange"
- ],
- "loading": [
- "cargando"
- ],
- "Version": [
- "Versión"
- ],
- "Next": [
- "Siguiente"
- ],
- "Waiting for confirmation": [
- "Esperando confirmación"
- ],
- "PENDING": [
- "PENDIENTE"
- ],
+ "No fue posible verificar este exchange",
+ ],
+ "Unable to add this exchange": ["No fue posible agregar este exchange"],
+ loading: ["cargando"],
+ Version: ["Versión"],
+ Next: ["Siguiente"],
+ "Waiting for confirmation": ["Esperando confirmación"],
+ PENDING: ["PENDIENTE"],
"Could not load the list of transactions": [
- "No se pudo cargar la lista de transacciones"
+ "No se pudo cargar la lista de transacciones",
],
"Your transaction history is empty for this currency.": [
- "No hay historial para esta divisa."
- ],
- "Add backup provider": [
- "Agregar proveedor de copias de seguridad"
+ "No hay historial para esta divisa.",
],
+ "Add backup provider": ["Agregar proveedor de copias de seguridad"],
"Could not get provider information": [
- "No se pudo conseguir la información del proveedor"
+ "No se pudo conseguir la información del proveedor",
],
"Backup providers may charge for their service": [
- "Los proveedores de copias de seguridad pueden cobrarte por su servicio"
- ],
- "URL": [
- "URL"
- ],
- "Name": [
- "Nombre"
- ],
- "Provider URL": [
- "URL del proveedor"
+ "Los proveedores de copias de seguridad pueden cobrarte por su servicio",
],
+ URL: ["URL"],
+ Name: ["Nombre"],
+ "Provider URL": ["URL del proveedor"],
"Please review and accept this provider&apos;s terms of service": [
- "Por favor revisa y acepta los términos de servicio del proveedor"
- ],
- "Pricing": [
- "Precios"
- ],
- "free of charge": [
- "Gratis"
- ],
- "%1$s per year of service": [
- "%1$s por año de servicio"
- ],
- "Storage": [
- "Alamcenamiento"
+ "Por favor revisa y acepta los términos de servicio del proveedor",
],
+ Pricing: ["Precios"],
+ "free of charge": ["Gratis"],
+ "%1$s per year of service": ["%1$s por año de servicio"],
+ Storage: ["Alamcenamiento"],
"%1$s megabytes of storage per year of service": [
- "%1$s megabytes de almacenamiento por año de servicio"
- ],
- "Accept terms of service": [
- "Aceptar los términos de servicio"
+ "%1$s megabytes de almacenamiento por año de servicio",
],
+ "Accept terms of service": ["Aceptar los términos de servicio"],
"Could not parse the payto URI": [
- "No se pudo obtener la información de la URI payto"
- ],
- "Please check the uri": [
- "Revisar la URI"
+ "No se pudo obtener la información de la URI payto",
],
+ "Please check the uri": ["Revisar la URI"],
"Exchange is ready for withdrawal": [
- "El exchange está listo para la retirada"
- ],
- "To complete the process you need to wire%1$s %2$s to the exchange bank account": [
- "Para completar el proceso necesitas transferir %1$s %2$s a la cuenta bancaria del exchange"
- ],
- "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905": [
- "Alternativamente, también puedes escanear el código QR o abrir %1$s si tienes una App bancaria instalada que soporta RFC 8905"
- ],
- "Cancel withdrawal": [
- "Cancelar retirada"
- ],
- "Could not toggle auto-open": [
- "No se pudo cambiar el auto-open"
- ],
- "Could not toggle clipboard": [
- "No se pudo cambiar portapapeles"
- ],
- "Navigator": [
- "Navegador"
- ],
+ "El exchange está listo para la retirada",
+ ],
+ "To complete the process you need to wire%1$s %2$s to the exchange bank account":
+ [
+ "Para completar el proceso necesitas transferir %1$s %2$s a la cuenta bancaria del exchange",
+ ],
+ "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905":
+ [
+ "Alternativamente, también puedes escanear el código QR o abrir %1$s si tienes una App bancaria instalada que soporta RFC 8905",
+ ],
+ "Cancel withdrawal": ["Cancelar retirada"],
+ "Could not toggle auto-open": ["No se pudo cambiar el auto-open"],
+ "Could not toggle clipboard": ["No se pudo cambiar portapapeles"],
+ Navigator: ["Navegador"],
"Automatically open wallet based on page content": [
- "Abrir automáticamente la billetera basada en el contenido de la página"
- ],
- "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.": [
- "Habilitar la opción de debajo, hará que el uso de la billetera sea mas rápido, pero requiere más permisos de tu navegador."
+ "Abrir automáticamente la billetera basada en el contenido de la página",
],
+ "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.":
+ [
+ "Habilitar la opción de debajo, hará que el uso de la billetera sea mas rápido, pero requiere más permisos de tu navegador.",
+ ],
"Automatically check clipboard for Taler URI": [
- "Revisar el portapapeles automáticamente por Taler URI"
- ],
- "Trust": [
- "Confianza"
- ],
- "No exchange yet": [
- "No hay exchanges todavía"
- ],
- "Term of Service": [
- "Términos de servicio"
- ],
- "ok": [
- "ok"
- ],
- "changed": [
- "modificado"
- ],
- "not accepted": [
- "no aceptado"
- ],
+ "Revisar el portapapeles automáticamente por Taler URI",
+ ],
+ Trust: ["Confianza"],
+ "No exchange yet": ["No hay exchanges todavía"],
+ "Term of Service": ["Términos de servicio"],
+ ok: ["ok"],
+ changed: ["modificado"],
+ "not accepted": ["no aceptado"],
"unknown (exchange status should be updated)": [
- "desconocido (el estado del exchange debería actualizarse)"
- ],
- "Add an exchange": [
- "Agregar un exchange"
- ],
- "Troubleshooting": [
- "Solución de problemas"
- ],
- "Developer mode": [
- "Modo desarrollador"
+ "desconocido (el estado del exchange debería actualizarse)",
],
+ "Add an exchange": ["Agregar un exchange"],
+ Troubleshooting: ["Solución de problemas"],
+ "Developer mode": ["Modo desarrollador"],
"More options and information useful for debugging": [
- "Más información y opciones útiles para depuración"
- ],
- "Display": [
- "Pantalla"
- ],
- "Current Language": [
- "Lenguaje actual"
- ],
- "Wallet Core": [
- "Wallet core"
- ],
- "Web Extension": [
- "Web Extension"
- ],
- "Exchange compatibility": [
- "Compatibilidad con Exchange"
- ],
- "Merchant compatibility": [
- "Compatibilidad con Merchant"
- ],
- "Bank compatibility": [
- "Compatibilidad con Bank"
- ],
- "Browser Extension Installed!": [
- "Extensión del navegador instalada!"
- ],
+ "Más información y opciones útiles para depuración",
+ ],
+ Display: ["Pantalla"],
+ "Current Language": ["Lenguaje actual"],
+ "Wallet Core": ["Wallet core"],
+ "Web Extension": ["Web Extension"],
+ "Exchange compatibility": ["Compatibilidad con Exchange"],
+ "Merchant compatibility": ["Compatibilidad con Merchant"],
+ "Bank compatibility": ["Compatibilidad con Bank"],
+ "Browser Extension Installed!": ["Extensión del navegador instalada!"],
"You can open the GNU Taler Wallet using the combination %1$s .": [
- "Puedes abrir GNU Taler Wallet usando la combinación %1$s."
- ],
- "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:": [
- "También fijando GNU Taler Wallet a to navegador Chrome permite un acceso rápido sin el teclado:"
- ],
- "Click the puzzle icon": [
- "Haz click en el ícono de rompecabezas"
- ],
- "Search for GNU Taler Wallet": [
- "Busca \"GNU Taler Wallet\""
- ],
- "Click the pin icon": [
- "Haz click en el ícono de fijar"
- ],
- "Permissions": [
- "Permisos"
- ],
- "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)": [
- "(Habilitar esta opción de abajo hará el uso de la billetera mas rápido, pero requiere mas permisos de tu navegador)"
- ],
- "Next Steps": [
- "Próximos pasos"
- ],
- "Try the demo": [
- "Probar la demostración"
- ],
+ "Puedes abrir GNU Taler Wallet usando la combinación %1$s.",
+ ],
+ "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:":
+ [
+ "También fijando GNU Taler Wallet a to navegador Chrome permite un acceso rápido sin el teclado:",
+ ],
+ "Click the puzzle icon": ["Haz click en el ícono de rompecabezas"],
+ "Search for GNU Taler Wallet": ['Busca "GNU Taler Wallet"'],
+ "Click the pin icon": ["Haz click en el ícono de fijar"],
+ Permissions: ["Permisos"],
+ "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)":
+ [
+ "(Habilitar esta opción de abajo hará el uso de la billetera mas rápido, pero requiere mas permisos de tu navegador)",
+ ],
+ "Next Steps": ["Próximos pasos"],
+ "Try the demo": ["Probar la demostración"],
"Learn how to top up your wallet balance": [
- "Aprender como llenar tu billetera"
+ "Aprender como llenar tu billetera",
],
"Diagnostics timed out. Could not talk to the wallet backend.": [
- "El diagnóstico caducó. No nos pudimos comunicar con la billetera."
- ],
- "Problems detected:": [
- "Problemas detectados:"
- ],
- "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).": [
- "Por favor revisa en tu configuración %1$s que tienes IndexedDB habilitado (el nombre de la preferencia %2$s)."
- ],
- "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.": [
- "La base de datos de la billetera expiró. Por ahora la migración automática no está soportada. Por favor dirijasé a %1$s para reiniciar la base de datos de la billetera."
- ],
- "Running diagnostics": [
- "Ejecutando diagnósticos"
- ],
- "Debug tools": [
- "Herramientas de desarrollo"
- ],
- "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?": [
- "Quieres DESTRUIR IRREVOCABLEMENTE todo dentro de tu billetera y PERDER TODAS TUS MONEDAS?"
- ],
- "reset": [
- "Reiniciar"
- ],
+ "El diagnóstico caducó. No nos pudimos comunicar con la billetera.",
+ ],
+ "Problems detected:": ["Problemas detectados:"],
+ "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).":
+ [
+ "Por favor revisa en tu configuración %1$s que tienes IndexedDB habilitado (el nombre de la preferencia %2$s).",
+ ],
+ "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.":
+ [
+ "La base de datos de la billetera expiró. Por ahora la migración automática no está soportada. Por favor dirijasé a %1$s para reiniciar la base de datos de la billetera.",
+ ],
+ "Running diagnostics": ["Ejecutando diagnósticos"],
+ "Debug tools": ["Herramientas de desarrollo"],
+ "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?":
+ [
+ "Quieres DESTRUIR IRREVOCABLEMENTE todo dentro de tu billetera y PERDER TODAS TUS MONEDAS?",
+ ],
+ reset: ["Reiniciar"],
"TESTING: This may delete all your coin, proceed with caution": [
- "TESTING: Esto puede borrar todas tus monedas, proceder con precaución"
- ],
- "run gc": [
- "Ejecutar GC"
- ],
- "import database": [
- "importar base de datos"
- ],
- "export database": [
- "exportar base de datos"
+ "TESTING: Esto puede borrar todas tus monedas, proceder con precaución",
],
+ "run gc": ["Ejecutar GC"],
+ "import database": ["importar base de datos"],
+ "export database": ["exportar base de datos"],
"Database exported at %1$s %2$s to download": [
- "Base de datos exportada a %1$s %2$s para descargar"
- ],
- "Coins": [
- "Monedas"
- ],
- "Pending operations": [
- "Operaciones pendientes"
- ],
- "usable coins": [
- "monedas usables"
- ],
- "id": [
- "id"
- ],
- "denom": [
- "denominación"
- ],
- "value": [
- "valor"
- ],
- "status": [
- "estado"
- ],
- "from refresh?": [
- "desde refresco?"
- ],
- "age key count": [
- "cantidad de age key"
- ],
- "spent coins": [
- "monedas gastadas"
- ],
- "click to show": [
- "hacer clic para mostrar"
- ],
+ "Base de datos exportada a %1$s %2$s para descargar",
+ ],
+ Coins: ["Monedas"],
+ "Pending operations": ["Operaciones pendientes"],
+ "usable coins": ["monedas usables"],
+ id: ["id"],
+ denom: ["denominación"],
+ value: ["valor"],
+ status: ["estado"],
+ "from refresh?": ["desde refresco?"],
+ "age key count": ["cantidad de age key"],
+ "spent coins": ["monedas gastadas"],
+ "click to show": ["hacer clic para mostrar"],
"Scan a QR code or enter taler:// URI below": [
- "Escanear un código QR o ingresar taler:// URI debajo"
- ],
- "Open": [
- "Abrir"
+ "Escanear un código QR o ingresar taler:// URI debajo",
],
+ Open: ["Abrir"],
"URI is not valid. Taler URI should start with `taler://`": [
- "El URI no es válido. Taler URI debería comenzar con `taler://`"
- ],
- "Try another": [
- "Intentar otro"
+ "El URI no es válido. Taler URI debería comenzar con `taler://`",
],
+ "Try another": ["Intentar otro"],
"Could not load list of exchange": [
- "No se pudo cargar la lista de exchange"
+ "No se pudo cargar la lista de exchange",
],
"Choose a currency to proceed or add another exchange": [
- "Elija una divisa para proceder o agregue otro exchange"
- ],
- "Known currencies": [
- "Divisas conocidas"
- ],
- "Specify the amount and the origin": [
- "Indicar el monto y el origen"
- ],
- "Change currency": [
- "Cambiar divisa"
- ],
- "Use previous origins:": [
- "Usar un origen previo:"
+ "Elija una divisa para proceder o agregue otro exchange",
],
+ "Known currencies": ["Divisas conocidas"],
+ "Specify the amount and the origin": ["Indicar el monto y el origen"],
+ "Change currency": ["Cambiar divisa"],
+ "Use previous origins:": ["Usar un origen previo:"],
"Or specify the origin of the money": [
- "O especificar el origen del dinero"
- ],
- "Specify the origin of the money": [
- "Especificar el origen del dinero"
- ],
- "From my bank account": [
- "Desde mi cuenta de banco"
- ],
- "From another wallet": [
- "Desde otra billetera"
- ],
- "currency not provided": [
- "Divisa no provista"
+ "O especificar el origen del dinero",
],
+ "Specify the origin of the money": ["Especificar el origen del dinero"],
+ "From my bank account": ["Desde mi cuenta de banco"],
+ "From another wallet": ["Desde otra billetera"],
+ "currency not provided": ["Divisa no provista"],
"Specify the amount and the destination": [
- "Especificar el monto y el destino"
- ],
- "Use previous destinations:": [
- "Usar destinos previos:"
+ "Especificar el monto y el destino",
],
+ "Use previous destinations:": ["Usar destinos previos:"],
"Or specify the destination of the money": [
- "O especificar el destino del dinero"
+ "O especificar el destino del dinero",
],
"Specify the destination of the money": [
- "Especificar el destino del dinero"
- ],
- "To my bank account": [
- "Hacia mi cuenta de banco"
- ],
- "To another wallet": [
- "Hacia otra billetera"
+ "Especificar el destino del dinero",
],
+ "To my bank account": ["Hacia mi cuenta de banco"],
+ "To another wallet": ["Hacia otra billetera"],
"Could not load backup recovery information": [
- "No se pudo cargar la información de recuperación de copia de seguridad"
- ],
- "Digital wallet recovery": [
- "Recuperación de billetera digital"
+ "No se pudo cargar la información de recuperación de copia de seguridad",
],
+ "Digital wallet recovery": ["Recuperación de billetera digital"],
"Import backup, show info": [
- "Importar copia de seguridad, mostrar información"
+ "Importar copia de seguridad, mostrar información",
],
"All done, your transaction is in progress": [
- "Todo completo, su transacción está en progreso"
- ],
- "Edit": [
- "Editar"
+ "Todo completo, su transacción está en progreso",
],
+ Edit: ["Editar"],
"Could not load the list of known exchanges": [
- "No se pudo cargar la lista de exchange conocidos"
- ]
- }
- }
+ "No se pudo cargar la lista de exchange conocidos",
+ ],
+ },
+ },
};
-strings['fr'] = {
- "domain": "messages",
- "locale_data": {
- "messages": {
+strings["fr"] = {
+ domain: "messages",
+ locale_data: {
+ messages: {
"": {
- "domain": "messages",
- "plural_forms": "nplurals=2; plural=(n!=1);",
- "lang": "fr"
+ domain: "messages",
+ plural_forms: "nplurals=2; plural=(n!=1);",
+ lang: "fr",
},
- "Balance": [
- ""
- ],
- "Backup": [
- ""
- ],
- "QR Reader and Taler URI": [
- ""
- ],
- "Settings": [
- ""
- ],
- "Dev": [
- ""
- ],
- "%1$s": [
- ""
- ],
- "PENDING OPERATIONS": [
- ""
- ],
- "Loading": [
- ""
- ],
- "Could not load backup providers": [
- ""
- ],
- "No backup providers configured": [
- ""
- ],
- "Add provider": [
- ""
- ],
- "Sync all backups": [
- ""
- ],
- "Sync now": [
- ""
- ],
- "Last synced": [
- ""
- ],
- "Not synced": [
- ""
- ],
- "Expires in": [
- ""
- ],
+ Balance: [""],
+ Backup: [""],
+ "QR Reader and Taler URI": [""],
+ Settings: [""],
+ Dev: [""],
+ "%1$s": [""],
+ "PENDING OPERATIONS": [""],
+ Loading: [""],
+ "Could not load backup providers": [""],
+ "No backup providers configured": [""],
+ "Add provider": [""],
+ "Sync all backups": [""],
+ "Sync now": [""],
+ "Last synced": [""],
+ "Not synced": [""],
+ "Expires in": [""],
"There was an error loading the provider detail for &quot; %1$s&quot;": [
- ""
- ],
- "There is not known provider with url &quot;%1$s&quot;.": [
- ""
- ],
- "See providers": [
- ""
- ],
- "Last backup": [
- ""
- ],
- "Back up": [
- ""
- ],
- "Provider fee": [
- ""
- ],
- "per year": [
- ""
- ],
- "Extend": [
- ""
- ],
- "terms has changed, extending the service will imply accepting the new terms of service": [
- ""
- ],
- "old": [
- ""
- ],
- "new": [
- ""
- ],
- "fee": [
- ""
- ],
- "storage": [
- ""
- ],
- "Remove provider": [
- ""
- ],
- "This provider has reported an error": [
- ""
- ],
- "There is conflict with another backup from %1$s": [
- ""
- ],
- "Backup is not readable": [
- ""
- ],
- "Unknown backup problem: %1$s": [
- ""
- ],
- "service paid": [
- ""
- ],
- "Backup valid until": [
- ""
- ],
- "Cancel": [
- ""
- ],
- "Open reserve page": [
- ""
- ],
- "Open pay page": [
- ""
- ],
- "Open refund page": [
- ""
- ],
- "Open tip page": [
- ""
- ],
- "Open withdraw page": [
- ""
- ],
- "Get digital cash": [
- ""
- ],
- "Could not load balance page": [
- ""
- ],
- "Add": [
- ""
- ],
- "Send %1$s": [
- ""
- ],
- "Taler Action": [
- ""
- ],
- "This page has pay action.": [
- ""
- ],
- "This page has a withdrawal action.": [
- ""
- ],
- "This page has a tip action.": [
- ""
- ],
- "This page has a notify reserve action.": [
- ""
- ],
- "Notify": [
- ""
- ],
- "This page has a refund action.": [
- ""
- ],
- "This page has a malformed taler uri.": [
- ""
- ],
- "Dismiss": [
- ""
- ],
- "this popup is being closed and you are being redirected to %1$s": [
- ""
- ],
- "Could not load purchase proposal details": [
- ""
- ],
- "Order Id": [
- ""
- ],
- "Summary": [
- ""
- ],
- "Amount": [
- ""
- ],
- "Merchant name": [
- ""
- ],
- "Merchant jurisdiction": [
- ""
- ],
- "Merchant address": [
- ""
- ],
- "Merchant logo": [
- ""
- ],
- "Merchant website": [
- ""
- ],
- "Merchant email": [
- ""
- ],
- "Merchant public key": [
- ""
- ],
- "Delivery date": [
- ""
- ],
- "Delivery location": [
- ""
- ],
- "Products": [
- ""
- ],
- "Created at": [
- ""
- ],
- "Refund deadline": [
- ""
- ],
- "Auto refund": [
- ""
- ],
- "Pay deadline": [
- ""
- ],
- "Fulfillment URL": [
- ""
- ],
- "Fulfillment message": [
- ""
- ],
- "Max deposit fee": [
- ""
- ],
- "Max fee": [
- ""
- ],
- "Minimum age": [
- ""
- ],
- "Wire fee amortization": [
- ""
- ],
- "Auditors": [
- ""
- ],
- "Exchanges": [
- ""
- ],
- "Bank account": [
- ""
- ],
- "Bitcoin address": [
- ""
- ],
- "IBAN": [
- ""
- ],
- "Could not load deposit status": [
- ""
- ],
- "Digital cash deposit": [
- ""
- ],
- "Cost": [
- ""
- ],
- "Fee": [
- ""
- ],
- "To be received": [
- ""
- ],
- "Send &nbsp; %1$s": [
- ""
- ],
- "Bitcoin transfer details": [
- ""
- ],
- "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.": [
- ""
- ],
- "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts": [
- ""
- ],
- "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC": [
- ""
- ],
- "Account": [
- ""
- ],
- "Bank host": [
- ""
- ],
- "Bank transfer details": [
- ""
- ],
- "Subject": [
- ""
- ],
- "Receiver name": [
- ""
- ],
- "Could not load the transaction information": [
- ""
- ],
- "There was an error trying to complete the transaction": [
- ""
- ],
- "This transaction is not completed": [
- ""
- ],
- "Send": [
- ""
- ],
- "Retry": [
- ""
- ],
- "Forget": [
- ""
- ],
- "Caution!": [
- ""
- ],
- "If you have already wired money to the exchange you will loose the chance to get the coins form it.": [
- ""
- ],
- "Confirm": [
- "Confirmer"
- ],
- "Withdrawal": [
- ""
- ],
- "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.": [
- ""
- ],
- "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.": [
- ""
- ],
- "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins": [
- ""
- ],
- "Details": [
- ""
- ],
- "Payment": [
- ""
- ],
- "Refunds": [
- ""
- ],
- "%1$s %2$s on %3$s": [
- ""
- ],
- "Merchant created a refund for this order but was not automatically picked up.": [
- ""
- ],
- "Offer": [
- ""
- ],
- "Accept": [
- ""
- ],
- "Merchant": [
- ""
- ],
- "Invoice ID": [
- ""
- ],
- "Deposit": [
- ""
- ],
- "Refresh": [
- ""
- ],
- "Tip": [
- ""
- ],
- "Refund": [
- ""
- ],
- "Original order ID": [
- ""
- ],
- "Purchase summary": [
- ""
- ],
- "copy": [
- ""
- ],
- "hide qr": [
- ""
- ],
- "show qr": [
- ""
- ],
- "Credit": [
- ""
- ],
- "Invoice": [
- ""
- ],
- "Exchange": [
- ""
- ],
- "URI": [
- ""
- ],
- "Debit": [
- ""
- ],
- "Transfer": [
- ""
- ],
- "Country": [
- ""
- ],
- "Address lines": [
- ""
- ],
- "Building number": [
- ""
- ],
- "Building name": [
- ""
- ],
- "Street": [
- ""
- ],
- "Post code": [
- ""
- ],
- "Town location": [
- ""
- ],
- "Town": [
- ""
- ],
- "District": [
- ""
- ],
- "Country subdivision": [
- ""
- ],
- "Date": [
- ""
- ],
- "Transaction fees": [
- ""
- ],
- "Total": [
- ""
- ],
- "Withdraw": [
- ""
- ],
- "Price": [
- ""
- ],
- "Refunded": [
- ""
- ],
- "Delivery": [
- ""
- ],
- "Total transfer": [
- ""
- ],
- "Could not load pay status": [
- ""
- ],
- "Digital cash payment": [
- ""
- ],
- "Purchase": [
- ""
- ],
- "Receipt": [
- ""
- ],
- "Valid until": [
- ""
- ],
- "List of products": [
- ""
- ],
- "free": [
- ""
- ],
- "Already paid, you are going to be redirected to %1$s": [
- ""
- ],
- "Already paid": [
- ""
- ],
- "Already claimed": [
- ""
- ],
- "Pay with a mobile phone": [
- ""
- ],
- "Hide QR": [
- ""
- ],
- "Scan the QR code or &nbsp; %1$s": [
- ""
- ],
- "Pay &nbsp; %1$s": [
- ""
- ],
+ "",
+ ],
+ "There is not known provider with url &quot;%1$s&quot;.": [""],
+ "See providers": [""],
+ "Last backup": [""],
+ "Back up": [""],
+ "Provider fee": [""],
+ "per year": [""],
+ Extend: [""],
+ "terms has changed, extending the service will imply accepting the new terms of service":
+ [""],
+ old: [""],
+ new: [""],
+ fee: [""],
+ storage: [""],
+ "Remove provider": [""],
+ "This provider has reported an error": [""],
+ "There is conflict with another backup from %1$s": [""],
+ "Backup is not readable": [""],
+ "Unknown backup problem: %1$s": [""],
+ "service paid": [""],
+ "Backup valid until": [""],
+ Cancel: [""],
+ "Open reserve page": [""],
+ "Open pay page": [""],
+ "Open refund page": [""],
+ "Open tip page": [""],
+ "Open withdraw page": [""],
+ "Get digital cash": [""],
+ "Could not load balance page": [""],
+ Add: [""],
+ "Send %1$s": [""],
+ "Taler Action": [""],
+ "This page has pay action.": [""],
+ "This page has a withdrawal action.": [""],
+ "This page has a tip action.": [""],
+ "This page has a notify reserve action.": [""],
+ Notify: [""],
+ "This page has a refund action.": [""],
+ "This page has a malformed taler uri.": [""],
+ Dismiss: [""],
+ "this popup is being closed and you are being redirected to %1$s": [""],
+ "Could not load purchase proposal details": [""],
+ "Order Id": [""],
+ Summary: [""],
+ Amount: [""],
+ "Merchant name": [""],
+ "Merchant jurisdiction": [""],
+ "Merchant address": [""],
+ "Merchant logo": [""],
+ "Merchant website": [""],
+ "Merchant email": [""],
+ "Merchant public key": [""],
+ "Delivery date": [""],
+ "Delivery location": [""],
+ Products: [""],
+ "Created at": [""],
+ "Refund deadline": [""],
+ "Auto refund": [""],
+ "Pay deadline": [""],
+ "Fulfillment URL": [""],
+ "Fulfillment message": [""],
+ "Max deposit fee": [""],
+ "Max fee": [""],
+ "Minimum age": [""],
+ "Wire fee amortization": [""],
+ Auditors: [""],
+ Exchanges: [""],
+ "Bank account": [""],
+ "Bitcoin address": [""],
+ IBAN: [""],
+ "Could not load deposit status": [""],
+ "Digital cash deposit": [""],
+ Cost: [""],
+ Fee: [""],
+ "To be received": [""],
+ "Send &nbsp; %1$s": [""],
+ "Bitcoin transfer details": [""],
+ "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.":
+ [""],
+ "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts":
+ [""],
+ "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC":
+ [""],
+ Account: [""],
+ "Bank host": [""],
+ "Bank transfer details": [""],
+ Subject: [""],
+ "Receiver name": [""],
+ "Could not load the transaction information": [""],
+ "There was an error trying to complete the transaction": [""],
+ "This transaction is not completed": [""],
+ Send: [""],
+ Retry: [""],
+ Forget: [""],
+ "Caution!": [""],
+ "If you have already wired money to the exchange you will loose the chance to get the coins form it.":
+ [""],
+ Confirm: ["Confirmer"],
+ Withdrawal: [""],
+ "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.":
+ [""],
+ "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.":
+ [""],
+ "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins":
+ [""],
+ Details: [""],
+ Payment: [""],
+ Refunds: [""],
+ "%1$s %2$s on %3$s": [""],
+ "Merchant created a refund for this order but was not automatically picked up.":
+ [""],
+ Offer: [""],
+ Accept: [""],
+ Merchant: [""],
+ "Invoice ID": [""],
+ Deposit: [""],
+ Refresh: [""],
+ Tip: [""],
+ Refund: [""],
+ "Original order ID": [""],
+ "Purchase summary": [""],
+ copy: [""],
+ "hide qr": [""],
+ "show qr": [""],
+ Credit: [""],
+ Invoice: [""],
+ Exchange: [""],
+ URI: [""],
+ Debit: [""],
+ Transfer: [""],
+ Country: [""],
+ "Address lines": [""],
+ "Building number": [""],
+ "Building name": [""],
+ Street: [""],
+ "Post code": [""],
+ "Town location": [""],
+ Town: [""],
+ District: [""],
+ "Country subdivision": [""],
+ Date: [""],
+ "Transaction fees": [""],
+ Total: [""],
+ Withdraw: [""],
+ Price: [""],
+ Refunded: [""],
+ Delivery: [""],
+ "Total transfer": [""],
+ "Could not load pay status": [""],
+ "Digital cash payment": [""],
+ Purchase: [""],
+ Receipt: [""],
+ "Valid until": [""],
+ "List of products": [""],
+ free: [""],
+ "Already paid, you are going to be redirected to %1$s": [""],
+ "Already paid": [""],
+ "Already claimed": [""],
+ "Pay with a mobile phone": [""],
+ "Hide QR": [""],
+ "Scan the QR code or &nbsp; %1$s": [""],
+ "Pay &nbsp; %1$s": [""],
"You have no balance for this currency. Withdraw digital cash first.": [
- ""
- ],
- "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.": [
- ""
- ],
- "Your current balance is not enough.": [
- ""
- ],
- "Merchant message": [
- ""
- ],
- "Could not load refund status": [
- ""
- ],
- "Digital cash refund": [
- ""
- ],
- "You&apos;ve ignored the tip.": [
- ""
- ],
- "The refund is in progress.": [
- ""
- ],
- "Total to refund": [
- ""
- ],
- "The merchant &quot;%1$s&quot; is offering you a refund.": [
- ""
- ],
- "Order amount": [
- ""
- ],
- "Already refunded": [
- ""
- ],
- "Refund offered": [
- ""
- ],
- "Accept &nbsp; %1$s": [
- ""
- ],
- "Could not load tip status": [
- ""
- ],
- "Digital cash tip": [
- ""
- ],
- "The merchant is offering you a tip": [
- ""
- ],
- "Merchant URL": [
- ""
- ],
- "Receive &nbsp; %1$s": [
- ""
- ],
- "Tip from %1$s accepted. Check your transactions list for more details.": [
- ""
- ],
- "Select one option": [
- ""
- ],
- "Could not load": [
- ""
- ],
- "Show terms of service": [
- ""
- ],
- "I accept the exchange terms of service": [
- ""
- ],
- "Exchange doesn&apos;t have terms of service": [
- ""
- ],
- "Review exchange terms of service": [
- ""
- ],
- "Review new version of terms of service": [
- ""
- ],
- "The exchange reply with a empty terms of service": [
- ""
- ],
- "Download Terms of Service": [
- ""
- ],
- "Hide terms of service": [
- ""
- ],
- "Could not load exchange fees": [
- ""
- ],
- "Close": [
- ""
- ],
- "could not find any exchange": [
- ""
- ],
- "could not find any exchange for the currency %1$s": [
- ""
- ],
- "Service fee description": [
- ""
- ],
- "Select %1$s exchange": [
- ""
- ],
- "Reset": [
- ""
- ],
- "Use this exchange": [
- ""
- ],
- "Doesn&apos;t have auditors": [
- ""
- ],
- "currency": [
- ""
- ],
- "Operations": [
- ""
- ],
- "Deposits": [
- ""
- ],
- "Denomination": [
- ""
- ],
- "Until": [
- ""
- ],
- "Withdrawals": [
- ""
- ],
- "Currency": [
- ""
- ],
- "Coin operations": [
- ""
- ],
- "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.": [
- ""
- ],
- "Transfer operations": [
- ""
- ],
- "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.": [
- ""
- ],
- "Operation": [
- ""
- ],
- "Wallet operations": [
- ""
- ],
- "Feature": [
- ""
- ],
- "Could not get the info from the URI": [
- ""
- ],
- "Could not get info of withdrawal": [
- ""
- ],
- "Digital cash withdrawal": [
- ""
- ],
- "Could not finish the withdrawal operation": [
- ""
- ],
- "Age restriction": [
- ""
- ],
- "Withdraw &nbsp; %1$s": [
- ""
- ],
- "Withdraw to a mobile phone": [
- ""
- ],
- "Digital invoice": [
- ""
- ],
- "Could not finish the invoice creation": [
- ""
- ],
- "Create": [
- ""
- ],
- "Could not finish the payment operation": [
- ""
- ],
- "Digital cash transfer": [
- ""
- ],
- "Could not finish the transfer creation": [
- ""
- ],
- "Could not finish the pickup operation": [
- ""
- ],
- "Manual Withdrawal for %1$s": [
- ""
- ],
- "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.": [
- ""
- ],
- "No exchange found for %1$s": [
- ""
- ],
- "Add Exchange": [
- ""
- ],
- "No exchange configured": [
- ""
- ],
- "Can&apos;t create the reserve": [
- ""
- ],
- "Start withdrawal": [
- ""
- ],
- "Could not load deposit balance": [
- ""
- ],
- "A currency or an amount should be indicated": [
- ""
- ],
- "There is no enough balance to make a deposit for currency %1$s": [
- ""
- ],
- "Send %1$s to your account": [
- ""
- ],
- "There is no account to make a deposit for currency %1$s": [
- ""
- ],
- "Add account": [
- ""
- ],
- "Select account": [
- ""
- ],
- "Add another account": [
- ""
- ],
- "Deposit fee": [
- ""
- ],
- "Total deposit": [
- ""
- ],
- "Deposit&nbsp;%1$s %2$s": [
- ""
- ],
- "Add bank account for %1$s": [
- ""
- ],
- "Enter the URL of an exchange you trust.": [
- ""
- ],
- "Unable add this account": [
- ""
- ],
- "Select account type": [
- ""
- ],
- "Review terms of service": [
- ""
- ],
- "Exchange URL": [
- ""
- ],
- "Add exchange": [
- ""
- ],
- "Add new exchange": [
- ""
- ],
- "Add exchange for %1$s": [
- ""
- ],
- "An exchange has been found! Review the information and click next": [
- ""
- ],
- "This exchange doesn&apos;t match the expected currency %1$s": [
- ""
- ],
- "Unable to verify this exchange": [
- ""
- ],
- "Unable to add this exchange": [
- ""
- ],
- "loading": [
- ""
- ],
- "Version": [
- ""
- ],
- "Next": [
- ""
- ],
- "Waiting for confirmation": [
- ""
- ],
- "PENDING": [
- ""
- ],
- "Could not load the list of transactions": [
- ""
- ],
- "Your transaction history is empty for this currency.": [
- ""
- ],
- "Add backup provider": [
- ""
- ],
- "Could not get provider information": [
- ""
- ],
- "Backup providers may charge for their service": [
- ""
- ],
- "URL": [
- ""
- ],
- "Name": [
- ""
- ],
- "Provider URL": [
- ""
- ],
- "Please review and accept this provider&apos;s terms of service": [
- ""
- ],
- "Pricing": [
- ""
- ],
- "free of charge": [
- ""
- ],
- "%1$s per year of service": [
- ""
- ],
- "Storage": [
- ""
- ],
- "%1$s megabytes of storage per year of service": [
- ""
- ],
- "Accept terms of service": [
- ""
- ],
- "Could not parse the payto URI": [
- ""
- ],
- "Please check the uri": [
- ""
- ],
- "Exchange is ready for withdrawal": [
- ""
- ],
- "To complete the process you need to wire%1$s %2$s to the exchange bank account": [
- ""
- ],
- "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905": [
- ""
- ],
- "Cancel withdrawal": [
- ""
- ],
- "Could not toggle auto-open": [
- ""
- ],
- "Could not toggle clipboard": [
- ""
- ],
- "Navigator": [
- ""
- ],
- "Automatically open wallet based on page content": [
- ""
- ],
- "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.": [
- ""
- ],
- "Automatically check clipboard for Taler URI": [
- ""
- ],
- "Trust": [
- ""
- ],
- "No exchange yet": [
- ""
- ],
- "Term of Service": [
- ""
- ],
- "ok": [
- ""
- ],
- "changed": [
- ""
- ],
- "not accepted": [
- ""
- ],
- "unknown (exchange status should be updated)": [
- ""
- ],
- "Add an exchange": [
- ""
- ],
- "Troubleshooting": [
- ""
- ],
- "Developer mode": [
- ""
- ],
- "More options and information useful for debugging": [
- ""
- ],
- "Display": [
- ""
- ],
- "Current Language": [
- ""
- ],
- "Wallet Core": [
- ""
- ],
- "Web Extension": [
- ""
- ],
- "Exchange compatibility": [
- ""
- ],
- "Merchant compatibility": [
- ""
- ],
- "Bank compatibility": [
- ""
- ],
- "Browser Extension Installed!": [
- ""
- ],
- "You can open the GNU Taler Wallet using the combination %1$s .": [
- ""
- ],
- "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:": [
- ""
- ],
- "Click the puzzle icon": [
- ""
- ],
- "Search for GNU Taler Wallet": [
- ""
- ],
- "Click the pin icon": [
- ""
- ],
- "Permissions": [
- ""
- ],
- "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)": [
- ""
- ],
- "Next Steps": [
- ""
- ],
- "Try the demo": [
- ""
- ],
- "Learn how to top up your wallet balance": [
- ""
- ],
- "Diagnostics timed out. Could not talk to the wallet backend.": [
- ""
- ],
- "Problems detected:": [
- ""
- ],
- "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).": [
- ""
- ],
- "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.": [
- ""
- ],
- "Running diagnostics": [
- ""
- ],
- "Debug tools": [
- ""
- ],
- "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?": [
- ""
- ],
- "reset": [
- ""
- ],
- "TESTING: This may delete all your coin, proceed with caution": [
- ""
- ],
- "run gc": [
- ""
- ],
- "import database": [
- ""
- ],
- "export database": [
- ""
- ],
- "Database exported at %1$s %2$s to download": [
- ""
- ],
- "Coins": [
- ""
- ],
- "Pending operations": [
- ""
- ],
- "usable coins": [
- ""
- ],
- "id": [
- ""
- ],
- "denom": [
- ""
- ],
- "value": [
- ""
- ],
- "status": [
- ""
- ],
- "from refresh?": [
- ""
- ],
- "age key count": [
- ""
- ],
- "spent coins": [
- ""
- ],
- "click to show": [
- ""
- ],
- "Scan a QR code or enter taler:// URI below": [
- ""
- ],
- "Open": [
- ""
- ],
- "URI is not valid. Taler URI should start with `taler://`": [
- ""
- ],
- "Try another": [
- ""
- ],
- "Could not load list of exchange": [
- ""
- ],
- "Choose a currency to proceed or add another exchange": [
- ""
- ],
- "Known currencies": [
- ""
- ],
- "Specify the amount and the origin": [
- ""
- ],
- "Change currency": [
- ""
- ],
- "Use previous origins:": [
- ""
- ],
- "Or specify the origin of the money": [
- ""
- ],
- "Specify the origin of the money": [
- ""
- ],
- "From my bank account": [
- ""
- ],
- "From another wallet": [
- ""
- ],
- "currency not provided": [
- ""
- ],
- "Specify the amount and the destination": [
- ""
- ],
- "Use previous destinations:": [
- ""
- ],
- "Or specify the destination of the money": [
- ""
- ],
- "Specify the destination of the money": [
- ""
- ],
- "To my bank account": [
- ""
- ],
- "To another wallet": [
- ""
- ],
- "Could not load backup recovery information": [
- ""
- ],
- "Digital wallet recovery": [
- ""
- ],
- "Import backup, show info": [
- ""
- ],
- "All done, your transaction is in progress": [
- ""
- ],
- "Edit": [
- ""
- ],
- "Could not load the list of known exchanges": [
- ""
- ]
- }
- }
+ "",
+ ],
+ "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.":
+ [""],
+ "Your current balance is not enough.": [""],
+ "Merchant message": [""],
+ "Could not load refund status": [""],
+ "Digital cash refund": [""],
+ "You&apos;ve ignored the tip.": [""],
+ "The refund is in progress.": [""],
+ "Total to refund": [""],
+ "The merchant &quot;%1$s&quot; is offering you a refund.": [""],
+ "Order amount": [""],
+ "Already refunded": [""],
+ "Refund offered": [""],
+ "Accept &nbsp; %1$s": [""],
+ "Could not load tip status": [""],
+ "Digital cash tip": [""],
+ "The merchant is offering you a tip": [""],
+ "Merchant URL": [""],
+ "Receive &nbsp; %1$s": [""],
+ "Tip from %1$s accepted. Check your transactions list for more details.":
+ [""],
+ "Select one option": [""],
+ "Could not load": [""],
+ "Show terms of service": [""],
+ "I accept the exchange terms of service": [""],
+ "Exchange doesn&apos;t have terms of service": [""],
+ "Review exchange terms of service": [""],
+ "Review new version of terms of service": [""],
+ "The exchange reply with a empty terms of service": [""],
+ "Download Terms of Service": [""],
+ "Hide terms of service": [""],
+ "Could not load exchange fees": [""],
+ Close: [""],
+ "could not find any exchange": [""],
+ "could not find any exchange for the currency %1$s": [""],
+ "Service fee description": [""],
+ "Select %1$s exchange": [""],
+ Reset: [""],
+ "Use this exchange": [""],
+ "Doesn&apos;t have auditors": [""],
+ currency: [""],
+ Operations: [""],
+ Deposits: [""],
+ Denomination: [""],
+ Until: [""],
+ Withdrawals: [""],
+ Currency: [""],
+ "Coin operations": [""],
+ "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.":
+ [""],
+ "Transfer operations": [""],
+ "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.":
+ [""],
+ Operation: [""],
+ "Wallet operations": [""],
+ Feature: [""],
+ "Could not get the info from the URI": [""],
+ "Could not get info of withdrawal": [""],
+ "Digital cash withdrawal": [""],
+ "Could not finish the withdrawal operation": [""],
+ "Age restriction": [""],
+ "Withdraw &nbsp; %1$s": [""],
+ "Withdraw to a mobile phone": [""],
+ "Digital invoice": [""],
+ "Could not finish the invoice creation": [""],
+ Create: [""],
+ "Could not finish the payment operation": [""],
+ "Digital cash transfer": [""],
+ "Could not finish the transfer creation": [""],
+ "Could not finish the pickup operation": [""],
+ "Manual Withdrawal for %1$s": [""],
+ "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.":
+ [""],
+ "No exchange found for %1$s": [""],
+ "Add Exchange": [""],
+ "No exchange configured": [""],
+ "Can&apos;t create the reserve": [""],
+ "Start withdrawal": [""],
+ "Could not load deposit balance": [""],
+ "A currency or an amount should be indicated": [""],
+ "There is no enough balance to make a deposit for currency %1$s": [""],
+ "Send %1$s to your account": [""],
+ "There is no account to make a deposit for currency %1$s": [""],
+ "Add account": [""],
+ "Select account": [""],
+ "Add another account": [""],
+ "Deposit fee": [""],
+ "Total deposit": [""],
+ "Deposit&nbsp;%1$s %2$s": [""],
+ "Add bank account for %1$s": [""],
+ "Enter the URL of an exchange you trust.": [""],
+ "Unable add this account": [""],
+ "Select account type": [""],
+ "Review terms of service": [""],
+ "Exchange URL": [""],
+ "Add exchange": [""],
+ "Add new exchange": [""],
+ "Add exchange for %1$s": [""],
+ "An exchange has been found! Review the information and click next": [""],
+ "This exchange doesn&apos;t match the expected currency %1$s": [""],
+ "Unable to verify this exchange": [""],
+ "Unable to add this exchange": [""],
+ loading: [""],
+ Version: [""],
+ Next: [""],
+ "Waiting for confirmation": [""],
+ PENDING: [""],
+ "Could not load the list of transactions": [""],
+ "Your transaction history is empty for this currency.": [""],
+ "Add backup provider": [""],
+ "Could not get provider information": [""],
+ "Backup providers may charge for their service": [""],
+ URL: [""],
+ Name: [""],
+ "Provider URL": [""],
+ "Please review and accept this provider&apos;s terms of service": [""],
+ Pricing: [""],
+ "free of charge": [""],
+ "%1$s per year of service": [""],
+ Storage: [""],
+ "%1$s megabytes of storage per year of service": [""],
+ "Accept terms of service": [""],
+ "Could not parse the payto URI": [""],
+ "Please check the uri": [""],
+ "Exchange is ready for withdrawal": [""],
+ "To complete the process you need to wire%1$s %2$s to the exchange bank account":
+ [""],
+ "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905":
+ [""],
+ "Cancel withdrawal": [""],
+ "Could not toggle auto-open": [""],
+ "Could not toggle clipboard": [""],
+ Navigator: [""],
+ "Automatically open wallet based on page content": [""],
+ "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.":
+ [""],
+ "Automatically check clipboard for Taler URI": [""],
+ Trust: [""],
+ "No exchange yet": [""],
+ "Term of Service": [""],
+ ok: [""],
+ changed: [""],
+ "not accepted": [""],
+ "unknown (exchange status should be updated)": [""],
+ "Add an exchange": [""],
+ Troubleshooting: [""],
+ "Developer mode": [""],
+ "More options and information useful for debugging": [""],
+ Display: [""],
+ "Current Language": [""],
+ "Wallet Core": [""],
+ "Web Extension": [""],
+ "Exchange compatibility": [""],
+ "Merchant compatibility": [""],
+ "Bank compatibility": [""],
+ "Browser Extension Installed!": [""],
+ "You can open the GNU Taler Wallet using the combination %1$s .": [""],
+ "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:":
+ [""],
+ "Click the puzzle icon": [""],
+ "Search for GNU Taler Wallet": [""],
+ "Click the pin icon": [""],
+ Permissions: [""],
+ "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)":
+ [""],
+ "Next Steps": [""],
+ "Try the demo": [""],
+ "Learn how to top up your wallet balance": [""],
+ "Diagnostics timed out. Could not talk to the wallet backend.": [""],
+ "Problems detected:": [""],
+ "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).":
+ [""],
+ "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.":
+ [""],
+ "Running diagnostics": [""],
+ "Debug tools": [""],
+ "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?":
+ [""],
+ reset: [""],
+ "TESTING: This may delete all your coin, proceed with caution": [""],
+ "run gc": [""],
+ "import database": [""],
+ "export database": [""],
+ "Database exported at %1$s %2$s to download": [""],
+ Coins: [""],
+ "Pending operations": [""],
+ "usable coins": [""],
+ id: [""],
+ denom: [""],
+ value: [""],
+ status: [""],
+ "from refresh?": [""],
+ "age key count": [""],
+ "spent coins": [""],
+ "click to show": [""],
+ "Scan a QR code or enter taler:// URI below": [""],
+ Open: [""],
+ "URI is not valid. Taler URI should start with `taler://`": [""],
+ "Try another": [""],
+ "Could not load list of exchange": [""],
+ "Choose a currency to proceed or add another exchange": [""],
+ "Known currencies": [""],
+ "Specify the amount and the origin": [""],
+ "Change currency": [""],
+ "Use previous origins:": [""],
+ "Or specify the origin of the money": [""],
+ "Specify the origin of the money": [""],
+ "From my bank account": [""],
+ "From another wallet": [""],
+ "currency not provided": [""],
+ "Specify the amount and the destination": [""],
+ "Use previous destinations:": [""],
+ "Or specify the destination of the money": [""],
+ "Specify the destination of the money": [""],
+ "To my bank account": [""],
+ "To another wallet": [""],
+ "Could not load backup recovery information": [""],
+ "Digital wallet recovery": [""],
+ "Import backup, show info": [""],
+ "All done, your transaction is in progress": [""],
+ Edit: [""],
+ "Could not load the list of known exchanges": [""],
+ },
+ },
};
-strings['it'] = {
- "domain": "messages",
- "locale_data": {
- "messages": {
+strings["it"] = {
+ domain: "messages",
+ locale_data: {
+ messages: {
"": {
- "domain": "messages",
- "plural_forms": "nplurals=2; plural=n != 1;",
- "lang": "it"
+ domain: "messages",
+ plural_forms: "nplurals=2; plural=n != 1;",
+ lang: "it",
},
- "Balance": [
- ""
- ],
- "Backup": [
- ""
- ],
- "QR Reader and Taler URI": [
- ""
- ],
- "Settings": [
- ""
- ],
- "Dev": [
- ""
- ],
- "%1$s": [
- ""
- ],
- "PENDING OPERATIONS": [
- ""
- ],
- "Loading": [
- ""
- ],
- "Could not load backup providers": [
- ""
- ],
- "No backup providers configured": [
- ""
- ],
- "Add provider": [
- ""
- ],
- "Sync all backups": [
- ""
- ],
- "Sync now": [
- ""
- ],
- "Last synced": [
- ""
- ],
- "Not synced": [
- ""
- ],
- "Expires in": [
- ""
- ],
+ Balance: [""],
+ Backup: [""],
+ "QR Reader and Taler URI": [""],
+ Settings: [""],
+ Dev: [""],
+ "%1$s": [""],
+ "PENDING OPERATIONS": [""],
+ Loading: [""],
+ "Could not load backup providers": [""],
+ "No backup providers configured": [""],
+ "Add provider": [""],
+ "Sync all backups": [""],
+ "Sync now": [""],
+ "Last synced": [""],
+ "Not synced": [""],
+ "Expires in": [""],
"There was an error loading the provider detail for &quot; %1$s&quot;": [
- ""
- ],
- "There is not known provider with url &quot;%1$s&quot;.": [
- ""
- ],
- "See providers": [
- ""
- ],
- "Last backup": [
- ""
- ],
- "Back up": [
- ""
- ],
- "Provider fee": [
- ""
- ],
- "per year": [
- ""
- ],
- "Extend": [
- ""
- ],
- "terms has changed, extending the service will imply accepting the new terms of service": [
- ""
- ],
- "old": [
- ""
- ],
- "new": [
- ""
- ],
- "fee": [
- ""
- ],
- "storage": [
- ""
- ],
- "Remove provider": [
- ""
- ],
- "This provider has reported an error": [
- ""
- ],
- "There is conflict with another backup from %1$s": [
- ""
- ],
- "Backup is not readable": [
- ""
- ],
- "Unknown backup problem: %1$s": [
- ""
- ],
- "service paid": [
- ""
- ],
- "Backup valid until": [
- ""
- ],
- "Cancel": [
- ""
- ],
- "Open reserve page": [
- ""
- ],
- "Open pay page": [
- ""
- ],
- "Open refund page": [
- ""
- ],
- "Open tip page": [
- ""
- ],
- "Open withdraw page": [
- ""
- ],
- "Get digital cash": [
- ""
- ],
- "Could not load balance page": [
- ""
- ],
- "Add": [
- ""
- ],
- "Send %1$s": [
- ""
- ],
- "Taler Action": [
- ""
- ],
- "This page has pay action.": [
- ""
- ],
- "This page has a withdrawal action.": [
- ""
- ],
- "This page has a tip action.": [
- ""
- ],
- "This page has a notify reserve action.": [
- ""
- ],
- "Notify": [
- ""
- ],
- "This page has a refund action.": [
- ""
- ],
- "This page has a malformed taler uri.": [
- ""
- ],
- "Dismiss": [
- ""
- ],
- "this popup is being closed and you are being redirected to %1$s": [
- ""
- ],
- "Could not load purchase proposal details": [
- ""
- ],
- "Order Id": [
- ""
- ],
- "Summary": [
- ""
- ],
- "Amount": [
- ""
- ],
- "Merchant name": [
- ""
- ],
- "Merchant jurisdiction": [
- ""
- ],
- "Merchant address": [
- ""
- ],
- "Merchant logo": [
- ""
- ],
- "Merchant website": [
- ""
- ],
- "Merchant email": [
- ""
- ],
- "Merchant public key": [
- ""
- ],
- "Delivery date": [
- ""
- ],
- "Delivery location": [
- ""
- ],
- "Products": [
- ""
- ],
- "Created at": [
- ""
- ],
- "Refund deadline": [
- ""
- ],
- "Auto refund": [
- ""
- ],
- "Pay deadline": [
- ""
- ],
- "Fulfillment URL": [
- ""
- ],
- "Fulfillment message": [
- ""
- ],
- "Max deposit fee": [
- ""
- ],
- "Max fee": [
- ""
- ],
- "Minimum age": [
- ""
- ],
- "Wire fee amortization": [
- ""
- ],
- "Auditors": [
- ""
- ],
- "Exchanges": [
- ""
- ],
- "Bank account": [
- ""
- ],
- "Bitcoin address": [
- ""
- ],
- "IBAN": [
- ""
- ],
- "Could not load deposit status": [
- ""
- ],
- "Digital cash deposit": [
- ""
- ],
- "Cost": [
- ""
- ],
- "Fee": [
- ""
- ],
- "To be received": [
- ""
- ],
- "Send &nbsp; %1$s": [
- ""
- ],
- "Bitcoin transfer details": [
- ""
- ],
- "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.": [
- ""
- ],
- "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts": [
- ""
- ],
- "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC": [
- ""
- ],
- "Account": [
- ""
- ],
- "Bank host": [
- ""
- ],
- "Bank transfer details": [
- ""
- ],
- "Subject": [
- ""
- ],
- "Receiver name": [
- ""
- ],
- "Could not load the transaction information": [
- ""
- ],
- "There was an error trying to complete the transaction": [
- ""
- ],
- "This transaction is not completed": [
- ""
- ],
- "Send": [
- ""
- ],
- "Retry": [
- ""
- ],
- "Forget": [
- ""
- ],
- "Caution!": [
- ""
- ],
- "If you have already wired money to the exchange you will loose the chance to get the coins form it.": [
- ""
- ],
- "Confirm": [
- "Confermare"
- ],
- "Withdrawal": [
- ""
- ],
- "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.": [
- ""
- ],
- "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.": [
- ""
- ],
- "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins": [
- ""
- ],
- "Details": [
- ""
- ],
- "Payment": [
- ""
- ],
- "Refunds": [
- ""
- ],
- "%1$s %2$s on %3$s": [
- ""
- ],
- "Merchant created a refund for this order but was not automatically picked up.": [
- ""
- ],
- "Offer": [
- ""
- ],
- "Accept": [
- ""
- ],
- "Merchant": [
- ""
- ],
- "Invoice ID": [
- ""
- ],
- "Deposit": [
- ""
- ],
- "Refresh": [
- ""
- ],
- "Tip": [
- ""
- ],
- "Refund": [
- ""
- ],
- "Original order ID": [
- ""
- ],
- "Purchase summary": [
- ""
- ],
- "copy": [
- ""
- ],
- "hide qr": [
- ""
- ],
- "show qr": [
- ""
- ],
- "Credit": [
- ""
- ],
- "Invoice": [
- ""
- ],
- "Exchange": [
- ""
- ],
- "URI": [
- ""
- ],
- "Debit": [
- ""
- ],
- "Transfer": [
- ""
- ],
- "Country": [
- ""
- ],
- "Address lines": [
- ""
- ],
- "Building number": [
- ""
- ],
- "Building name": [
- ""
- ],
- "Street": [
- ""
- ],
- "Post code": [
- ""
- ],
- "Town location": [
- ""
- ],
- "Town": [
- ""
- ],
- "District": [
- ""
- ],
- "Country subdivision": [
- ""
- ],
- "Date": [
- ""
- ],
- "Transaction fees": [
- ""
- ],
- "Total": [
- ""
- ],
- "Withdraw": [
- ""
- ],
- "Price": [
- ""
- ],
- "Refunded": [
- ""
- ],
- "Delivery": [
- ""
- ],
- "Total transfer": [
- ""
- ],
- "Could not load pay status": [
- ""
- ],
- "Digital cash payment": [
- ""
- ],
- "Purchase": [
- ""
- ],
- "Receipt": [
- ""
- ],
- "Valid until": [
- ""
- ],
- "List of products": [
- ""
- ],
- "free": [
- ""
- ],
- "Already paid, you are going to be redirected to %1$s": [
- ""
- ],
- "Already paid": [
- ""
- ],
- "Already claimed": [
- ""
- ],
- "Pay with a mobile phone": [
- ""
- ],
- "Hide QR": [
- ""
- ],
- "Scan the QR code or &nbsp; %1$s": [
- ""
- ],
- "Pay &nbsp; %1$s": [
- ""
- ],
+ "",
+ ],
+ "There is not known provider with url &quot;%1$s&quot;.": [""],
+ "See providers": [""],
+ "Last backup": [""],
+ "Back up": [""],
+ "Provider fee": [""],
+ "per year": [""],
+ Extend: [""],
+ "terms has changed, extending the service will imply accepting the new terms of service":
+ [""],
+ old: [""],
+ new: [""],
+ fee: [""],
+ storage: [""],
+ "Remove provider": [""],
+ "This provider has reported an error": [""],
+ "There is conflict with another backup from %1$s": [""],
+ "Backup is not readable": [""],
+ "Unknown backup problem: %1$s": [""],
+ "service paid": [""],
+ "Backup valid until": [""],
+ Cancel: [""],
+ "Open reserve page": [""],
+ "Open pay page": [""],
+ "Open refund page": [""],
+ "Open tip page": [""],
+ "Open withdraw page": [""],
+ "Get digital cash": [""],
+ "Could not load balance page": [""],
+ Add: [""],
+ "Send %1$s": [""],
+ "Taler Action": [""],
+ "This page has pay action.": [""],
+ "This page has a withdrawal action.": [""],
+ "This page has a tip action.": [""],
+ "This page has a notify reserve action.": [""],
+ Notify: [""],
+ "This page has a refund action.": [""],
+ "This page has a malformed taler uri.": [""],
+ Dismiss: [""],
+ "this popup is being closed and you are being redirected to %1$s": [""],
+ "Could not load purchase proposal details": [""],
+ "Order Id": [""],
+ Summary: [""],
+ Amount: [""],
+ "Merchant name": [""],
+ "Merchant jurisdiction": [""],
+ "Merchant address": [""],
+ "Merchant logo": [""],
+ "Merchant website": [""],
+ "Merchant email": [""],
+ "Merchant public key": [""],
+ "Delivery date": [""],
+ "Delivery location": [""],
+ Products: [""],
+ "Created at": [""],
+ "Refund deadline": [""],
+ "Auto refund": [""],
+ "Pay deadline": [""],
+ "Fulfillment URL": [""],
+ "Fulfillment message": [""],
+ "Max deposit fee": [""],
+ "Max fee": [""],
+ "Minimum age": [""],
+ "Wire fee amortization": [""],
+ Auditors: [""],
+ Exchanges: [""],
+ "Bank account": [""],
+ "Bitcoin address": [""],
+ IBAN: [""],
+ "Could not load deposit status": [""],
+ "Digital cash deposit": [""],
+ Cost: [""],
+ Fee: [""],
+ "To be received": [""],
+ "Send &nbsp; %1$s": [""],
+ "Bitcoin transfer details": [""],
+ "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.":
+ [""],
+ "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts":
+ [""],
+ "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC":
+ [""],
+ Account: [""],
+ "Bank host": [""],
+ "Bank transfer details": [""],
+ Subject: [""],
+ "Receiver name": [""],
+ "Could not load the transaction information": [""],
+ "There was an error trying to complete the transaction": [""],
+ "This transaction is not completed": [""],
+ Send: [""],
+ Retry: [""],
+ Forget: [""],
+ "Caution!": [""],
+ "If you have already wired money to the exchange you will loose the chance to get the coins form it.":
+ [""],
+ Confirm: ["Confermare"],
+ Withdrawal: [""],
+ "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.":
+ [""],
+ "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.":
+ [""],
+ "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins":
+ [""],
+ Details: [""],
+ Payment: [""],
+ Refunds: [""],
+ "%1$s %2$s on %3$s": [""],
+ "Merchant created a refund for this order but was not automatically picked up.":
+ [""],
+ Offer: [""],
+ Accept: [""],
+ Merchant: [""],
+ "Invoice ID": [""],
+ Deposit: [""],
+ Refresh: [""],
+ Tip: [""],
+ Refund: [""],
+ "Original order ID": [""],
+ "Purchase summary": [""],
+ copy: [""],
+ "hide qr": [""],
+ "show qr": [""],
+ Credit: [""],
+ Invoice: [""],
+ Exchange: [""],
+ URI: [""],
+ Debit: [""],
+ Transfer: [""],
+ Country: [""],
+ "Address lines": [""],
+ "Building number": [""],
+ "Building name": [""],
+ Street: [""],
+ "Post code": [""],
+ "Town location": [""],
+ Town: [""],
+ District: [""],
+ "Country subdivision": [""],
+ Date: [""],
+ "Transaction fees": [""],
+ Total: [""],
+ Withdraw: [""],
+ Price: [""],
+ Refunded: [""],
+ Delivery: [""],
+ "Total transfer": [""],
+ "Could not load pay status": [""],
+ "Digital cash payment": [""],
+ Purchase: [""],
+ Receipt: [""],
+ "Valid until": [""],
+ "List of products": [""],
+ free: [""],
+ "Already paid, you are going to be redirected to %1$s": [""],
+ "Already paid": [""],
+ "Already claimed": [""],
+ "Pay with a mobile phone": [""],
+ "Hide QR": [""],
+ "Scan the QR code or &nbsp; %1$s": [""],
+ "Pay &nbsp; %1$s": [""],
"You have no balance for this currency. Withdraw digital cash first.": [
- ""
- ],
- "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.": [
- ""
- ],
- "Your current balance is not enough.": [
- ""
- ],
- "Merchant message": [
- ""
- ],
- "Could not load refund status": [
- ""
- ],
- "Digital cash refund": [
- ""
- ],
- "You&apos;ve ignored the tip.": [
- ""
- ],
- "The refund is in progress.": [
- ""
- ],
- "Total to refund": [
- ""
- ],
- "The merchant &quot;%1$s&quot; is offering you a refund.": [
- ""
- ],
- "Order amount": [
- ""
- ],
- "Already refunded": [
- ""
- ],
- "Refund offered": [
- ""
- ],
- "Accept &nbsp; %1$s": [
- ""
- ],
- "Could not load tip status": [
- ""
- ],
- "Digital cash tip": [
- ""
- ],
- "The merchant is offering you a tip": [
- ""
- ],
- "Merchant URL": [
- ""
- ],
- "Receive &nbsp; %1$s": [
- ""
- ],
- "Tip from %1$s accepted. Check your transactions list for more details.": [
- ""
- ],
- "Select one option": [
- ""
- ],
- "Could not load": [
- ""
- ],
- "Show terms of service": [
- ""
- ],
- "I accept the exchange terms of service": [
- ""
- ],
- "Exchange doesn&apos;t have terms of service": [
- ""
- ],
- "Review exchange terms of service": [
- ""
- ],
- "Review new version of terms of service": [
- ""
- ],
- "The exchange reply with a empty terms of service": [
- ""
- ],
- "Download Terms of Service": [
- ""
- ],
- "Hide terms of service": [
- ""
- ],
- "Could not load exchange fees": [
- ""
- ],
- "Close": [
- ""
- ],
- "could not find any exchange": [
- ""
- ],
- "could not find any exchange for the currency %1$s": [
- ""
- ],
- "Service fee description": [
- ""
- ],
- "Select %1$s exchange": [
- ""
- ],
- "Reset": [
- ""
- ],
- "Use this exchange": [
- ""
- ],
- "Doesn&apos;t have auditors": [
- ""
- ],
- "currency": [
- ""
- ],
- "Operations": [
- ""
- ],
- "Deposits": [
- ""
- ],
- "Denomination": [
- ""
- ],
- "Until": [
- ""
- ],
- "Withdrawals": [
- ""
- ],
- "Currency": [
- ""
- ],
- "Coin operations": [
- ""
- ],
- "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.": [
- ""
- ],
- "Transfer operations": [
- ""
- ],
- "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.": [
- ""
- ],
- "Operation": [
- ""
- ],
- "Wallet operations": [
- ""
- ],
- "Feature": [
- ""
- ],
- "Could not get the info from the URI": [
- ""
- ],
- "Could not get info of withdrawal": [
- ""
- ],
- "Digital cash withdrawal": [
- ""
- ],
- "Could not finish the withdrawal operation": [
- ""
- ],
- "Age restriction": [
- ""
- ],
- "Withdraw &nbsp; %1$s": [
- ""
- ],
- "Withdraw to a mobile phone": [
- ""
- ],
- "Digital invoice": [
- ""
- ],
- "Could not finish the invoice creation": [
- ""
- ],
- "Create": [
- ""
- ],
- "Could not finish the payment operation": [
- ""
- ],
- "Digital cash transfer": [
- ""
- ],
- "Could not finish the transfer creation": [
- ""
- ],
- "Could not finish the pickup operation": [
- ""
- ],
- "Manual Withdrawal for %1$s": [
- ""
- ],
- "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.": [
- ""
- ],
- "No exchange found for %1$s": [
- ""
- ],
- "Add Exchange": [
- ""
- ],
- "No exchange configured": [
- ""
- ],
- "Can&apos;t create the reserve": [
- ""
- ],
- "Start withdrawal": [
- ""
- ],
- "Could not load deposit balance": [
- ""
- ],
- "A currency or an amount should be indicated": [
- ""
- ],
- "There is no enough balance to make a deposit for currency %1$s": [
- ""
- ],
- "Send %1$s to your account": [
- ""
- ],
- "There is no account to make a deposit for currency %1$s": [
- ""
- ],
- "Add account": [
- ""
- ],
- "Select account": [
- ""
- ],
- "Add another account": [
- ""
- ],
- "Deposit fee": [
- ""
- ],
- "Total deposit": [
- ""
- ],
- "Deposit&nbsp;%1$s %2$s": [
- ""
- ],
- "Add bank account for %1$s": [
- ""
- ],
- "Enter the URL of an exchange you trust.": [
- ""
- ],
- "Unable add this account": [
- ""
- ],
- "Select account type": [
- ""
- ],
- "Review terms of service": [
- ""
- ],
- "Exchange URL": [
- ""
- ],
- "Add exchange": [
- ""
- ],
- "Add new exchange": [
- ""
- ],
- "Add exchange for %1$s": [
- ""
- ],
- "An exchange has been found! Review the information and click next": [
- ""
- ],
- "This exchange doesn&apos;t match the expected currency %1$s": [
- ""
- ],
- "Unable to verify this exchange": [
- ""
- ],
- "Unable to add this exchange": [
- ""
- ],
- "loading": [
- ""
- ],
- "Version": [
- ""
- ],
- "Next": [
- ""
- ],
- "Waiting for confirmation": [
- ""
- ],
- "PENDING": [
- ""
- ],
- "Could not load the list of transactions": [
- ""
- ],
- "Your transaction history is empty for this currency.": [
- ""
- ],
- "Add backup provider": [
- ""
- ],
- "Could not get provider information": [
- ""
- ],
- "Backup providers may charge for their service": [
- ""
- ],
- "URL": [
- ""
- ],
- "Name": [
- ""
- ],
- "Provider URL": [
- ""
- ],
- "Please review and accept this provider&apos;s terms of service": [
- ""
- ],
- "Pricing": [
- ""
- ],
- "free of charge": [
- ""
- ],
- "%1$s per year of service": [
- ""
- ],
- "Storage": [
- ""
- ],
- "%1$s megabytes of storage per year of service": [
- ""
- ],
- "Accept terms of service": [
- ""
- ],
- "Could not parse the payto URI": [
- ""
- ],
- "Please check the uri": [
- ""
- ],
- "Exchange is ready for withdrawal": [
- ""
- ],
- "To complete the process you need to wire%1$s %2$s to the exchange bank account": [
- ""
- ],
- "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905": [
- ""
- ],
- "Cancel withdrawal": [
- ""
- ],
- "Could not toggle auto-open": [
- ""
- ],
- "Could not toggle clipboard": [
- ""
- ],
- "Navigator": [
- ""
- ],
- "Automatically open wallet based on page content": [
- ""
- ],
- "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.": [
- ""
- ],
- "Automatically check clipboard for Taler URI": [
- ""
- ],
- "Trust": [
- ""
- ],
- "No exchange yet": [
- ""
- ],
- "Term of Service": [
- ""
- ],
- "ok": [
- ""
- ],
- "changed": [
- ""
- ],
- "not accepted": [
- ""
- ],
- "unknown (exchange status should be updated)": [
- ""
- ],
- "Add an exchange": [
- ""
- ],
- "Troubleshooting": [
- ""
- ],
- "Developer mode": [
- ""
- ],
- "More options and information useful for debugging": [
- ""
- ],
- "Display": [
- ""
- ],
- "Current Language": [
- ""
- ],
- "Wallet Core": [
- ""
- ],
- "Web Extension": [
- ""
- ],
- "Exchange compatibility": [
- ""
- ],
- "Merchant compatibility": [
- ""
- ],
- "Bank compatibility": [
- ""
- ],
- "Browser Extension Installed!": [
- ""
- ],
- "You can open the GNU Taler Wallet using the combination %1$s .": [
- ""
- ],
- "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:": [
- ""
- ],
- "Click the puzzle icon": [
- ""
- ],
- "Search for GNU Taler Wallet": [
- ""
- ],
- "Click the pin icon": [
- ""
- ],
- "Permissions": [
- ""
- ],
- "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)": [
- ""
- ],
- "Next Steps": [
- ""
- ],
- "Try the demo": [
- ""
- ],
- "Learn how to top up your wallet balance": [
- ""
- ],
- "Diagnostics timed out. Could not talk to the wallet backend.": [
- ""
- ],
- "Problems detected:": [
- ""
- ],
- "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).": [
- ""
- ],
- "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.": [
- ""
- ],
- "Running diagnostics": [
- ""
- ],
- "Debug tools": [
- ""
- ],
- "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?": [
- ""
- ],
- "reset": [
- ""
- ],
- "TESTING: This may delete all your coin, proceed with caution": [
- ""
- ],
- "run gc": [
- ""
- ],
- "import database": [
- ""
- ],
- "export database": [
- ""
- ],
- "Database exported at %1$s %2$s to download": [
- ""
- ],
- "Coins": [
- ""
- ],
- "Pending operations": [
- ""
- ],
- "usable coins": [
- ""
- ],
- "id": [
- ""
- ],
- "denom": [
- ""
- ],
- "value": [
- ""
- ],
- "status": [
- ""
- ],
- "from refresh?": [
- ""
- ],
- "age key count": [
- ""
- ],
- "spent coins": [
- ""
- ],
- "click to show": [
- ""
- ],
- "Scan a QR code or enter taler:// URI below": [
- ""
- ],
- "Open": [
- ""
- ],
- "URI is not valid. Taler URI should start with `taler://`": [
- ""
- ],
- "Try another": [
- ""
- ],
- "Could not load list of exchange": [
- ""
- ],
- "Choose a currency to proceed or add another exchange": [
- ""
- ],
- "Known currencies": [
- ""
- ],
- "Specify the amount and the origin": [
- ""
- ],
- "Change currency": [
- ""
- ],
- "Use previous origins:": [
- ""
- ],
- "Or specify the origin of the money": [
- ""
- ],
- "Specify the origin of the money": [
- ""
- ],
- "From my bank account": [
- ""
- ],
- "From another wallet": [
- ""
- ],
- "currency not provided": [
- ""
- ],
- "Specify the amount and the destination": [
- ""
- ],
- "Use previous destinations:": [
- ""
- ],
- "Or specify the destination of the money": [
- ""
- ],
- "Specify the destination of the money": [
- ""
- ],
- "To my bank account": [
- ""
- ],
- "To another wallet": [
- ""
- ],
- "Could not load backup recovery information": [
- ""
- ],
- "Digital wallet recovery": [
- ""
- ],
- "Import backup, show info": [
- ""
- ],
- "All done, your transaction is in progress": [
- ""
- ],
- "Edit": [
- ""
- ],
- "Could not load the list of known exchanges": [
- ""
- ]
- }
- }
+ "",
+ ],
+ "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.":
+ [""],
+ "Your current balance is not enough.": [""],
+ "Merchant message": [""],
+ "Could not load refund status": [""],
+ "Digital cash refund": [""],
+ "You&apos;ve ignored the tip.": [""],
+ "The refund is in progress.": [""],
+ "Total to refund": [""],
+ "The merchant &quot;%1$s&quot; is offering you a refund.": [""],
+ "Order amount": [""],
+ "Already refunded": [""],
+ "Refund offered": [""],
+ "Accept &nbsp; %1$s": [""],
+ "Could not load tip status": [""],
+ "Digital cash tip": [""],
+ "The merchant is offering you a tip": [""],
+ "Merchant URL": [""],
+ "Receive &nbsp; %1$s": [""],
+ "Tip from %1$s accepted. Check your transactions list for more details.":
+ [""],
+ "Select one option": [""],
+ "Could not load": [""],
+ "Show terms of service": [""],
+ "I accept the exchange terms of service": [""],
+ "Exchange doesn&apos;t have terms of service": [""],
+ "Review exchange terms of service": [""],
+ "Review new version of terms of service": [""],
+ "The exchange reply with a empty terms of service": [""],
+ "Download Terms of Service": [""],
+ "Hide terms of service": [""],
+ "Could not load exchange fees": [""],
+ Close: [""],
+ "could not find any exchange": [""],
+ "could not find any exchange for the currency %1$s": [""],
+ "Service fee description": [""],
+ "Select %1$s exchange": [""],
+ Reset: [""],
+ "Use this exchange": [""],
+ "Doesn&apos;t have auditors": [""],
+ currency: [""],
+ Operations: [""],
+ Deposits: [""],
+ Denomination: [""],
+ Until: [""],
+ Withdrawals: [""],
+ Currency: [""],
+ "Coin operations": [""],
+ "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.":
+ [""],
+ "Transfer operations": [""],
+ "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.":
+ [""],
+ Operation: [""],
+ "Wallet operations": [""],
+ Feature: [""],
+ "Could not get the info from the URI": [""],
+ "Could not get info of withdrawal": [""],
+ "Digital cash withdrawal": [""],
+ "Could not finish the withdrawal operation": [""],
+ "Age restriction": [""],
+ "Withdraw &nbsp; %1$s": [""],
+ "Withdraw to a mobile phone": [""],
+ "Digital invoice": [""],
+ "Could not finish the invoice creation": [""],
+ Create: [""],
+ "Could not finish the payment operation": [""],
+ "Digital cash transfer": [""],
+ "Could not finish the transfer creation": [""],
+ "Could not finish the pickup operation": [""],
+ "Manual Withdrawal for %1$s": [""],
+ "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.":
+ [""],
+ "No exchange found for %1$s": [""],
+ "Add Exchange": [""],
+ "No exchange configured": [""],
+ "Can&apos;t create the reserve": [""],
+ "Start withdrawal": [""],
+ "Could not load deposit balance": [""],
+ "A currency or an amount should be indicated": [""],
+ "There is no enough balance to make a deposit for currency %1$s": [""],
+ "Send %1$s to your account": [""],
+ "There is no account to make a deposit for currency %1$s": [""],
+ "Add account": [""],
+ "Select account": [""],
+ "Add another account": [""],
+ "Deposit fee": [""],
+ "Total deposit": [""],
+ "Deposit&nbsp;%1$s %2$s": [""],
+ "Add bank account for %1$s": [""],
+ "Enter the URL of an exchange you trust.": [""],
+ "Unable add this account": [""],
+ "Select account type": [""],
+ "Review terms of service": [""],
+ "Exchange URL": [""],
+ "Add exchange": [""],
+ "Add new exchange": [""],
+ "Add exchange for %1$s": [""],
+ "An exchange has been found! Review the information and click next": [""],
+ "This exchange doesn&apos;t match the expected currency %1$s": [""],
+ "Unable to verify this exchange": [""],
+ "Unable to add this exchange": [""],
+ loading: [""],
+ Version: [""],
+ Next: [""],
+ "Waiting for confirmation": [""],
+ PENDING: [""],
+ "Could not load the list of transactions": [""],
+ "Your transaction history is empty for this currency.": [""],
+ "Add backup provider": [""],
+ "Could not get provider information": [""],
+ "Backup providers may charge for their service": [""],
+ URL: [""],
+ Name: [""],
+ "Provider URL": [""],
+ "Please review and accept this provider&apos;s terms of service": [""],
+ Pricing: [""],
+ "free of charge": [""],
+ "%1$s per year of service": [""],
+ Storage: [""],
+ "%1$s megabytes of storage per year of service": [""],
+ "Accept terms of service": [""],
+ "Could not parse the payto URI": [""],
+ "Please check the uri": [""],
+ "Exchange is ready for withdrawal": [""],
+ "To complete the process you need to wire%1$s %2$s to the exchange bank account":
+ [""],
+ "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905":
+ [""],
+ "Cancel withdrawal": [""],
+ "Could not toggle auto-open": [""],
+ "Could not toggle clipboard": [""],
+ Navigator: [""],
+ "Automatically open wallet based on page content": [""],
+ "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.":
+ [""],
+ "Automatically check clipboard for Taler URI": [""],
+ Trust: [""],
+ "No exchange yet": [""],
+ "Term of Service": [""],
+ ok: [""],
+ changed: [""],
+ "not accepted": [""],
+ "unknown (exchange status should be updated)": [""],
+ "Add an exchange": [""],
+ Troubleshooting: [""],
+ "Developer mode": [""],
+ "More options and information useful for debugging": [""],
+ Display: [""],
+ "Current Language": [""],
+ "Wallet Core": [""],
+ "Web Extension": [""],
+ "Exchange compatibility": [""],
+ "Merchant compatibility": [""],
+ "Bank compatibility": [""],
+ "Browser Extension Installed!": [""],
+ "You can open the GNU Taler Wallet using the combination %1$s .": [""],
+ "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:":
+ [""],
+ "Click the puzzle icon": [""],
+ "Search for GNU Taler Wallet": [""],
+ "Click the pin icon": [""],
+ Permissions: [""],
+ "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)":
+ [""],
+ "Next Steps": [""],
+ "Try the demo": [""],
+ "Learn how to top up your wallet balance": [""],
+ "Diagnostics timed out. Could not talk to the wallet backend.": [""],
+ "Problems detected:": [""],
+ "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).":
+ [""],
+ "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.":
+ [""],
+ "Running diagnostics": [""],
+ "Debug tools": [""],
+ "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?":
+ [""],
+ reset: [""],
+ "TESTING: This may delete all your coin, proceed with caution": [""],
+ "run gc": [""],
+ "import database": [""],
+ "export database": [""],
+ "Database exported at %1$s %2$s to download": [""],
+ Coins: [""],
+ "Pending operations": [""],
+ "usable coins": [""],
+ id: [""],
+ denom: [""],
+ value: [""],
+ status: [""],
+ "from refresh?": [""],
+ "age key count": [""],
+ "spent coins": [""],
+ "click to show": [""],
+ "Scan a QR code or enter taler:// URI below": [""],
+ Open: [""],
+ "URI is not valid. Taler URI should start with `taler://`": [""],
+ "Try another": [""],
+ "Could not load list of exchange": [""],
+ "Choose a currency to proceed or add another exchange": [""],
+ "Known currencies": [""],
+ "Specify the amount and the origin": [""],
+ "Change currency": [""],
+ "Use previous origins:": [""],
+ "Or specify the origin of the money": [""],
+ "Specify the origin of the money": [""],
+ "From my bank account": [""],
+ "From another wallet": [""],
+ "currency not provided": [""],
+ "Specify the amount and the destination": [""],
+ "Use previous destinations:": [""],
+ "Or specify the destination of the money": [""],
+ "Specify the destination of the money": [""],
+ "To my bank account": [""],
+ "To another wallet": [""],
+ "Could not load backup recovery information": [""],
+ "Digital wallet recovery": [""],
+ "Import backup, show info": [""],
+ "All done, your transaction is in progress": [""],
+ Edit: [""],
+ "Could not load the list of known exchanges": [""],
+ },
+ },
};
-strings['ja'] = {
- "domain": "messages",
- "locale_data": {
- "messages": {
+strings["ja"] = {
+ domain: "messages",
+ locale_data: {
+ messages: {
"": {
- "domain": "messages",
- "plural_forms": "nplurals=2; plural=n != 1;",
- "lang": "ja"
+ domain: "messages",
+ plural_forms: "nplurals=2; plural=n != 1;",
+ lang: "ja",
},
- "Balance": [
- "残高"
- ],
- "Backup": [
- "バックアップ"
- ],
- "QR Reader and Taler URI": [
- ""
- ],
- "Settings": [
- "設定"
- ],
- "Dev": [
- ""
- ],
- "%1$s": [
- ""
- ],
- "PENDING OPERATIONS": [
- ""
- ],
- "Loading": [
- ""
- ],
- "Could not load backup providers": [
- ""
- ],
- "No backup providers configured": [
- ""
- ],
- "Add provider": [
- ""
- ],
- "Sync all backups": [
- ""
- ],
- "Sync now": [
- ""
- ],
- "Last synced": [
- ""
- ],
- "Not synced": [
- ""
- ],
- "Expires in": [
- ""
- ],
+ Balance: ["残高"],
+ Backup: ["バックアップ"],
+ "QR Reader and Taler URI": [""],
+ Settings: ["設定"],
+ Dev: [""],
+ "%1$s": [""],
+ "PENDING OPERATIONS": [""],
+ Loading: [""],
+ "Could not load backup providers": [""],
+ "No backup providers configured": [""],
+ "Add provider": [""],
+ "Sync all backups": [""],
+ "Sync now": [""],
+ "Last synced": [""],
+ "Not synced": [""],
+ "Expires in": [""],
"There was an error loading the provider detail for &quot; %1$s&quot;": [
- ""
- ],
- "There is not known provider with url &quot;%1$s&quot;.": [
- ""
- ],
- "See providers": [
- ""
- ],
- "Last backup": [
- ""
- ],
- "Back up": [
- ""
- ],
- "Provider fee": [
- ""
- ],
- "per year": [
- ""
- ],
- "Extend": [
- ""
- ],
- "terms has changed, extending the service will imply accepting the new terms of service": [
- ""
- ],
- "old": [
- ""
- ],
- "new": [
- ""
- ],
- "fee": [
- ""
- ],
- "storage": [
- ""
- ],
- "Remove provider": [
- ""
- ],
- "This provider has reported an error": [
- ""
- ],
- "There is conflict with another backup from %1$s": [
- ""
- ],
- "Backup is not readable": [
- ""
- ],
- "Unknown backup problem: %1$s": [
- ""
- ],
- "service paid": [
- ""
- ],
- "Backup valid until": [
- ""
- ],
- "Cancel": [
- ""
- ],
- "Open reserve page": [
- ""
- ],
- "Open pay page": [
- ""
- ],
- "Open refund page": [
- ""
- ],
- "Open tip page": [
- ""
- ],
- "Open withdraw page": [
- ""
- ],
- "Get digital cash": [
- ""
- ],
- "Could not load balance page": [
- ""
- ],
- "Add": [
- ""
- ],
- "Send %1$s": [
- ""
- ],
- "Taler Action": [
- ""
- ],
- "This page has pay action.": [
- ""
- ],
- "This page has a withdrawal action.": [
- ""
- ],
- "This page has a tip action.": [
- ""
- ],
- "This page has a notify reserve action.": [
- ""
- ],
- "Notify": [
- ""
- ],
- "This page has a refund action.": [
- ""
- ],
- "This page has a malformed taler uri.": [
- ""
- ],
- "Dismiss": [
- ""
- ],
- "this popup is being closed and you are being redirected to %1$s": [
- ""
- ],
- "Could not load purchase proposal details": [
- ""
- ],
- "Order Id": [
- ""
- ],
- "Summary": [
- ""
- ],
- "Amount": [
- ""
- ],
- "Merchant name": [
- ""
- ],
- "Merchant jurisdiction": [
- ""
- ],
- "Merchant address": [
- ""
- ],
- "Merchant logo": [
- ""
- ],
- "Merchant website": [
- ""
- ],
- "Merchant email": [
- ""
- ],
- "Merchant public key": [
- ""
- ],
- "Delivery date": [
- ""
- ],
- "Delivery location": [
- ""
- ],
- "Products": [
- ""
- ],
- "Created at": [
- ""
- ],
- "Refund deadline": [
- ""
- ],
- "Auto refund": [
- ""
- ],
- "Pay deadline": [
- ""
- ],
- "Fulfillment URL": [
- ""
- ],
- "Fulfillment message": [
- ""
- ],
- "Max deposit fee": [
- ""
- ],
- "Max fee": [
- ""
- ],
- "Minimum age": [
- ""
- ],
- "Wire fee amortization": [
- ""
- ],
- "Auditors": [
- ""
- ],
- "Exchanges": [
- ""
- ],
- "Bank account": [
- ""
- ],
- "Bitcoin address": [
- ""
- ],
- "IBAN": [
- ""
- ],
- "Could not load deposit status": [
- ""
- ],
- "Digital cash deposit": [
- ""
- ],
- "Cost": [
- ""
- ],
- "Fee": [
- ""
- ],
- "To be received": [
- ""
- ],
- "Send &nbsp; %1$s": [
- ""
- ],
- "Bitcoin transfer details": [
- ""
- ],
- "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.": [
- ""
- ],
- "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts": [
- ""
- ],
- "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC": [
- ""
- ],
- "Account": [
- ""
- ],
- "Bank host": [
- ""
- ],
- "Bank transfer details": [
- ""
- ],
- "Subject": [
- ""
- ],
- "Receiver name": [
- ""
- ],
- "Could not load the transaction information": [
- ""
- ],
- "There was an error trying to complete the transaction": [
- ""
- ],
- "This transaction is not completed": [
- ""
- ],
- "Send": [
- ""
- ],
- "Retry": [
- ""
- ],
- "Forget": [
- ""
- ],
- "Caution!": [
- ""
- ],
- "If you have already wired money to the exchange you will loose the chance to get the coins form it.": [
- ""
- ],
- "Confirm": [
- ""
- ],
- "Withdrawal": [
- ""
- ],
- "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.": [
- ""
- ],
- "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.": [
- ""
- ],
- "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins": [
- ""
- ],
- "Details": [
- ""
- ],
- "Payment": [
- ""
- ],
- "Refunds": [
- ""
- ],
- "%1$s %2$s on %3$s": [
- ""
- ],
- "Merchant created a refund for this order but was not automatically picked up.": [
- ""
- ],
- "Offer": [
- ""
- ],
- "Accept": [
- ""
- ],
- "Merchant": [
- ""
- ],
- "Invoice ID": [
- ""
- ],
- "Deposit": [
- ""
- ],
- "Refresh": [
- ""
- ],
- "Tip": [
- ""
- ],
- "Refund": [
- ""
- ],
- "Original order ID": [
- ""
- ],
- "Purchase summary": [
- ""
- ],
- "copy": [
- ""
- ],
- "hide qr": [
- ""
- ],
- "show qr": [
- ""
- ],
- "Credit": [
- ""
- ],
- "Invoice": [
- ""
- ],
- "Exchange": [
- ""
- ],
- "URI": [
- ""
- ],
- "Debit": [
- ""
- ],
- "Transfer": [
- ""
- ],
- "Country": [
- ""
- ],
- "Address lines": [
- ""
- ],
- "Building number": [
- ""
- ],
- "Building name": [
- ""
- ],
- "Street": [
- ""
- ],
- "Post code": [
- ""
- ],
- "Town location": [
- ""
- ],
- "Town": [
- ""
- ],
- "District": [
- ""
- ],
- "Country subdivision": [
- ""
- ],
- "Date": [
- ""
- ],
- "Transaction fees": [
- ""
- ],
- "Total": [
- ""
- ],
- "Withdraw": [
- "撤退"
- ],
- "Price": [
- ""
- ],
- "Refunded": [
- ""
- ],
- "Delivery": [
- ""
- ],
- "Total transfer": [
- ""
- ],
- "Could not load pay status": [
- ""
- ],
- "Digital cash payment": [
- ""
- ],
- "Purchase": [
- ""
- ],
- "Receipt": [
- ""
- ],
- "Valid until": [
- ""
- ],
- "List of products": [
- ""
- ],
- "free": [
- ""
- ],
- "Already paid, you are going to be redirected to %1$s": [
- ""
- ],
- "Already paid": [
- ""
- ],
- "Already claimed": [
- ""
- ],
- "Pay with a mobile phone": [
- ""
- ],
- "Hide QR": [
- ""
- ],
- "Scan the QR code or &nbsp; %1$s": [
- ""
- ],
- "Pay &nbsp; %1$s": [
- ""
- ],
+ "",
+ ],
+ "There is not known provider with url &quot;%1$s&quot;.": [""],
+ "See providers": [""],
+ "Last backup": [""],
+ "Back up": [""],
+ "Provider fee": [""],
+ "per year": [""],
+ Extend: [""],
+ "terms has changed, extending the service will imply accepting the new terms of service":
+ [""],
+ old: [""],
+ new: [""],
+ fee: [""],
+ storage: [""],
+ "Remove provider": [""],
+ "This provider has reported an error": [""],
+ "There is conflict with another backup from %1$s": [""],
+ "Backup is not readable": [""],
+ "Unknown backup problem: %1$s": [""],
+ "service paid": [""],
+ "Backup valid until": [""],
+ Cancel: [""],
+ "Open reserve page": [""],
+ "Open pay page": [""],
+ "Open refund page": [""],
+ "Open tip page": [""],
+ "Open withdraw page": [""],
+ "Get digital cash": [""],
+ "Could not load balance page": [""],
+ Add: [""],
+ "Send %1$s": [""],
+ "Taler Action": [""],
+ "This page has pay action.": [""],
+ "This page has a withdrawal action.": [""],
+ "This page has a tip action.": [""],
+ "This page has a notify reserve action.": [""],
+ Notify: [""],
+ "This page has a refund action.": [""],
+ "This page has a malformed taler uri.": [""],
+ Dismiss: [""],
+ "this popup is being closed and you are being redirected to %1$s": [""],
+ "Could not load purchase proposal details": [""],
+ "Order Id": [""],
+ Summary: [""],
+ Amount: [""],
+ "Merchant name": [""],
+ "Merchant jurisdiction": [""],
+ "Merchant address": [""],
+ "Merchant logo": [""],
+ "Merchant website": [""],
+ "Merchant email": [""],
+ "Merchant public key": [""],
+ "Delivery date": [""],
+ "Delivery location": [""],
+ Products: [""],
+ "Created at": [""],
+ "Refund deadline": [""],
+ "Auto refund": [""],
+ "Pay deadline": [""],
+ "Fulfillment URL": [""],
+ "Fulfillment message": [""],
+ "Max deposit fee": [""],
+ "Max fee": [""],
+ "Minimum age": [""],
+ "Wire fee amortization": [""],
+ Auditors: [""],
+ Exchanges: [""],
+ "Bank account": [""],
+ "Bitcoin address": [""],
+ IBAN: [""],
+ "Could not load deposit status": [""],
+ "Digital cash deposit": [""],
+ Cost: [""],
+ Fee: [""],
+ "To be received": [""],
+ "Send &nbsp; %1$s": [""],
+ "Bitcoin transfer details": [""],
+ "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.":
+ [""],
+ "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts":
+ [""],
+ "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC":
+ [""],
+ Account: [""],
+ "Bank host": [""],
+ "Bank transfer details": [""],
+ Subject: [""],
+ "Receiver name": [""],
+ "Could not load the transaction information": [""],
+ "There was an error trying to complete the transaction": [""],
+ "This transaction is not completed": [""],
+ Send: [""],
+ Retry: [""],
+ Forget: [""],
+ "Caution!": [""],
+ "If you have already wired money to the exchange you will loose the chance to get the coins form it.":
+ [""],
+ Confirm: [""],
+ Withdrawal: [""],
+ "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.":
+ [""],
+ "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.":
+ [""],
+ "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins":
+ [""],
+ Details: [""],
+ Payment: [""],
+ Refunds: [""],
+ "%1$s %2$s on %3$s": [""],
+ "Merchant created a refund for this order but was not automatically picked up.":
+ [""],
+ Offer: [""],
+ Accept: [""],
+ Merchant: [""],
+ "Invoice ID": [""],
+ Deposit: [""],
+ Refresh: [""],
+ Tip: [""],
+ Refund: [""],
+ "Original order ID": [""],
+ "Purchase summary": [""],
+ copy: [""],
+ "hide qr": [""],
+ "show qr": [""],
+ Credit: [""],
+ Invoice: [""],
+ Exchange: [""],
+ URI: [""],
+ Debit: [""],
+ Transfer: [""],
+ Country: [""],
+ "Address lines": [""],
+ "Building number": [""],
+ "Building name": [""],
+ Street: [""],
+ "Post code": [""],
+ "Town location": [""],
+ Town: [""],
+ District: [""],
+ "Country subdivision": [""],
+ Date: [""],
+ "Transaction fees": [""],
+ Total: [""],
+ Withdraw: ["撤退"],
+ Price: [""],
+ Refunded: [""],
+ Delivery: [""],
+ "Total transfer": [""],
+ "Could not load pay status": [""],
+ "Digital cash payment": [""],
+ Purchase: [""],
+ Receipt: [""],
+ "Valid until": [""],
+ "List of products": [""],
+ free: [""],
+ "Already paid, you are going to be redirected to %1$s": [""],
+ "Already paid": [""],
+ "Already claimed": [""],
+ "Pay with a mobile phone": [""],
+ "Hide QR": [""],
+ "Scan the QR code or &nbsp; %1$s": [""],
+ "Pay &nbsp; %1$s": [""],
"You have no balance for this currency. Withdraw digital cash first.": [
- ""
- ],
- "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.": [
- ""
- ],
- "Your current balance is not enough.": [
- "表示するバランスがありません"
- ],
- "Merchant message": [
- ""
- ],
- "Could not load refund status": [
- ""
- ],
- "Digital cash refund": [
- ""
- ],
- "You&apos;ve ignored the tip.": [
- ""
- ],
- "The refund is in progress.": [
- ""
- ],
- "Total to refund": [
- ""
- ],
- "The merchant &quot;%1$s&quot; is offering you a refund.": [
- ""
- ],
- "Order amount": [
- ""
- ],
- "Already refunded": [
- ""
- ],
- "Refund offered": [
- ""
- ],
- "Accept &nbsp; %1$s": [
- ""
- ],
- "Could not load tip status": [
- ""
- ],
- "Digital cash tip": [
- ""
- ],
- "The merchant is offering you a tip": [
- ""
- ],
- "Merchant URL": [
- ""
- ],
- "Receive &nbsp; %1$s": [
- ""
- ],
- "Tip from %1$s accepted. Check your transactions list for more details.": [
- ""
- ],
- "Select one option": [
- ""
- ],
- "Could not load": [
- ""
- ],
- "Show terms of service": [
- ""
- ],
- "I accept the exchange terms of service": [
- ""
- ],
- "Exchange doesn&apos;t have terms of service": [
- ""
- ],
- "Review exchange terms of service": [
- ""
- ],
- "Review new version of terms of service": [
- ""
- ],
- "The exchange reply with a empty terms of service": [
- ""
- ],
- "Download Terms of Service": [
- ""
- ],
- "Hide terms of service": [
- ""
- ],
- "Could not load exchange fees": [
- ""
- ],
- "Close": [
- ""
- ],
- "could not find any exchange": [
- ""
- ],
- "could not find any exchange for the currency %1$s": [
- ""
- ],
- "Service fee description": [
- ""
- ],
- "Select %1$s exchange": [
- ""
- ],
- "Reset": [
- ""
- ],
- "Use this exchange": [
- ""
- ],
- "Doesn&apos;t have auditors": [
- ""
- ],
- "currency": [
- ""
- ],
- "Operations": [
- ""
- ],
- "Deposits": [
- ""
- ],
- "Denomination": [
- ""
- ],
- "Until": [
- ""
- ],
- "Withdrawals": [
- "撤退"
- ],
- "Currency": [
- ""
- ],
- "Coin operations": [
- ""
- ],
- "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.": [
- ""
- ],
- "Transfer operations": [
- ""
- ],
- "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.": [
- ""
- ],
- "Operation": [
- ""
- ],
- "Wallet operations": [
- ""
- ],
- "Feature": [
- ""
- ],
- "Could not get the info from the URI": [
- ""
- ],
- "Could not get info of withdrawal": [
- ""
- ],
- "Digital cash withdrawal": [
- ""
- ],
- "Could not finish the withdrawal operation": [
- ""
- ],
- "Age restriction": [
- ""
- ],
- "Withdraw &nbsp; %1$s": [
- ""
- ],
- "Withdraw to a mobile phone": [
- ""
- ],
- "Digital invoice": [
- ""
- ],
- "Could not finish the invoice creation": [
- ""
- ],
- "Create": [
- ""
- ],
- "Could not finish the payment operation": [
- ""
- ],
- "Digital cash transfer": [
- ""
- ],
- "Could not finish the transfer creation": [
- ""
- ],
- "Could not finish the pickup operation": [
- ""
- ],
- "Manual Withdrawal for %1$s": [
- ""
- ],
- "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.": [
- ""
- ],
- "No exchange found for %1$s": [
- ""
- ],
- "Add Exchange": [
- ""
- ],
- "No exchange configured": [
- ""
- ],
- "Can&apos;t create the reserve": [
- ""
- ],
- "Start withdrawal": [
- ""
- ],
- "Could not load deposit balance": [
- ""
- ],
- "A currency or an amount should be indicated": [
- ""
- ],
- "There is no enough balance to make a deposit for currency %1$s": [
- ""
- ],
- "Send %1$s to your account": [
- ""
- ],
- "There is no account to make a deposit for currency %1$s": [
- ""
- ],
- "Add account": [
- ""
- ],
- "Select account": [
- ""
- ],
- "Add another account": [
- ""
- ],
- "Deposit fee": [
- ""
- ],
- "Total deposit": [
- ""
- ],
- "Deposit&nbsp;%1$s %2$s": [
- ""
- ],
- "Add bank account for %1$s": [
- ""
- ],
- "Enter the URL of an exchange you trust.": [
- ""
- ],
- "Unable add this account": [
- ""
- ],
- "Select account type": [
- ""
- ],
- "Review terms of service": [
- ""
- ],
- "Exchange URL": [
- ""
- ],
- "Add exchange": [
- ""
- ],
- "Add new exchange": [
- ""
- ],
- "Add exchange for %1$s": [
- ""
- ],
- "An exchange has been found! Review the information and click next": [
- ""
- ],
- "This exchange doesn&apos;t match the expected currency %1$s": [
- ""
- ],
- "Unable to verify this exchange": [
- ""
- ],
- "Unable to add this exchange": [
- ""
- ],
- "loading": [
- ""
- ],
- "Version": [
- ""
- ],
- "Next": [
- ""
- ],
- "Waiting for confirmation": [
- ""
- ],
- "PENDING": [
- ""
- ],
- "Could not load the list of transactions": [
- ""
- ],
- "Your transaction history is empty for this currency.": [
- ""
- ],
- "Add backup provider": [
- ""
- ],
- "Could not get provider information": [
- ""
- ],
- "Backup providers may charge for their service": [
- ""
- ],
- "URL": [
- ""
- ],
- "Name": [
- ""
- ],
- "Provider URL": [
- ""
- ],
- "Please review and accept this provider&apos;s terms of service": [
- ""
- ],
- "Pricing": [
- ""
- ],
- "free of charge": [
- ""
- ],
- "%1$s per year of service": [
- ""
- ],
- "Storage": [
- ""
- ],
- "%1$s megabytes of storage per year of service": [
- ""
- ],
- "Accept terms of service": [
- ""
- ],
- "Could not parse the payto URI": [
- ""
- ],
- "Please check the uri": [
- ""
- ],
- "Exchange is ready for withdrawal": [
- ""
- ],
- "To complete the process you need to wire%1$s %2$s to the exchange bank account": [
- ""
- ],
- "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905": [
- ""
- ],
- "Cancel withdrawal": [
- ""
- ],
- "Could not toggle auto-open": [
- ""
- ],
- "Could not toggle clipboard": [
- ""
- ],
- "Navigator": [
- ""
- ],
- "Automatically open wallet based on page content": [
- ""
- ],
- "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.": [
- ""
- ],
- "Automatically check clipboard for Taler URI": [
- ""
- ],
- "Trust": [
- ""
- ],
- "No exchange yet": [
- ""
- ],
- "Term of Service": [
- ""
- ],
- "ok": [
- ""
- ],
- "changed": [
- ""
- ],
- "not accepted": [
- ""
- ],
- "unknown (exchange status should be updated)": [
- ""
- ],
- "Add an exchange": [
- ""
- ],
- "Troubleshooting": [
- ""
- ],
- "Developer mode": [
- ""
- ],
- "More options and information useful for debugging": [
- ""
- ],
- "Display": [
- ""
- ],
- "Current Language": [
- ""
- ],
- "Wallet Core": [
- ""
- ],
- "Web Extension": [
- ""
- ],
- "Exchange compatibility": [
- ""
- ],
- "Merchant compatibility": [
- ""
- ],
- "Bank compatibility": [
- ""
- ],
- "Browser Extension Installed!": [
- ""
- ],
- "You can open the GNU Taler Wallet using the combination %1$s .": [
- ""
- ],
- "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:": [
- ""
- ],
- "Click the puzzle icon": [
- ""
- ],
- "Search for GNU Taler Wallet": [
- ""
- ],
- "Click the pin icon": [
- ""
- ],
- "Permissions": [
- ""
- ],
- "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)": [
- ""
- ],
- "Next Steps": [
- ""
- ],
- "Try the demo": [
- ""
- ],
- "Learn how to top up your wallet balance": [
- ""
- ],
- "Diagnostics timed out. Could not talk to the wallet backend.": [
- ""
- ],
- "Problems detected:": [
- ""
- ],
- "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).": [
- ""
- ],
- "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.": [
- ""
- ],
- "Running diagnostics": [
- ""
- ],
- "Debug tools": [
- ""
- ],
- "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?": [
- ""
- ],
- "reset": [
- ""
- ],
- "TESTING: This may delete all your coin, proceed with caution": [
- ""
- ],
- "run gc": [
- ""
- ],
- "import database": [
- ""
- ],
- "export database": [
- ""
- ],
- "Database exported at %1$s %2$s to download": [
- ""
- ],
- "Coins": [
- ""
- ],
- "Pending operations": [
- ""
- ],
- "usable coins": [
- ""
- ],
- "id": [
- ""
- ],
- "denom": [
- ""
- ],
- "value": [
- ""
- ],
- "status": [
- ""
- ],
- "from refresh?": [
- ""
- ],
- "age key count": [
- ""
- ],
- "spent coins": [
- ""
- ],
- "click to show": [
- ""
- ],
- "Scan a QR code or enter taler:// URI below": [
- ""
- ],
- "Open": [
- ""
- ],
- "URI is not valid. Taler URI should start with `taler://`": [
- ""
- ],
- "Try another": [
- ""
- ],
- "Could not load list of exchange": [
- ""
- ],
- "Choose a currency to proceed or add another exchange": [
- ""
- ],
- "Known currencies": [
- ""
- ],
- "Specify the amount and the origin": [
- ""
- ],
- "Change currency": [
- ""
- ],
- "Use previous origins:": [
- ""
- ],
- "Or specify the origin of the money": [
- ""
- ],
- "Specify the origin of the money": [
- ""
- ],
- "From my bank account": [
- ""
- ],
- "From another wallet": [
- ""
- ],
- "currency not provided": [
- ""
- ],
- "Specify the amount and the destination": [
- ""
- ],
- "Use previous destinations:": [
- ""
- ],
- "Or specify the destination of the money": [
- ""
- ],
- "Specify the destination of the money": [
- ""
- ],
- "To my bank account": [
- ""
- ],
- "To another wallet": [
- ""
- ],
- "Could not load backup recovery information": [
- ""
- ],
- "Digital wallet recovery": [
- ""
- ],
- "Import backup, show info": [
- ""
- ],
- "All done, your transaction is in progress": [
- ""
- ],
- "Edit": [
- ""
- ],
- "Could not load the list of known exchanges": [
- ""
- ]
- }
- }
+ "",
+ ],
+ "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.":
+ [""],
+ "Your current balance is not enough.": ["表示するバランスがありません"],
+ "Merchant message": [""],
+ "Could not load refund status": [""],
+ "Digital cash refund": [""],
+ "You&apos;ve ignored the tip.": [""],
+ "The refund is in progress.": [""],
+ "Total to refund": [""],
+ "The merchant &quot;%1$s&quot; is offering you a refund.": [""],
+ "Order amount": [""],
+ "Already refunded": [""],
+ "Refund offered": [""],
+ "Accept &nbsp; %1$s": [""],
+ "Could not load tip status": [""],
+ "Digital cash tip": [""],
+ "The merchant is offering you a tip": [""],
+ "Merchant URL": [""],
+ "Receive &nbsp; %1$s": [""],
+ "Tip from %1$s accepted. Check your transactions list for more details.":
+ [""],
+ "Select one option": [""],
+ "Could not load": [""],
+ "Show terms of service": [""],
+ "I accept the exchange terms of service": [""],
+ "Exchange doesn&apos;t have terms of service": [""],
+ "Review exchange terms of service": [""],
+ "Review new version of terms of service": [""],
+ "The exchange reply with a empty terms of service": [""],
+ "Download Terms of Service": [""],
+ "Hide terms of service": [""],
+ "Could not load exchange fees": [""],
+ Close: [""],
+ "could not find any exchange": [""],
+ "could not find any exchange for the currency %1$s": [""],
+ "Service fee description": [""],
+ "Select %1$s exchange": [""],
+ Reset: [""],
+ "Use this exchange": [""],
+ "Doesn&apos;t have auditors": [""],
+ currency: [""],
+ Operations: [""],
+ Deposits: [""],
+ Denomination: [""],
+ Until: [""],
+ Withdrawals: ["撤退"],
+ Currency: [""],
+ "Coin operations": [""],
+ "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.":
+ [""],
+ "Transfer operations": [""],
+ "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.":
+ [""],
+ Operation: [""],
+ "Wallet operations": [""],
+ Feature: [""],
+ "Could not get the info from the URI": [""],
+ "Could not get info of withdrawal": [""],
+ "Digital cash withdrawal": [""],
+ "Could not finish the withdrawal operation": [""],
+ "Age restriction": [""],
+ "Withdraw &nbsp; %1$s": [""],
+ "Withdraw to a mobile phone": [""],
+ "Digital invoice": [""],
+ "Could not finish the invoice creation": [""],
+ Create: [""],
+ "Could not finish the payment operation": [""],
+ "Digital cash transfer": [""],
+ "Could not finish the transfer creation": [""],
+ "Could not finish the pickup operation": [""],
+ "Manual Withdrawal for %1$s": [""],
+ "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.":
+ [""],
+ "No exchange found for %1$s": [""],
+ "Add Exchange": [""],
+ "No exchange configured": [""],
+ "Can&apos;t create the reserve": [""],
+ "Start withdrawal": [""],
+ "Could not load deposit balance": [""],
+ "A currency or an amount should be indicated": [""],
+ "There is no enough balance to make a deposit for currency %1$s": [""],
+ "Send %1$s to your account": [""],
+ "There is no account to make a deposit for currency %1$s": [""],
+ "Add account": [""],
+ "Select account": [""],
+ "Add another account": [""],
+ "Deposit fee": [""],
+ "Total deposit": [""],
+ "Deposit&nbsp;%1$s %2$s": [""],
+ "Add bank account for %1$s": [""],
+ "Enter the URL of an exchange you trust.": [""],
+ "Unable add this account": [""],
+ "Select account type": [""],
+ "Review terms of service": [""],
+ "Exchange URL": [""],
+ "Add exchange": [""],
+ "Add new exchange": [""],
+ "Add exchange for %1$s": [""],
+ "An exchange has been found! Review the information and click next": [""],
+ "This exchange doesn&apos;t match the expected currency %1$s": [""],
+ "Unable to verify this exchange": [""],
+ "Unable to add this exchange": [""],
+ loading: [""],
+ Version: [""],
+ Next: [""],
+ "Waiting for confirmation": [""],
+ PENDING: [""],
+ "Could not load the list of transactions": [""],
+ "Your transaction history is empty for this currency.": [""],
+ "Add backup provider": [""],
+ "Could not get provider information": [""],
+ "Backup providers may charge for their service": [""],
+ URL: [""],
+ Name: [""],
+ "Provider URL": [""],
+ "Please review and accept this provider&apos;s terms of service": [""],
+ Pricing: [""],
+ "free of charge": [""],
+ "%1$s per year of service": [""],
+ Storage: [""],
+ "%1$s megabytes of storage per year of service": [""],
+ "Accept terms of service": [""],
+ "Could not parse the payto URI": [""],
+ "Please check the uri": [""],
+ "Exchange is ready for withdrawal": [""],
+ "To complete the process you need to wire%1$s %2$s to the exchange bank account":
+ [""],
+ "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905":
+ [""],
+ "Cancel withdrawal": [""],
+ "Could not toggle auto-open": [""],
+ "Could not toggle clipboard": [""],
+ Navigator: [""],
+ "Automatically open wallet based on page content": [""],
+ "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.":
+ [""],
+ "Automatically check clipboard for Taler URI": [""],
+ Trust: [""],
+ "No exchange yet": [""],
+ "Term of Service": [""],
+ ok: [""],
+ changed: [""],
+ "not accepted": [""],
+ "unknown (exchange status should be updated)": [""],
+ "Add an exchange": [""],
+ Troubleshooting: [""],
+ "Developer mode": [""],
+ "More options and information useful for debugging": [""],
+ Display: [""],
+ "Current Language": [""],
+ "Wallet Core": [""],
+ "Web Extension": [""],
+ "Exchange compatibility": [""],
+ "Merchant compatibility": [""],
+ "Bank compatibility": [""],
+ "Browser Extension Installed!": [""],
+ "You can open the GNU Taler Wallet using the combination %1$s .": [""],
+ "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:":
+ [""],
+ "Click the puzzle icon": [""],
+ "Search for GNU Taler Wallet": [""],
+ "Click the pin icon": [""],
+ Permissions: [""],
+ "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)":
+ [""],
+ "Next Steps": [""],
+ "Try the demo": [""],
+ "Learn how to top up your wallet balance": [""],
+ "Diagnostics timed out. Could not talk to the wallet backend.": [""],
+ "Problems detected:": [""],
+ "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).":
+ [""],
+ "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.":
+ [""],
+ "Running diagnostics": [""],
+ "Debug tools": [""],
+ "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?":
+ [""],
+ reset: [""],
+ "TESTING: This may delete all your coin, proceed with caution": [""],
+ "run gc": [""],
+ "import database": [""],
+ "export database": [""],
+ "Database exported at %1$s %2$s to download": [""],
+ Coins: [""],
+ "Pending operations": [""],
+ "usable coins": [""],
+ id: [""],
+ denom: [""],
+ value: [""],
+ status: [""],
+ "from refresh?": [""],
+ "age key count": [""],
+ "spent coins": [""],
+ "click to show": [""],
+ "Scan a QR code or enter taler:// URI below": [""],
+ Open: [""],
+ "URI is not valid. Taler URI should start with `taler://`": [""],
+ "Try another": [""],
+ "Could not load list of exchange": [""],
+ "Choose a currency to proceed or add another exchange": [""],
+ "Known currencies": [""],
+ "Specify the amount and the origin": [""],
+ "Change currency": [""],
+ "Use previous origins:": [""],
+ "Or specify the origin of the money": [""],
+ "Specify the origin of the money": [""],
+ "From my bank account": [""],
+ "From another wallet": [""],
+ "currency not provided": [""],
+ "Specify the amount and the destination": [""],
+ "Use previous destinations:": [""],
+ "Or specify the destination of the money": [""],
+ "Specify the destination of the money": [""],
+ "To my bank account": [""],
+ "To another wallet": [""],
+ "Could not load backup recovery information": [""],
+ "Digital wallet recovery": [""],
+ "Import backup, show info": [""],
+ "All done, your transaction is in progress": [""],
+ Edit: [""],
+ "Could not load the list of known exchanges": [""],
+ },
+ },
};
-strings['sv'] = {
- "domain": "messages",
- "locale_data": {
- "messages": {
+strings["sv"] = {
+ domain: "messages",
+ locale_data: {
+ messages: {
"": {
- "domain": "messages",
- "plural_forms": "nplurals=2; plural=n != 1;",
- "lang": "sv"
+ domain: "messages",
+ plural_forms: "nplurals=2; plural=n != 1;",
+ lang: "sv",
},
- "Balance": [
- "Balans"
- ],
- "Backup": [
- ""
- ],
- "QR Reader and Taler URI": [
- ""
- ],
- "Settings": [
- ""
- ],
- "Dev": [
- ""
- ],
- "%1$s": [
- ""
- ],
- "PENDING OPERATIONS": [
- ""
- ],
- "Loading": [
- ""
- ],
- "Could not load backup providers": [
- ""
- ],
- "No backup providers configured": [
- ""
- ],
- "Add provider": [
- ""
- ],
- "Sync all backups": [
- ""
- ],
- "Sync now": [
- ""
- ],
- "Last synced": [
- ""
- ],
- "Not synced": [
- ""
- ],
- "Expires in": [
- ""
- ],
+ Balance: ["Balans"],
+ Backup: [""],
+ "QR Reader and Taler URI": [""],
+ Settings: [""],
+ Dev: [""],
+ "%1$s": [""],
+ "PENDING OPERATIONS": [""],
+ Loading: [""],
+ "Could not load backup providers": [""],
+ "No backup providers configured": [""],
+ "Add provider": [""],
+ "Sync all backups": [""],
+ "Sync now": [""],
+ "Last synced": [""],
+ "Not synced": [""],
+ "Expires in": [""],
"There was an error loading the provider detail for &quot; %1$s&quot;": [
- ""
- ],
- "There is not known provider with url &quot;%1$s&quot;.": [
- ""
- ],
- "See providers": [
- ""
- ],
- "Last backup": [
- ""
- ],
- "Back up": [
- ""
- ],
- "Provider fee": [
- ""
- ],
- "per year": [
- ""
- ],
- "Extend": [
- ""
- ],
- "terms has changed, extending the service will imply accepting the new terms of service": [
- ""
- ],
- "old": [
- ""
- ],
- "new": [
- ""
- ],
- "fee": [
- ""
- ],
- "storage": [
- ""
- ],
- "Remove provider": [
- ""
- ],
- "This provider has reported an error": [
- ""
- ],
- "There is conflict with another backup from %1$s": [
- ""
- ],
- "Backup is not readable": [
- ""
- ],
- "Unknown backup problem: %1$s": [
- ""
- ],
- "service paid": [
- ""
- ],
- "Backup valid until": [
- ""
- ],
- "Cancel": [
- "Avbryt"
- ],
- "Open reserve page": [
- ""
- ],
- "Open pay page": [
- ""
- ],
- "Open refund page": [
- ""
- ],
- "Open tip page": [
- ""
- ],
- "Open withdraw page": [
- "Utbetalnings avgift"
- ],
- "Get digital cash": [
- "Utbetalnings avgifter:"
- ],
- "Could not load balance page": [
- ""
- ],
- "Add": [
- ""
- ],
- "Send %1$s": [
- "Välj %1$s"
- ],
- "Taler Action": [
- ""
- ],
- "This page has pay action.": [
- ""
- ],
- "This page has a withdrawal action.": [
- ""
- ],
- "This page has a tip action.": [
- ""
- ],
- "This page has a notify reserve action.": [
- ""
- ],
- "Notify": [
- ""
- ],
- "This page has a refund action.": [
- ""
- ],
- "This page has a malformed taler uri.": [
- ""
- ],
- "Dismiss": [
- ""
- ],
- "this popup is being closed and you are being redirected to %1$s": [
- ""
- ],
- "Could not load purchase proposal details": [
- ""
- ],
- "Order Id": [
- ""
- ],
- "Summary": [
- ""
- ],
- "Amount": [
- ""
- ],
- "Merchant name": [
- ""
- ],
- "Merchant jurisdiction": [
- ""
- ],
- "Merchant address": [
- ""
- ],
- "Merchant logo": [
- ""
- ],
- "Merchant website": [
- ""
- ],
- "Merchant email": [
- ""
- ],
- "Merchant public key": [
- ""
- ],
- "Delivery date": [
- ""
- ],
- "Delivery location": [
- ""
- ],
- "Products": [
- ""
- ],
- "Created at": [
- ""
- ],
- "Refund deadline": [
- ""
- ],
- "Auto refund": [
- ""
- ],
- "Pay deadline": [
- ""
- ],
- "Fulfillment URL": [
- ""
- ],
- "Fulfillment message": [
- ""
- ],
- "Max deposit fee": [
- "Depostitions avgift"
- ],
- "Max fee": [
- ""
- ],
- "Minimum age": [
- ""
- ],
- "Wire fee amortization": [
- ""
- ],
- "Auditors": [
- ""
- ],
- "Exchanges": [
- "Accepterade tjänsteleverantörer:"
- ],
- "Bank account": [
- "Övervisa till bank konto"
- ],
- "Bitcoin address": [
- ""
- ],
- "IBAN": [
- ""
- ],
- "Could not load deposit status": [
- ""
- ],
- "Digital cash deposit": [
- ""
- ],
- "Cost": [
- ""
- ],
- "Fee": [
- ""
- ],
- "To be received": [
- ""
- ],
- "Send &nbsp; %1$s": [
- ""
- ],
- "Bitcoin transfer details": [
- ""
- ],
- "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.": [
- ""
- ],
- "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts": [
- ""
- ],
- "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC": [
- ""
- ],
- "Account": [
- ""
- ],
- "Bank host": [
- ""
- ],
- "Bank transfer details": [
- ""
- ],
- "Subject": [
- ""
- ],
- "Receiver name": [
- ""
- ],
- "Could not load the transaction information": [
- ""
- ],
- "There was an error trying to complete the transaction": [
- ""
- ],
- "This transaction is not completed": [
- ""
- ],
- "Send": [
- ""
- ],
- "Retry": [
- ""
- ],
- "Forget": [
- ""
- ],
- "Caution!": [
- ""
- ],
- "If you have already wired money to the exchange you will loose the chance to get the coins form it.": [
- ""
- ],
- "Confirm": [
- "Bekräfta"
- ],
- "Withdrawal": [
- "Utbetalnings avgift"
- ],
- "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.": [
- ""
- ],
- "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.": [
- ""
- ],
- "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins": [
- ""
- ],
- "Details": [
- ""
- ],
- "Payment": [
- "Godkän betalning"
- ],
- "Refunds": [
- ""
- ],
- "%1$s %2$s on %3$s": [
- "Säljaren %1$sgav en återbetalning på %2$s.\n"
- ],
- "Merchant created a refund for this order but was not automatically picked up.": [
- ""
- ],
- "Offer": [
- ""
- ],
- "Accept": [
- ""
- ],
- "Merchant": [
- ""
- ],
- "Invoice ID": [
- ""
- ],
- "Deposit": [
- "Depostitions avgift"
- ],
- "Refresh": [
- "Återhämtnings avgift"
- ],
- "Tip": [
- ""
- ],
- "Refund": [
- ""
- ],
- "Original order ID": [
- ""
- ],
- "Purchase summary": [
- ""
- ],
- "copy": [
- ""
- ],
- "hide qr": [
- ""
- ],
- "show qr": [
- ""
- ],
- "Credit": [
- ""
- ],
- "Invoice": [
- ""
- ],
- "Exchange": [
- ""
- ],
- "URI": [
- ""
- ],
- "Debit": [
- ""
- ],
- "Transfer": [
- ""
- ],
- "Country": [
- ""
- ],
- "Address lines": [
- ""
- ],
- "Building number": [
- ""
- ],
- "Building name": [
- ""
- ],
- "Street": [
- ""
- ],
- "Post code": [
- ""
- ],
- "Town location": [
- ""
- ],
- "Town": [
- ""
- ],
- "District": [
- ""
- ],
- "Country subdivision": [
- ""
- ],
- "Date": [
- ""
- ],
- "Transaction fees": [
- ""
- ],
- "Total": [
- ""
- ],
- "Withdraw": [
- "Utbetalnings avgift"
- ],
- "Price": [
- ""
- ],
- "Refunded": [
- ""
- ],
- "Delivery": [
- ""
- ],
- "Total transfer": [
- "Utbetalnings avgift"
- ],
- "Could not load pay status": [
- ""
- ],
- "Digital cash payment": [
- ""
- ],
- "Purchase": [
- ""
- ],
- "Receipt": [
- ""
- ],
- "Valid until": [
- ""
- ],
- "List of products": [
- ""
- ],
- "free": [
- ""
- ],
- "Already paid, you are going to be redirected to %1$s": [
- ""
- ],
- "Already paid": [
- ""
- ],
- "Already claimed": [
- ""
- ],
- "Pay with a mobile phone": [
- ""
- ],
- "Hide QR": [
- ""
- ],
- "Scan the QR code or &nbsp; %1$s": [
- ""
- ],
- "Pay &nbsp; %1$s": [
- ""
- ],
+ "",
+ ],
+ "There is not known provider with url &quot;%1$s&quot;.": [""],
+ "See providers": [""],
+ "Last backup": [""],
+ "Back up": [""],
+ "Provider fee": [""],
+ "per year": [""],
+ Extend: [""],
+ "terms has changed, extending the service will imply accepting the new terms of service":
+ [""],
+ old: [""],
+ new: [""],
+ fee: [""],
+ storage: [""],
+ "Remove provider": [""],
+ "This provider has reported an error": [""],
+ "There is conflict with another backup from %1$s": [""],
+ "Backup is not readable": [""],
+ "Unknown backup problem: %1$s": [""],
+ "service paid": [""],
+ "Backup valid until": [""],
+ Cancel: ["Avbryt"],
+ "Open reserve page": [""],
+ "Open pay page": [""],
+ "Open refund page": [""],
+ "Open tip page": [""],
+ "Open withdraw page": ["Utbetalnings avgift"],
+ "Get digital cash": ["Utbetalnings avgifter:"],
+ "Could not load balance page": [""],
+ Add: [""],
+ "Send %1$s": ["Välj %1$s"],
+ "Taler Action": [""],
+ "This page has pay action.": [""],
+ "This page has a withdrawal action.": [""],
+ "This page has a tip action.": [""],
+ "This page has a notify reserve action.": [""],
+ Notify: [""],
+ "This page has a refund action.": [""],
+ "This page has a malformed taler uri.": [""],
+ Dismiss: [""],
+ "this popup is being closed and you are being redirected to %1$s": [""],
+ "Could not load purchase proposal details": [""],
+ "Order Id": [""],
+ Summary: [""],
+ Amount: [""],
+ "Merchant name": [""],
+ "Merchant jurisdiction": [""],
+ "Merchant address": [""],
+ "Merchant logo": [""],
+ "Merchant website": [""],
+ "Merchant email": [""],
+ "Merchant public key": [""],
+ "Delivery date": [""],
+ "Delivery location": [""],
+ Products: [""],
+ "Created at": [""],
+ "Refund deadline": [""],
+ "Auto refund": [""],
+ "Pay deadline": [""],
+ "Fulfillment URL": [""],
+ "Fulfillment message": [""],
+ "Max deposit fee": ["Depostitions avgift"],
+ "Max fee": [""],
+ "Minimum age": [""],
+ "Wire fee amortization": [""],
+ Auditors: [""],
+ Exchanges: ["Accepterade tjänsteleverantörer:"],
+ "Bank account": ["Övervisa till bank konto"],
+ "Bitcoin address": [""],
+ IBAN: [""],
+ "Could not load deposit status": [""],
+ "Digital cash deposit": [""],
+ Cost: [""],
+ Fee: [""],
+ "To be received": [""],
+ "Send &nbsp; %1$s": [""],
+ "Bitcoin transfer details": [""],
+ "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.":
+ [""],
+ "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts":
+ [""],
+ "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC":
+ [""],
+ Account: [""],
+ "Bank host": [""],
+ "Bank transfer details": [""],
+ Subject: [""],
+ "Receiver name": [""],
+ "Could not load the transaction information": [""],
+ "There was an error trying to complete the transaction": [""],
+ "This transaction is not completed": [""],
+ Send: [""],
+ Retry: [""],
+ Forget: [""],
+ "Caution!": [""],
+ "If you have already wired money to the exchange you will loose the chance to get the coins form it.":
+ [""],
+ Confirm: ["Bekräfta"],
+ Withdrawal: ["Utbetalnings avgift"],
+ "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.":
+ [""],
+ "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.":
+ [""],
+ "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins":
+ [""],
+ Details: [""],
+ Payment: ["Godkän betalning"],
+ Refunds: [""],
+ "%1$s %2$s on %3$s": ["Säljaren %1$sgav en återbetalning på %2$s.\n"],
+ "Merchant created a refund for this order but was not automatically picked up.":
+ [""],
+ Offer: [""],
+ Accept: [""],
+ Merchant: [""],
+ "Invoice ID": [""],
+ Deposit: ["Depostitions avgift"],
+ Refresh: ["Återhämtnings avgift"],
+ Tip: [""],
+ Refund: [""],
+ "Original order ID": [""],
+ "Purchase summary": [""],
+ copy: [""],
+ "hide qr": [""],
+ "show qr": [""],
+ Credit: [""],
+ Invoice: [""],
+ Exchange: [""],
+ URI: [""],
+ Debit: [""],
+ Transfer: [""],
+ Country: [""],
+ "Address lines": [""],
+ "Building number": [""],
+ "Building name": [""],
+ Street: [""],
+ "Post code": [""],
+ "Town location": [""],
+ Town: [""],
+ District: [""],
+ "Country subdivision": [""],
+ Date: [""],
+ "Transaction fees": [""],
+ Total: [""],
+ Withdraw: ["Utbetalnings avgift"],
+ Price: [""],
+ Refunded: [""],
+ Delivery: [""],
+ "Total transfer": ["Utbetalnings avgift"],
+ "Could not load pay status": [""],
+ "Digital cash payment": [""],
+ Purchase: [""],
+ Receipt: [""],
+ "Valid until": [""],
+ "List of products": [""],
+ free: [""],
+ "Already paid, you are going to be redirected to %1$s": [""],
+ "Already paid": [""],
+ "Already claimed": [""],
+ "Pay with a mobile phone": [""],
+ "Hide QR": [""],
+ "Scan the QR code or &nbsp; %1$s": [""],
+ "Pay &nbsp; %1$s": [""],
"You have no balance for this currency. Withdraw digital cash first.": [
- ""
- ],
- "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.": [
- ""
+ "",
],
+ "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.":
+ [""],
"Your current balance is not enough.": [
- "Du har ingen balans att visa. Behöver du\n %1$s att börja?\n"
- ],
- "Merchant message": [
- ""
- ],
- "Could not load refund status": [
- ""
- ],
- "Digital cash refund": [
- ""
- ],
- "You&apos;ve ignored the tip.": [
- ""
- ],
- "The refund is in progress.": [
- ""
- ],
- "Total to refund": [
- "Utbetalnings avgift"
- ],
+ "Du har ingen balans att visa. Behöver du\n %1$s att börja?\n",
+ ],
+ "Merchant message": [""],
+ "Could not load refund status": [""],
+ "Digital cash refund": [""],
+ "You&apos;ve ignored the tip.": [""],
+ "The refund is in progress.": [""],
+ "Total to refund": ["Utbetalnings avgift"],
"The merchant &quot;%1$s&quot; is offering you a refund.": [
- "Säljaren %1$s erbjuder följande:"
- ],
- "Order amount": [
- "Återhämtnings avgift"
- ],
- "Already refunded": [
- ""
- ],
- "Refund offered": [
- ""
- ],
- "Accept &nbsp; %1$s": [
- ""
- ],
- "Could not load tip status": [
- ""
- ],
- "Digital cash tip": [
- ""
- ],
+ "Säljaren %1$s erbjuder följande:",
+ ],
+ "Order amount": ["Återhämtnings avgift"],
+ "Already refunded": [""],
+ "Refund offered": [""],
+ "Accept &nbsp; %1$s": [""],
+ "Could not load tip status": [""],
+ "Digital cash tip": [""],
"The merchant is offering you a tip": [
- "Säljaren %1$s erbjuder följande:"
- ],
- "Merchant URL": [
- ""
- ],
- "Receive &nbsp; %1$s": [
- ""
- ],
- "Tip from %1$s accepted. Check your transactions list for more details.": [
- ""
- ],
- "Select one option": [
- ""
- ],
- "Could not load": [
- ""
- ],
- "Show terms of service": [
- ""
- ],
- "I accept the exchange terms of service": [
- ""
- ],
- "Exchange doesn&apos;t have terms of service": [
- ""
- ],
- "Review exchange terms of service": [
- ""
- ],
- "Review new version of terms of service": [
- ""
- ],
- "The exchange reply with a empty terms of service": [
- ""
- ],
- "Download Terms of Service": [
- ""
- ],
- "Hide terms of service": [
- ""
- ],
- "Could not load exchange fees": [
- ""
- ],
- "Close": [
- ""
- ],
- "could not find any exchange": [
- "Accepterade tjänsteleverantörer:"
- ],
- "could not find any exchange for the currency %1$s": [
- ""
- ],
- "Service fee description": [
- ""
- ],
- "Select %1$s exchange": [
- "Välj %1$s"
- ],
- "Reset": [
- ""
- ],
- "Use this exchange": [
- "Accepterade tjänsteleverantörer:"
- ],
- "Doesn&apos;t have auditors": [
- ""
- ],
- "currency": [
- ""
- ],
- "Operations": [
- ""
- ],
- "Deposits": [
- "Depostitions avgift"
- ],
- "Denomination": [
- ""
- ],
- "Until": [
- ""
- ],
- "Withdrawals": [
- "Utbetalnings avgift"
- ],
- "Currency": [
- ""
- ],
- "Coin operations": [
- ""
- ],
- "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.": [
- ""
- ],
- "Transfer operations": [
- ""
- ],
- "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.": [
- ""
- ],
- "Operation": [
- ""
- ],
- "Wallet operations": [
- ""
- ],
- "Feature": [
- ""
- ],
- "Could not get the info from the URI": [
- ""
- ],
- "Could not get info of withdrawal": [
- ""
- ],
- "Digital cash withdrawal": [
- ""
- ],
- "Could not finish the withdrawal operation": [
- ""
- ],
- "Age restriction": [
- ""
- ],
- "Withdraw &nbsp; %1$s": [
- ""
- ],
- "Withdraw to a mobile phone": [
- ""
- ],
- "Digital invoice": [
- ""
- ],
- "Could not finish the invoice creation": [
- ""
- ],
- "Create": [
- ""
- ],
- "Could not finish the payment operation": [
- ""
- ],
- "Digital cash transfer": [
- ""
- ],
- "Could not finish the transfer creation": [
- ""
- ],
- "Could not finish the pickup operation": [
- ""
- ],
- "Manual Withdrawal for %1$s": [
- "Utbetalnings avgift"
- ],
- "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.": [
- ""
- ],
- "No exchange found for %1$s": [
- "Accepterade tjänsteleverantörer:"
- ],
- "Add Exchange": [
- "Accepterade tjänsteleverantörer:"
- ],
- "No exchange configured": [
- ""
- ],
- "Can&apos;t create the reserve": [
- ""
- ],
- "Start withdrawal": [
- ""
- ],
- "Could not load deposit balance": [
- ""
- ],
- "A currency or an amount should be indicated": [
- ""
- ],
- "There is no enough balance to make a deposit for currency %1$s": [
- ""
- ],
- "Send %1$s to your account": [
- ""
- ],
- "There is no account to make a deposit for currency %1$s": [
- ""
- ],
- "Add account": [
- "Övervisa till bank konto"
- ],
- "Select account": [
- "Övervisa till bank konto"
- ],
- "Add another account": [
- "Övervisa till bank konto"
- ],
- "Deposit fee": [
- "Depostitions avgift"
- ],
- "Total deposit": [
- ""
- ],
- "Deposit&nbsp;%1$s %2$s": [
- "Depostitions avgift"
- ],
- "Add bank account for %1$s": [
- "Accepterade tjänsteleverantörer:"
- ],
- "Enter the URL of an exchange you trust.": [
- ""
- ],
- "Unable add this account": [
- ""
- ],
- "Select account type": [
- ""
- ],
- "Review terms of service": [
- ""
- ],
- "Exchange URL": [
- ""
- ],
- "Add exchange": [
- "Accepterade tjänsteleverantörer:"
- ],
- "Add new exchange": [
- "Accepterade tjänsteleverantörer:"
- ],
- "Add exchange for %1$s": [
- "Accepterade tjänsteleverantörer:"
- ],
- "An exchange has been found! Review the information and click next": [
- ""
- ],
- "This exchange doesn&apos;t match the expected currency %1$s": [
- ""
- ],
- "Unable to verify this exchange": [
- ""
- ],
- "Unable to add this exchange": [
- ""
- ],
- "loading": [
- ""
- ],
- "Version": [
- ""
- ],
- "Next": [
- ""
- ],
- "Waiting for confirmation": [
- ""
- ],
- "PENDING": [
- ""
- ],
- "Could not load the list of transactions": [
- ""
- ],
- "Your transaction history is empty for this currency.": [
- ""
- ],
- "Add backup provider": [
- ""
- ],
- "Could not get provider information": [
- ""
- ],
- "Backup providers may charge for their service": [
- ""
- ],
- "URL": [
- ""
- ],
- "Name": [
- ""
- ],
- "Provider URL": [
- ""
- ],
- "Please review and accept this provider&apos;s terms of service": [
- ""
- ],
- "Pricing": [
- ""
- ],
- "free of charge": [
- ""
- ],
- "%1$s per year of service": [
- ""
- ],
- "Storage": [
- ""
- ],
- "%1$s megabytes of storage per year of service": [
- ""
- ],
- "Accept terms of service": [
- ""
- ],
- "Could not parse the payto URI": [
- ""
- ],
- "Please check the uri": [
- ""
- ],
- "Exchange is ready for withdrawal": [
- "Tjänsteleverantörer i plånboken:"
- ],
- "To complete the process you need to wire%1$s %2$s to the exchange bank account": [
- ""
- ],
- "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905": [
- ""
- ],
- "Cancel withdrawal": [
- ""
- ],
- "Could not toggle auto-open": [
- ""
- ],
- "Could not toggle clipboard": [
- ""
- ],
- "Navigator": [
- ""
- ],
- "Automatically open wallet based on page content": [
- ""
- ],
- "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.": [
- ""
- ],
- "Automatically check clipboard for Taler URI": [
- ""
- ],
- "Trust": [
- ""
- ],
- "No exchange yet": [
- ""
- ],
- "Term of Service": [
- ""
- ],
- "ok": [
- ""
- ],
- "changed": [
- ""
- ],
- "not accepted": [
- ""
- ],
- "unknown (exchange status should be updated)": [
- ""
- ],
- "Add an exchange": [
- "Accepterade tjänsteleverantörer:"
- ],
- "Troubleshooting": [
- ""
- ],
- "Developer mode": [
- ""
- ],
- "More options and information useful for debugging": [
- ""
- ],
- "Display": [
- ""
- ],
- "Current Language": [
- ""
- ],
- "Wallet Core": [
- ""
- ],
- "Web Extension": [
- ""
- ],
- "Exchange compatibility": [
- ""
- ],
- "Merchant compatibility": [
- ""
- ],
- "Bank compatibility": [
- ""
- ],
- "Browser Extension Installed!": [
- ""
- ],
- "You can open the GNU Taler Wallet using the combination %1$s .": [
- ""
- ],
- "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:": [
- ""
- ],
- "Click the puzzle icon": [
- ""
- ],
- "Search for GNU Taler Wallet": [
- ""
- ],
- "Click the pin icon": [
- ""
- ],
- "Permissions": [
- ""
- ],
- "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)": [
- ""
- ],
- "Next Steps": [
- ""
- ],
- "Try the demo": [
- ""
- ],
- "Learn how to top up your wallet balance": [
- ""
- ],
- "Diagnostics timed out. Could not talk to the wallet backend.": [
- ""
- ],
- "Problems detected:": [
- ""
- ],
- "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).": [
- ""
- ],
- "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.": [
- ""
- ],
- "Running diagnostics": [
- ""
- ],
- "Debug tools": [
- ""
- ],
- "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?": [
- ""
- ],
- "reset": [
- ""
- ],
- "TESTING: This may delete all your coin, proceed with caution": [
- ""
- ],
- "run gc": [
- ""
- ],
- "import database": [
- ""
- ],
- "export database": [
- ""
- ],
- "Database exported at %1$s %2$s to download": [
- ""
- ],
- "Coins": [
- "# Mynt"
- ],
- "Pending operations": [
- ""
- ],
- "usable coins": [
- ""
- ],
- "id": [
- ""
- ],
- "denom": [
- ""
- ],
- "value": [
- "Värde"
- ],
- "status": [
- ""
- ],
- "from refresh?": [
- ""
- ],
- "age key count": [
- "Övervisa till bank konto"
- ],
- "spent coins": [
- ""
- ],
- "click to show": [
- ""
- ],
- "Scan a QR code or enter taler:// URI below": [
- ""
- ],
- "Open": [
- ""
- ],
- "URI is not valid. Taler URI should start with `taler://`": [
- ""
- ],
- "Try another": [
- ""
- ],
- "Could not load list of exchange": [
- ""
- ],
- "Choose a currency to proceed or add another exchange": [
- ""
- ],
- "Known currencies": [
- ""
- ],
- "Specify the amount and the origin": [
- ""
- ],
- "Change currency": [
- ""
- ],
- "Use previous origins:": [
- ""
- ],
- "Or specify the origin of the money": [
- ""
- ],
- "Specify the origin of the money": [
- ""
- ],
- "From my bank account": [
- "Övervisa till bank konto"
- ],
- "From another wallet": [
- ""
- ],
- "currency not provided": [
- ""
- ],
- "Specify the amount and the destination": [
- ""
- ],
- "Use previous destinations:": [
- ""
- ],
- "Or specify the destination of the money": [
- ""
- ],
- "Specify the destination of the money": [
- ""
- ],
- "To my bank account": [
- "Övervisa till bank konto"
- ],
- "To another wallet": [
- ""
- ],
- "Could not load backup recovery information": [
- ""
- ],
- "Digital wallet recovery": [
- ""
- ],
- "Import backup, show info": [
- ""
- ],
- "All done, your transaction is in progress": [
- ""
- ],
- "Edit": [
- ""
- ],
- "Could not load the list of known exchanges": [
- ""
- ]
- }
- }
+ "Säljaren %1$s erbjuder följande:",
+ ],
+ "Merchant URL": [""],
+ "Receive &nbsp; %1$s": [""],
+ "Tip from %1$s accepted. Check your transactions list for more details.":
+ [""],
+ "Select one option": [""],
+ "Could not load": [""],
+ "Show terms of service": [""],
+ "I accept the exchange terms of service": [""],
+ "Exchange doesn&apos;t have terms of service": [""],
+ "Review exchange terms of service": [""],
+ "Review new version of terms of service": [""],
+ "The exchange reply with a empty terms of service": [""],
+ "Download Terms of Service": [""],
+ "Hide terms of service": [""],
+ "Could not load exchange fees": [""],
+ Close: [""],
+ "could not find any exchange": ["Accepterade tjänsteleverantörer:"],
+ "could not find any exchange for the currency %1$s": [""],
+ "Service fee description": [""],
+ "Select %1$s exchange": ["Välj %1$s"],
+ Reset: [""],
+ "Use this exchange": ["Accepterade tjänsteleverantörer:"],
+ "Doesn&apos;t have auditors": [""],
+ currency: [""],
+ Operations: [""],
+ Deposits: ["Depostitions avgift"],
+ Denomination: [""],
+ Until: [""],
+ Withdrawals: ["Utbetalnings avgift"],
+ Currency: [""],
+ "Coin operations": [""],
+ "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.":
+ [""],
+ "Transfer operations": [""],
+ "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.":
+ [""],
+ Operation: [""],
+ "Wallet operations": [""],
+ Feature: [""],
+ "Could not get the info from the URI": [""],
+ "Could not get info of withdrawal": [""],
+ "Digital cash withdrawal": [""],
+ "Could not finish the withdrawal operation": [""],
+ "Age restriction": [""],
+ "Withdraw &nbsp; %1$s": [""],
+ "Withdraw to a mobile phone": [""],
+ "Digital invoice": [""],
+ "Could not finish the invoice creation": [""],
+ Create: [""],
+ "Could not finish the payment operation": [""],
+ "Digital cash transfer": [""],
+ "Could not finish the transfer creation": [""],
+ "Could not finish the pickup operation": [""],
+ "Manual Withdrawal for %1$s": ["Utbetalnings avgift"],
+ "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.":
+ [""],
+ "No exchange found for %1$s": ["Accepterade tjänsteleverantörer:"],
+ "Add Exchange": ["Accepterade tjänsteleverantörer:"],
+ "No exchange configured": [""],
+ "Can&apos;t create the reserve": [""],
+ "Start withdrawal": [""],
+ "Could not load deposit balance": [""],
+ "A currency or an amount should be indicated": [""],
+ "There is no enough balance to make a deposit for currency %1$s": [""],
+ "Send %1$s to your account": [""],
+ "There is no account to make a deposit for currency %1$s": [""],
+ "Add account": ["Övervisa till bank konto"],
+ "Select account": ["Övervisa till bank konto"],
+ "Add another account": ["Övervisa till bank konto"],
+ "Deposit fee": ["Depostitions avgift"],
+ "Total deposit": [""],
+ "Deposit&nbsp;%1$s %2$s": ["Depostitions avgift"],
+ "Add bank account for %1$s": ["Accepterade tjänsteleverantörer:"],
+ "Enter the URL of an exchange you trust.": [""],
+ "Unable add this account": [""],
+ "Select account type": [""],
+ "Review terms of service": [""],
+ "Exchange URL": [""],
+ "Add exchange": ["Accepterade tjänsteleverantörer:"],
+ "Add new exchange": ["Accepterade tjänsteleverantörer:"],
+ "Add exchange for %1$s": ["Accepterade tjänsteleverantörer:"],
+ "An exchange has been found! Review the information and click next": [""],
+ "This exchange doesn&apos;t match the expected currency %1$s": [""],
+ "Unable to verify this exchange": [""],
+ "Unable to add this exchange": [""],
+ loading: [""],
+ Version: [""],
+ Next: [""],
+ "Waiting for confirmation": [""],
+ PENDING: [""],
+ "Could not load the list of transactions": [""],
+ "Your transaction history is empty for this currency.": [""],
+ "Add backup provider": [""],
+ "Could not get provider information": [""],
+ "Backup providers may charge for their service": [""],
+ URL: [""],
+ Name: [""],
+ "Provider URL": [""],
+ "Please review and accept this provider&apos;s terms of service": [""],
+ Pricing: [""],
+ "free of charge": [""],
+ "%1$s per year of service": [""],
+ Storage: [""],
+ "%1$s megabytes of storage per year of service": [""],
+ "Accept terms of service": [""],
+ "Could not parse the payto URI": [""],
+ "Please check the uri": [""],
+ "Exchange is ready for withdrawal": ["Tjänsteleverantörer i plånboken:"],
+ "To complete the process you need to wire%1$s %2$s to the exchange bank account":
+ [""],
+ "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905":
+ [""],
+ "Cancel withdrawal": [""],
+ "Could not toggle auto-open": [""],
+ "Could not toggle clipboard": [""],
+ Navigator: [""],
+ "Automatically open wallet based on page content": [""],
+ "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.":
+ [""],
+ "Automatically check clipboard for Taler URI": [""],
+ Trust: [""],
+ "No exchange yet": [""],
+ "Term of Service": [""],
+ ok: [""],
+ changed: [""],
+ "not accepted": [""],
+ "unknown (exchange status should be updated)": [""],
+ "Add an exchange": ["Accepterade tjänsteleverantörer:"],
+ Troubleshooting: [""],
+ "Developer mode": [""],
+ "More options and information useful for debugging": [""],
+ Display: [""],
+ "Current Language": [""],
+ "Wallet Core": [""],
+ "Web Extension": [""],
+ "Exchange compatibility": [""],
+ "Merchant compatibility": [""],
+ "Bank compatibility": [""],
+ "Browser Extension Installed!": [""],
+ "You can open the GNU Taler Wallet using the combination %1$s .": [""],
+ "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:":
+ [""],
+ "Click the puzzle icon": [""],
+ "Search for GNU Taler Wallet": [""],
+ "Click the pin icon": [""],
+ Permissions: [""],
+ "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)":
+ [""],
+ "Next Steps": [""],
+ "Try the demo": [""],
+ "Learn how to top up your wallet balance": [""],
+ "Diagnostics timed out. Could not talk to the wallet backend.": [""],
+ "Problems detected:": [""],
+ "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).":
+ [""],
+ "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.":
+ [""],
+ "Running diagnostics": [""],
+ "Debug tools": [""],
+ "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?":
+ [""],
+ reset: [""],
+ "TESTING: This may delete all your coin, proceed with caution": [""],
+ "run gc": [""],
+ "import database": [""],
+ "export database": [""],
+ "Database exported at %1$s %2$s to download": [""],
+ Coins: ["# Mynt"],
+ "Pending operations": [""],
+ "usable coins": [""],
+ id: [""],
+ denom: [""],
+ value: ["Värde"],
+ status: [""],
+ "from refresh?": [""],
+ "age key count": ["Övervisa till bank konto"],
+ "spent coins": [""],
+ "click to show": [""],
+ "Scan a QR code or enter taler:// URI below": [""],
+ Open: [""],
+ "URI is not valid. Taler URI should start with `taler://`": [""],
+ "Try another": [""],
+ "Could not load list of exchange": [""],
+ "Choose a currency to proceed or add another exchange": [""],
+ "Known currencies": [""],
+ "Specify the amount and the origin": [""],
+ "Change currency": [""],
+ "Use previous origins:": [""],
+ "Or specify the origin of the money": [""],
+ "Specify the origin of the money": [""],
+ "From my bank account": ["Övervisa till bank konto"],
+ "From another wallet": [""],
+ "currency not provided": [""],
+ "Specify the amount and the destination": [""],
+ "Use previous destinations:": [""],
+ "Or specify the destination of the money": [""],
+ "Specify the destination of the money": [""],
+ "To my bank account": ["Övervisa till bank konto"],
+ "To another wallet": [""],
+ "Could not load backup recovery information": [""],
+ "Digital wallet recovery": [""],
+ "Import backup, show info": [""],
+ "All done, your transaction is in progress": [""],
+ Edit: [""],
+ "Could not load the list of known exchanges": [""],
+ },
+ },
};
-strings['tr'] = {
- "domain": "messages",
- "locale_data": {
- "messages": {
+strings["tr"] = {
+ domain: "messages",
+ locale_data: {
+ messages: {
"": {
- "domain": "messages",
- "plural_forms": "nplurals=2; plural=n != 1;",
- "lang": "tr"
+ domain: "messages",
+ plural_forms: "nplurals=2; plural=n != 1;",
+ lang: "tr",
},
- "Balance": [
- "Bakiye"
- ],
- "Backup": [
- "Yedekle"
- ],
- "QR Reader and Taler URI": [
- ""
- ],
- "Settings": [
- "Ayarlar"
- ],
- "Dev": [
- "Gelişim"
- ],
- "%1$s": [
- "%1$s"
- ],
- "PENDING OPERATIONS": [
- ""
- ],
- "Loading": [
- "Yükleniyor"
- ],
+ Balance: ["Bakiye"],
+ Backup: ["Yedekle"],
+ "QR Reader and Taler URI": [""],
+ Settings: ["Ayarlar"],
+ Dev: ["Gelişim"],
+ "%1$s": ["%1$s"],
+ "PENDING OPERATIONS": [""],
+ Loading: ["Yükleniyor"],
"Could not load backup providers": [
- "Yedekleme sağlayıcıları yüklenemedi"
+ "Yedekleme sağlayıcıları yüklenemedi",
],
"No backup providers configured": [
- "Yapılandırılmış yedekleme sağlayıcısı yok"
- ],
- "Add provider": [
- "Sağlayıcı ekle"
- ],
- "Sync all backups": [
- "Tüm yedeklemeleri senkronize et"
- ],
- "Sync now": [
- "Şimdi senkronize et"
- ],
- "Last synced": [
- "Son Senkronizasyon"
- ],
- "Not synced": [
- "Senkronize Edilmedi"
- ],
- "Expires in": [
- "İçinde sona eriyor"
- ],
+ "Yapılandırılmış yedekleme sağlayıcısı yok",
+ ],
+ "Add provider": ["Sağlayıcı ekle"],
+ "Sync all backups": ["Tüm yedeklemeleri senkronize et"],
+ "Sync now": ["Şimdi senkronize et"],
+ "Last synced": ["Son Senkronizasyon"],
+ "Not synced": ["Senkronize Edilmedi"],
+ "Expires in": ["İçinde sona eriyor"],
"There was an error loading the provider detail for &quot; %1$s&quot;": [
- ""
- ],
- "There is not known provider with url &quot;%1$s&quot;.": [
- ""
- ],
- "See providers": [
- "Sağlayıcı ekle"
- ],
- "Last backup": [
- ""
- ],
- "Back up": [
- ""
- ],
- "Provider fee": [
- ""
- ],
- "per year": [
- ""
- ],
- "Extend": [
- ""
- ],
- "terms has changed, extending the service will imply accepting the new terms of service": [
- ""
- ],
- "old": [
- ""
- ],
- "new": [
- ""
- ],
- "fee": [
- ""
- ],
- "storage": [
- ""
- ],
- "Remove provider": [
- ""
- ],
- "This provider has reported an error": [
- ""
- ],
- "There is conflict with another backup from %1$s": [
- ""
- ],
- "Backup is not readable": [
- ""
- ],
- "Unknown backup problem: %1$s": [
- ""
- ],
- "service paid": [
- ""
- ],
- "Backup valid until": [
- ""
- ],
- "Cancel": [
- "Bakiye"
- ],
- "Open reserve page": [
- "Rezerv sayfasını açın"
- ],
- "Open pay page": [
- "Ödeme sayfasını açın"
- ],
- "Open refund page": [
- "Geri ödeme sayfasını açın"
- ],
- "Open tip page": [
- "İkramiye sayfasını açın"
- ],
- "Open withdraw page": [
- "Para çekme sayfasını açın"
- ],
- "Get digital cash": [
- ""
- ],
- "Could not load balance page": [
- "Bakiye sayfası yüklenemedi"
- ],
- "Add": [
- ""
- ],
- "Send %1$s": [
- "%1$s seçin"
- ],
- "Taler Action": [
- "Taler Eylemi"
- ],
- "This page has pay action.": [
- "Bu sayfada ödeme eylemi var."
- ],
+ "",
+ ],
+ "There is not known provider with url &quot;%1$s&quot;.": [""],
+ "See providers": ["Sağlayıcı ekle"],
+ "Last backup": [""],
+ "Back up": [""],
+ "Provider fee": [""],
+ "per year": [""],
+ Extend: [""],
+ "terms has changed, extending the service will imply accepting the new terms of service":
+ [""],
+ old: [""],
+ new: [""],
+ fee: [""],
+ storage: [""],
+ "Remove provider": [""],
+ "This provider has reported an error": [""],
+ "There is conflict with another backup from %1$s": [""],
+ "Backup is not readable": [""],
+ "Unknown backup problem: %1$s": [""],
+ "service paid": [""],
+ "Backup valid until": [""],
+ Cancel: ["Bakiye"],
+ "Open reserve page": ["Rezerv sayfasını açın"],
+ "Open pay page": ["Ödeme sayfasını açın"],
+ "Open refund page": ["Geri ödeme sayfasını açın"],
+ "Open tip page": ["İkramiye sayfasını açın"],
+ "Open withdraw page": ["Para çekme sayfasını açın"],
+ "Get digital cash": [""],
+ "Could not load balance page": ["Bakiye sayfası yüklenemedi"],
+ Add: [""],
+ "Send %1$s": ["%1$s seçin"],
+ "Taler Action": ["Taler Eylemi"],
+ "This page has pay action.": ["Bu sayfada ödeme eylemi var."],
"This page has a withdrawal action.": [
- "Bu sayfada para çekme eylemi var."
- ],
- "This page has a tip action.": [
- "Bu sayfada bir ikramiye eylemi var."
+ "Bu sayfada para çekme eylemi var.",
],
+ "This page has a tip action.": ["Bu sayfada bir ikramiye eylemi var."],
"This page has a notify reserve action.": [
- "Bu sayfada bir rezervasyon bildir eylemi var."
- ],
- "Notify": [
- "Bildirin"
+ "Bu sayfada bir rezervasyon bildir eylemi var.",
],
+ Notify: ["Bildirin"],
"This page has a refund action.": [
- "Bu sayfada bir geri ödeme eylemi var."
+ "Bu sayfada bir geri ödeme eylemi var.",
],
"This page has a malformed taler uri.": [
- "Bu sayfada hatalı biçimlendirilmiş taler uri var."
- ],
- "Dismiss": [
- "Reddet"
- ],
- "this popup is being closed and you are being redirected to %1$s": [
- ""
+ "Bu sayfada hatalı biçimlendirilmiş taler uri var.",
],
+ Dismiss: ["Reddet"],
+ "this popup is being closed and you are being redirected to %1$s": [""],
"Could not load purchase proposal details": [
- "Yedekleme sağlayıcıları yüklenemedi"
- ],
- "Order Id": [
- "Sipariş reddedildi"
- ],
- "Summary": [
- ""
- ],
- "Amount": [
- ""
- ],
- "Merchant name": [
- ""
- ],
- "Merchant jurisdiction": [
- ""
- ],
- "Merchant address": [
- ""
- ],
- "Merchant logo": [
- ""
- ],
- "Merchant website": [
- ""
- ],
- "Merchant email": [
- ""
- ],
- "Merchant public key": [
- ""
- ],
- "Delivery date": [
- ""
- ],
- "Delivery location": [
- "Taler Eylemi"
- ],
- "Products": [
- ""
- ],
- "Created at": [
- ""
- ],
- "Refund deadline": [
- ""
- ],
- "Auto refund": [
- "Ödeme iadesi"
- ],
- "Pay deadline": [
- ""
- ],
- "Fulfillment URL": [
- ""
- ],
- "Fulfillment message": [
- ""
- ],
- "Max deposit fee": [
- ""
- ],
- "Max fee": [
- ""
- ],
- "Minimum age": [
- ""
- ],
- "Wire fee amortization": [
- ""
- ],
- "Auditors": [
- ""
- ],
- "Exchanges": [
- "Exchange"
- ],
- "Bank account": [
- ""
- ],
- "Bitcoin address": [
- ""
- ],
- "IBAN": [
- ""
- ],
- "Could not load deposit status": [
- "Bakiye sayfası yüklenemedi"
- ],
- "Digital cash deposit": [
- ""
- ],
- "Cost": [
- ""
- ],
- "Fee": [
- "Ücretler"
- ],
- "To be received": [
- ""
- ],
- "Send &nbsp; %1$s": [
- ""
- ],
- "Bitcoin transfer details": [
- ""
- ],
- "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.": [
- ""
- ],
- "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts": [
- ""
- ],
- "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC": [
- ""
- ],
- "Account": [
- ""
- ],
- "Bank host": [
- ""
- ],
- "Bank transfer details": [
- ""
- ],
- "Subject": [
- ""
- ],
- "Receiver name": [
- ""
- ],
- "Could not load the transaction information": [
- ""
- ],
- "There was an error trying to complete the transaction": [
- ""
- ],
- "This transaction is not completed": [
- ""
- ],
- "Send": [
- ""
- ],
- "Retry": [
- "Yeniden deneyin"
- ],
- "Forget": [
- ""
- ],
- "Caution!": [
- ""
- ],
- "If you have already wired money to the exchange you will loose the chance to get the coins form it.": [
- ""
- ],
- "Confirm": [
- "Onaylamak"
- ],
- "Withdrawal": [
- "Çekildi"
- ],
- "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.": [
- ""
- ],
- "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.": [
- ""
- ],
- "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins": [
- ""
- ],
- "Details": [
- ""
- ],
- "Payment": [
- "Ödeme gönderildi"
- ],
- "Refunds": [
- ""
- ],
- "%1$s %2$s on %3$s": [
- ""
- ],
- "Merchant created a refund for this order but was not automatically picked up.": [
- ""
- ],
- "Offer": [
- ""
- ],
- "Accept": [
- "İkramiye kabul edildi"
- ],
- "Merchant": [
- ""
- ],
- "Invoice ID": [
- ""
- ],
- "Deposit": [
- ""
- ],
- "Refresh": [
- "Ücreti yenile"
- ],
- "Tip": [
- ""
- ],
- "Refund": [
- ""
- ],
- "Original order ID": [
- ""
- ],
- "Purchase summary": [
- ""
- ],
- "copy": [
- ""
- ],
- "hide qr": [
- ""
- ],
- "show qr": [
- ""
- ],
- "Credit": [
- ""
- ],
- "Invoice": [
- ""
- ],
- "Exchange": [
- "Exchange"
- ],
- "URI": [
- ""
- ],
- "Debit": [
- ""
- ],
- "Transfer": [
- ""
- ],
- "Country": [
- ""
- ],
- "Address lines": [
- ""
- ],
- "Building number": [
- ""
- ],
- "Building name": [
- ""
- ],
- "Street": [
- ""
- ],
- "Post code": [
- ""
- ],
- "Town location": [
- ""
- ],
- "Town": [
- ""
- ],
- "District": [
- ""
- ],
- "Country subdivision": [
- ""
- ],
- "Date": [
- ""
- ],
- "Transaction fees": [
- ""
- ],
- "Total": [
- ""
- ],
- "Withdraw": [
- "Para çek"
- ],
- "Price": [
- ""
- ],
- "Refunded": [
- ""
- ],
- "Delivery": [
- ""
- ],
- "Total transfer": [
- "Çekildi"
- ],
- "Could not load pay status": [
- ""
- ],
- "Digital cash payment": [
- ""
- ],
- "Purchase": [
- ""
- ],
- "Receipt": [
- ""
- ],
- "Valid until": [
- ""
- ],
- "List of products": [
- ""
- ],
- "free": [
- ""
- ],
- "Already paid, you are going to be redirected to %1$s": [
- ""
- ],
- "Already paid": [
- ""
- ],
- "Already claimed": [
- ""
- ],
- "Pay with a mobile phone": [
- ""
- ],
- "Hide QR": [
- ""
- ],
- "Scan the QR code or &nbsp; %1$s": [
- ""
- ],
- "Pay &nbsp; %1$s": [
- ""
- ],
+ "Yedekleme sağlayıcıları yüklenemedi",
+ ],
+ "Order Id": ["Sipariş reddedildi"],
+ Summary: [""],
+ Amount: [""],
+ "Merchant name": [""],
+ "Merchant jurisdiction": [""],
+ "Merchant address": [""],
+ "Merchant logo": [""],
+ "Merchant website": [""],
+ "Merchant email": [""],
+ "Merchant public key": [""],
+ "Delivery date": [""],
+ "Delivery location": ["Taler Eylemi"],
+ Products: [""],
+ "Created at": [""],
+ "Refund deadline": [""],
+ "Auto refund": ["Ödeme iadesi"],
+ "Pay deadline": [""],
+ "Fulfillment URL": [""],
+ "Fulfillment message": [""],
+ "Max deposit fee": [""],
+ "Max fee": [""],
+ "Minimum age": [""],
+ "Wire fee amortization": [""],
+ Auditors: [""],
+ Exchanges: ["Exchange"],
+ "Bank account": [""],
+ "Bitcoin address": [""],
+ IBAN: [""],
+ "Could not load deposit status": ["Bakiye sayfası yüklenemedi"],
+ "Digital cash deposit": [""],
+ Cost: [""],
+ Fee: ["Ücretler"],
+ "To be received": [""],
+ "Send &nbsp; %1$s": [""],
+ "Bitcoin transfer details": [""],
+ "The exchange need a transaction with 3 output, one output is the exchange account and the other two are segwit fake address for metadata with an minimum amount.":
+ [""],
+ "In bitcoincore wallet use &apos;Add Recipient&apos; button to add two additional recipient and copy addresses and amounts":
+ [""],
+ "Make sure the amount show %1$s BTC, else you have to change the base unit to BTC":
+ [""],
+ Account: [""],
+ "Bank host": [""],
+ "Bank transfer details": [""],
+ Subject: [""],
+ "Receiver name": [""],
+ "Could not load the transaction information": [""],
+ "There was an error trying to complete the transaction": [""],
+ "This transaction is not completed": [""],
+ Send: [""],
+ Retry: ["Yeniden deneyin"],
+ Forget: [""],
+ "Caution!": [""],
+ "If you have already wired money to the exchange you will loose the chance to get the coins form it.":
+ [""],
+ Confirm: ["Onaylamak"],
+ Withdrawal: ["Çekildi"],
+ "Make sure to use the correct subject, otherwise the money will not arrive in this wallet.":
+ [""],
+ "The bank did not yet confirmed the wire transfer. Go to the %1$s %2$s and check there is no pending step.":
+ [""],
+ "Bank has confirmed the wire transfer. Waiting for the exchange to send the coins":
+ [""],
+ Details: [""],
+ Payment: ["Ödeme gönderildi"],
+ Refunds: [""],
+ "%1$s %2$s on %3$s": [""],
+ "Merchant created a refund for this order but was not automatically picked up.":
+ [""],
+ Offer: [""],
+ Accept: ["İkramiye kabul edildi"],
+ Merchant: [""],
+ "Invoice ID": [""],
+ Deposit: [""],
+ Refresh: ["Ücreti yenile"],
+ Tip: [""],
+ Refund: [""],
+ "Original order ID": [""],
+ "Purchase summary": [""],
+ copy: [""],
+ "hide qr": [""],
+ "show qr": [""],
+ Credit: [""],
+ Invoice: [""],
+ Exchange: ["Exchange"],
+ URI: [""],
+ Debit: [""],
+ Transfer: [""],
+ Country: [""],
+ "Address lines": [""],
+ "Building number": [""],
+ "Building name": [""],
+ Street: [""],
+ "Post code": [""],
+ "Town location": [""],
+ Town: [""],
+ District: [""],
+ "Country subdivision": [""],
+ Date: [""],
+ "Transaction fees": [""],
+ Total: [""],
+ Withdraw: ["Para çek"],
+ Price: [""],
+ Refunded: [""],
+ Delivery: [""],
+ "Total transfer": ["Çekildi"],
+ "Could not load pay status": [""],
+ "Digital cash payment": [""],
+ Purchase: [""],
+ Receipt: [""],
+ "Valid until": [""],
+ "List of products": [""],
+ free: [""],
+ "Already paid, you are going to be redirected to %1$s": [""],
+ "Already paid": [""],
+ "Already claimed": [""],
+ "Pay with a mobile phone": [""],
+ "Hide QR": [""],
+ "Scan the QR code or &nbsp; %1$s": [""],
+ "Pay &nbsp; %1$s": [""],
"You have no balance for this currency. Withdraw digital cash first.": [
- ""
- ],
- "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.": [
- ""
- ],
- "Your current balance is not enough.": [
- "Gösterecek bakiyeniz yok."
- ],
- "Merchant message": [
- ""
- ],
- "Could not load refund status": [
- "Bakiye sayfası yüklenemedi"
- ],
- "Digital cash refund": [
- ""
- ],
- "You&apos;ve ignored the tip.": [
- ""
- ],
- "The refund is in progress.": [
- ""
- ],
- "Total to refund": [
- "Ödeme iadesi"
- ],
- "The merchant &quot;%1$s&quot; is offering you a refund.": [
- ""
- ],
- "Order amount": [
- "Ücreti yenile"
- ],
- "Already refunded": [
- "Ödeme iadesi"
- ],
- "Refund offered": [
- ""
- ],
- "Accept &nbsp; %1$s": [
- ""
- ],
- "Could not load tip status": [
- "Bakiye sayfası yüklenemedi"
- ],
- "Digital cash tip": [
- ""
- ],
- "The merchant is offering you a tip": [
- ""
- ],
- "Merchant URL": [
- ""
- ],
- "Receive &nbsp; %1$s": [
- ""
- ],
- "Tip from %1$s accepted. Check your transactions list for more details.": [
- ""
- ],
- "Select one option": [
- ""
- ],
- "Could not load": [
- "Bakiye sayfası yüklenemedi"
- ],
- "Show terms of service": [
- "Hizmet şartlarını göster"
- ],
+ "",
+ ],
+ "Could not find enough coins to pay. Even if you have enough %1$s some restriction may apply.":
+ [""],
+ "Your current balance is not enough.": ["Gösterecek bakiyeniz yok."],
+ "Merchant message": [""],
+ "Could not load refund status": ["Bakiye sayfası yüklenemedi"],
+ "Digital cash refund": [""],
+ "You&apos;ve ignored the tip.": [""],
+ "The refund is in progress.": [""],
+ "Total to refund": ["Ödeme iadesi"],
+ "The merchant &quot;%1$s&quot; is offering you a refund.": [""],
+ "Order amount": ["Ücreti yenile"],
+ "Already refunded": ["Ödeme iadesi"],
+ "Refund offered": [""],
+ "Accept &nbsp; %1$s": [""],
+ "Could not load tip status": ["Bakiye sayfası yüklenemedi"],
+ "Digital cash tip": [""],
+ "The merchant is offering you a tip": [""],
+ "Merchant URL": [""],
+ "Receive &nbsp; %1$s": [""],
+ "Tip from %1$s accepted. Check your transactions list for more details.":
+ [""],
+ "Select one option": [""],
+ "Could not load": ["Bakiye sayfası yüklenemedi"],
+ "Show terms of service": ["Hizmet şartlarını göster"],
"I accept the exchange terms of service": [
- "Hizmet şartlarını kabul ediyorum"
+ "Hizmet şartlarını kabul ediyorum",
],
"Exchange doesn&apos;t have terms of service": [
- "Exchange'in hizmet şartları yok"
+ "Exchange'in hizmet şartları yok",
],
"Review exchange terms of service": [
- "Exchange'in hizmet şartlarını inceleyin"
+ "Exchange'in hizmet şartlarını inceleyin",
],
"Review new version of terms of service": [
- "Hizmet şartlarının yeni sürümünü inceleyin"
- ],
- "The exchange reply with a empty terms of service": [
- ""
- ],
- "Download Terms of Service": [
- ""
- ],
- "Hide terms of service": [
- ""
- ],
- "Could not load exchange fees": [
- "Bakiye sayfası yüklenemedi"
- ],
- "Close": [
- ""
- ],
- "could not find any exchange": [
- "Bakiye sayfası yüklenemedi"
- ],
- "could not find any exchange for the currency %1$s": [
- ""
- ],
- "Service fee description": [
- ""
- ],
- "Select %1$s exchange": [
- "Özel exchange'i seçin"
- ],
- "Reset": [
- ""
- ],
- "Use this exchange": [
- "Özel exchange'i seçin"
- ],
- "Doesn&apos;t have auditors": [
- ""
- ],
- "currency": [
- ""
- ],
- "Operations": [
- "Bekleyen işlemler"
- ],
- "Deposits": [
- "Depozito %1$s"
- ],
- "Denomination": [
- "Bekleyen işlemler"
- ],
- "Until": [
- ""
- ],
- "Withdrawals": [
- "Çekildi"
- ],
- "Currency": [
- ""
- ],
- "Coin operations": [
- "Bekleyen işlemler"
- ],
- "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.": [
- ""
- ],
- "Transfer operations": [
- "Bekleyen işlemler"
- ],
- "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.": [
- ""
- ],
- "Operation": [
- ""
- ],
- "Wallet operations": [
- "Bekleyen işlemler"
- ],
- "Feature": [
- ""
- ],
- "Could not get the info from the URI": [
- ""
- ],
+ "Hizmet şartlarının yeni sürümünü inceleyin",
+ ],
+ "The exchange reply with a empty terms of service": [""],
+ "Download Terms of Service": [""],
+ "Hide terms of service": [""],
+ "Could not load exchange fees": ["Bakiye sayfası yüklenemedi"],
+ Close: [""],
+ "could not find any exchange": ["Bakiye sayfası yüklenemedi"],
+ "could not find any exchange for the currency %1$s": [""],
+ "Service fee description": [""],
+ "Select %1$s exchange": ["Özel exchange'i seçin"],
+ Reset: [""],
+ "Use this exchange": ["Özel exchange'i seçin"],
+ "Doesn&apos;t have auditors": [""],
+ currency: [""],
+ Operations: ["Bekleyen işlemler"],
+ Deposits: ["Depozito %1$s"],
+ Denomination: ["Bekleyen işlemler"],
+ Until: [""],
+ Withdrawals: ["Çekildi"],
+ Currency: [""],
+ "Coin operations": ["Bekleyen işlemler"],
+ "Every operation in this section may be different by denomination value and is valid for a period of time. The exchange will charge the indicated amount every time a coin is used in such operation.":
+ [""],
+ "Transfer operations": ["Bekleyen işlemler"],
+ "Every operation in this section may be different by transfer type and is valid for a period of time. The exchange will charge the indicated amount every time a transfer is made.":
+ [""],
+ Operation: [""],
+ "Wallet operations": ["Bekleyen işlemler"],
+ Feature: [""],
+ "Could not get the info from the URI": [""],
"Could not get info of withdrawal": [
- "Para çekme işlemi için ayrıntılar alınamadı:"
- ],
- "Digital cash withdrawal": [
- ""
- ],
- "Could not finish the withdrawal operation": [
- ""
- ],
- "Age restriction": [
- ""
- ],
- "Withdraw &nbsp; %1$s": [
- ""
- ],
- "Withdraw to a mobile phone": [
- ""
- ],
- "Digital invoice": [
- ""
- ],
- "Could not finish the invoice creation": [
- ""
- ],
- "Create": [
- ""
- ],
+ "Para çekme işlemi için ayrıntılar alınamadı:",
+ ],
+ "Digital cash withdrawal": [""],
+ "Could not finish the withdrawal operation": [""],
+ "Age restriction": [""],
+ "Withdraw &nbsp; %1$s": [""],
+ "Withdraw to a mobile phone": [""],
+ "Digital invoice": [""],
+ "Could not finish the invoice creation": [""],
+ Create: [""],
"Could not finish the payment operation": [
- "Para çekme işlemi için ayrıntılar alınamadı:"
- ],
- "Digital cash transfer": [
- ""
+ "Para çekme işlemi için ayrıntılar alınamadı:",
],
+ "Digital cash transfer": [""],
"Could not finish the transfer creation": [
- "Para çekme işlemi için ayrıntılar alınamadı:"
+ "Para çekme işlemi için ayrıntılar alınamadı:",
],
"Could not finish the pickup operation": [
- "Para çekme işlemi için ayrıntılar alınamadı:"
- ],
- "Manual Withdrawal for %1$s": [
- "Para çekme ücretleri:"
- ],
- "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.": [
- ""
- ],
- "No exchange found for %1$s": [
- ""
- ],
- "Add Exchange": [
- ""
- ],
- "No exchange configured": [
- ""
- ],
- "Can&apos;t create the reserve": [
- ""
- ],
- "Start withdrawal": [
- ""
- ],
- "Could not load deposit balance": [
- "Bakiye sayfası yüklenemedi"
- ],
- "A currency or an amount should be indicated": [
- ""
- ],
- "There is no enough balance to make a deposit for currency %1$s": [
- ""
- ],
- "Send %1$s to your account": [
- ""
- ],
- "There is no account to make a deposit for currency %1$s": [
- ""
- ],
- "Add account": [
- ""
- ],
- "Select account": [
- ""
- ],
- "Add another account": [
- ""
- ],
- "Deposit fee": [
- ""
- ],
- "Total deposit": [
- ""
- ],
- "Deposit&nbsp;%1$s %2$s": [
- "Test Havale Hesap #%1$s üzerinde %2$s"
- ],
- "Add bank account for %1$s": [
- ""
- ],
- "Enter the URL of an exchange you trust.": [
- ""
- ],
- "Unable add this account": [
- ""
- ],
- "Select account type": [
- ""
- ],
- "Review terms of service": [
- ""
- ],
- "Exchange URL": [
- ""
- ],
- "Add exchange": [
- ""
- ],
- "Add new exchange": [
- ""
- ],
- "Add exchange for %1$s": [
- ""
- ],
- "An exchange has been found! Review the information and click next": [
- ""
- ],
- "This exchange doesn&apos;t match the expected currency %1$s": [
- ""
- ],
- "Unable to verify this exchange": [
- ""
- ],
- "Unable to add this exchange": [
- ""
- ],
- "loading": [
- ""
- ],
- "Version": [
- ""
- ],
- "Next": [
- ""
- ],
- "Waiting for confirmation": [
- ""
- ],
- "PENDING": [
- ""
- ],
- "Could not load the list of transactions": [
- ""
- ],
- "Your transaction history is empty for this currency.": [
- ""
- ],
- "Add backup provider": [
- ""
- ],
- "Could not get provider information": [
- ""
- ],
- "Backup providers may charge for their service": [
- ""
- ],
- "URL": [
- ""
- ],
- "Name": [
- ""
- ],
- "Provider URL": [
- ""
- ],
+ "Para çekme işlemi için ayrıntılar alınamadı:",
+ ],
+ "Manual Withdrawal for %1$s": ["Para çekme ücretleri:"],
+ "Choose a exchange from where the coins will be withdrawn. The exchange will send the coins to this wallet after receiving a wire transfer with the correct subject.":
+ [""],
+ "No exchange found for %1$s": [""],
+ "Add Exchange": [""],
+ "No exchange configured": [""],
+ "Can&apos;t create the reserve": [""],
+ "Start withdrawal": [""],
+ "Could not load deposit balance": ["Bakiye sayfası yüklenemedi"],
+ "A currency or an amount should be indicated": [""],
+ "There is no enough balance to make a deposit for currency %1$s": [""],
+ "Send %1$s to your account": [""],
+ "There is no account to make a deposit for currency %1$s": [""],
+ "Add account": [""],
+ "Select account": [""],
+ "Add another account": [""],
+ "Deposit fee": [""],
+ "Total deposit": [""],
+ "Deposit&nbsp;%1$s %2$s": ["Test Havale Hesap #%1$s üzerinde %2$s"],
+ "Add bank account for %1$s": [""],
+ "Enter the URL of an exchange you trust.": [""],
+ "Unable add this account": [""],
+ "Select account type": [""],
+ "Review terms of service": [""],
+ "Exchange URL": [""],
+ "Add exchange": [""],
+ "Add new exchange": [""],
+ "Add exchange for %1$s": [""],
+ "An exchange has been found! Review the information and click next": [""],
+ "This exchange doesn&apos;t match the expected currency %1$s": [""],
+ "Unable to verify this exchange": [""],
+ "Unable to add this exchange": [""],
+ loading: [""],
+ Version: [""],
+ Next: [""],
+ "Waiting for confirmation": [""],
+ PENDING: [""],
+ "Could not load the list of transactions": [""],
+ "Your transaction history is empty for this currency.": [""],
+ "Add backup provider": [""],
+ "Could not get provider information": [""],
+ "Backup providers may charge for their service": [""],
+ URL: [""],
+ Name: [""],
+ "Provider URL": [""],
"Please review and accept this provider&apos;s terms of service": [
- "Hizmet şartlarını kabul ediyorum"
- ],
- "Pricing": [
- ""
- ],
- "free of charge": [
- ""
- ],
- "%1$s per year of service": [
- ""
- ],
- "Storage": [
- ""
- ],
- "%1$s megabytes of storage per year of service": [
- ""
- ],
- "Accept terms of service": [
- ""
- ],
- "Could not parse the payto URI": [
- ""
- ],
- "Please check the uri": [
- ""
- ],
- "Exchange is ready for withdrawal": [
- ""
- ],
- "To complete the process you need to wire%1$s %2$s to the exchange bank account": [
- ""
- ],
- "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905": [
- ""
- ],
- "Cancel withdrawal": [
- ""
- ],
- "Could not toggle auto-open": [
- "Bakiye sayfası yüklenemedi"
- ],
- "Could not toggle clipboard": [
- "Bakiye sayfası yüklenemedi"
- ],
- "Navigator": [
- ""
- ],
- "Automatically open wallet based on page content": [
- ""
- ],
- "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.": [
- ""
- ],
- "Automatically check clipboard for Taler URI": [
- ""
- ],
- "Trust": [
- ""
- ],
- "No exchange yet": [
- ""
- ],
- "Term of Service": [
- ""
- ],
- "ok": [
- ""
- ],
- "changed": [
- ""
- ],
- "not accepted": [
- ""
- ],
- "unknown (exchange status should be updated)": [
- ""
- ],
- "Add an exchange": [
- ""
- ],
- "Troubleshooting": [
- ""
- ],
- "Developer mode": [
- ""
- ],
- "More options and information useful for debugging": [
- ""
- ],
- "Display": [
- ""
- ],
- "Current Language": [
- ""
- ],
- "Wallet Core": [
- ""
- ],
- "Web Extension": [
- ""
- ],
- "Exchange compatibility": [
- ""
- ],
- "Merchant compatibility": [
- ""
- ],
- "Bank compatibility": [
- ""
- ],
- "Browser Extension Installed!": [
- ""
- ],
- "You can open the GNU Taler Wallet using the combination %1$s .": [
- ""
- ],
- "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:": [
- ""
- ],
- "Click the puzzle icon": [
- ""
- ],
- "Search for GNU Taler Wallet": [
- ""
- ],
- "Click the pin icon": [
- ""
- ],
- "Permissions": [
- ""
- ],
- "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)": [
- ""
- ],
- "Next Steps": [
- ""
- ],
- "Try the demo": [
- ""
- ],
- "Learn how to top up your wallet balance": [
- ""
- ],
+ "Hizmet şartlarını kabul ediyorum",
+ ],
+ Pricing: [""],
+ "free of charge": [""],
+ "%1$s per year of service": [""],
+ Storage: [""],
+ "%1$s megabytes of storage per year of service": [""],
+ "Accept terms of service": [""],
+ "Could not parse the payto URI": [""],
+ "Please check the uri": [""],
+ "Exchange is ready for withdrawal": [""],
+ "To complete the process you need to wire%1$s %2$s to the exchange bank account":
+ [""],
+ "Alternative, you can also scan this QR code or open %1$s if you have a banking app installed that supports RFC 8905":
+ [""],
+ "Cancel withdrawal": [""],
+ "Could not toggle auto-open": ["Bakiye sayfası yüklenemedi"],
+ "Could not toggle clipboard": ["Bakiye sayfası yüklenemedi"],
+ Navigator: [""],
+ "Automatically open wallet based on page content": [""],
+ "Enabling this option below will make using the wallet faster, but requires more permissions from your browser.":
+ [""],
+ "Automatically check clipboard for Taler URI": [""],
+ Trust: [""],
+ "No exchange yet": [""],
+ "Term of Service": [""],
+ ok: [""],
+ changed: [""],
+ "not accepted": [""],
+ "unknown (exchange status should be updated)": [""],
+ "Add an exchange": [""],
+ Troubleshooting: [""],
+ "Developer mode": [""],
+ "More options and information useful for debugging": [""],
+ Display: [""],
+ "Current Language": [""],
+ "Wallet Core": [""],
+ "Web Extension": [""],
+ "Exchange compatibility": [""],
+ "Merchant compatibility": [""],
+ "Bank compatibility": [""],
+ "Browser Extension Installed!": [""],
+ "You can open the GNU Taler Wallet using the combination %1$s .": [""],
+ "Also pinning the GNU Taler Wallet to your Chrome browser allows you to quick access without keyboard:":
+ [""],
+ "Click the puzzle icon": [""],
+ "Search for GNU Taler Wallet": [""],
+ "Click the pin icon": [""],
+ Permissions: [""],
+ "(Enabling this option below will make using the wallet faster, but requires more permissions from your browser.)":
+ [""],
+ "Next Steps": [""],
+ "Try the demo": [""],
+ "Learn how to top up your wallet balance": [""],
"Diagnostics timed out. Could not talk to the wallet backend.": [
- "Tanılar zaman aşımına uğradı. Cüzdan arka ucuyla konuşulamadı."
- ],
- "Problems detected:": [
- "Tespit edilen sorunlar:"
- ],
- "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).": [
- "Lütfen %1$s ayarlarınızda, IndexedDB'nin etkinleştirildiğinizi kontrol edin (%2$s tercih adını kontrol edin)."
- ],
- "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.": [
- "Cüzdan veritabanınız eski. Şu anda otomatik aktarım desteklenmiyor. Cüzdan veritabanını sıfırlamak için lütfen %1$s gidin."
- ],
- "Running diagnostics": [
- "Tanılamayı çalıştır"
- ],
- "Debug tools": [
- "Hata ayıklama araçları"
- ],
- "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?": [
- "Cüzdanınızdaki her şeyi GERİ ALINAMAZ BİÇİMDE İMHA ETMEK ve TÜM PARALARINIZI KAYBETMEK mi istiyorsunuz?"
- ],
- "reset": [
- "sıfırla"
- ],
- "TESTING: This may delete all your coin, proceed with caution": [
- ""
- ],
- "run gc": [
- ""
- ],
- "import database": [
- "veritabanını içe aktar"
- ],
- "export database": [
- "veritabanını dışa aktar"
- ],
+ "Tanılar zaman aşımına uğradı. Cüzdan arka ucuyla konuşulamadı.",
+ ],
+ "Problems detected:": ["Tespit edilen sorunlar:"],
+ "Please check in your %1$s settings that you have IndexedDB enabled (check the preference name %2$s).":
+ [
+ "Lütfen %1$s ayarlarınızda, IndexedDB'nin etkinleştirildiğinizi kontrol edin (%2$s tercih adını kontrol edin).",
+ ],
+ "Your wallet database is outdated. Currently automatic migration is not supported. Please go %1$s to reset the wallet database.":
+ [
+ "Cüzdan veritabanınız eski. Şu anda otomatik aktarım desteklenmiyor. Cüzdan veritabanını sıfırlamak için lütfen %1$s gidin.",
+ ],
+ "Running diagnostics": ["Tanılamayı çalıştır"],
+ "Debug tools": ["Hata ayıklama araçları"],
+ "Do you want to IRREVOCABLY DESTROY everything inside your wallet and LOSE ALL YOUR COINS?":
+ [
+ "Cüzdanınızdaki her şeyi GERİ ALINAMAZ BİÇİMDE İMHA ETMEK ve TÜM PARALARINIZI KAYBETMEK mi istiyorsunuz?",
+ ],
+ reset: ["sıfırla"],
+ "TESTING: This may delete all your coin, proceed with caution": [""],
+ "run gc": [""],
+ "import database": ["veritabanını içe aktar"],
+ "export database": ["veritabanını dışa aktar"],
"Database exported at %1$s %2$s to download": [
- "Veritabanı %1$s'de dışa aktarıldı-%2$s indirilecek"
- ],
- "Coins": [
- "Madeni paralar"
- ],
- "Pending operations": [
- "Bekleyen işlemler"
- ],
- "usable coins": [
- "kullanılabilir madeni paralar"
- ],
- "id": [
- "kimlik"
- ],
- "denom": [
- ""
- ],
- "value": [
- "değer"
- ],
- "status": [
- "durum"
- ],
- "from refresh?": [
- "yenilemeden mi?"
- ],
- "age key count": [
- ""
- ],
- "spent coins": [
- "harcanan madeni paralar"
- ],
- "click to show": [
- "göstermek için tıklayın"
- ],
- "Scan a QR code or enter taler:// URI below": [
- ""
- ],
- "Open": [
- ""
- ],
- "URI is not valid. Taler URI should start with `taler://`": [
- ""
- ],
- "Try another": [
- ""
- ],
- "Could not load list of exchange": [
- "Bakiye sayfası yüklenemedi"
- ],
- "Choose a currency to proceed or add another exchange": [
- ""
- ],
- "Known currencies": [
- ""
- ],
- "Specify the amount and the origin": [
- ""
- ],
- "Change currency": [
- ""
- ],
- "Use previous origins:": [
- ""
- ],
- "Or specify the origin of the money": [
- ""
- ],
- "Specify the origin of the money": [
- ""
- ],
- "From my bank account": [
- "Banka hesabına havale yap"
- ],
- "From another wallet": [
- ""
- ],
- "currency not provided": [
- ""
- ],
- "Specify the amount and the destination": [
- ""
- ],
- "Use previous destinations:": [
- ""
- ],
- "Or specify the destination of the money": [
- ""
- ],
- "Specify the destination of the money": [
- ""
- ],
- "To my bank account": [
- "Banka hesabına havale yap"
- ],
- "To another wallet": [
- ""
- ],
+ "Veritabanı %1$s'de dışa aktarıldı-%2$s indirilecek",
+ ],
+ Coins: ["Madeni paralar"],
+ "Pending operations": ["Bekleyen işlemler"],
+ "usable coins": ["kullanılabilir madeni paralar"],
+ id: ["kimlik"],
+ denom: [""],
+ value: ["değer"],
+ status: ["durum"],
+ "from refresh?": ["yenilemeden mi?"],
+ "age key count": [""],
+ "spent coins": ["harcanan madeni paralar"],
+ "click to show": ["göstermek için tıklayın"],
+ "Scan a QR code or enter taler:// URI below": [""],
+ Open: [""],
+ "URI is not valid. Taler URI should start with `taler://`": [""],
+ "Try another": [""],
+ "Could not load list of exchange": ["Bakiye sayfası yüklenemedi"],
+ "Choose a currency to proceed or add another exchange": [""],
+ "Known currencies": [""],
+ "Specify the amount and the origin": [""],
+ "Change currency": [""],
+ "Use previous origins:": [""],
+ "Or specify the origin of the money": [""],
+ "Specify the origin of the money": [""],
+ "From my bank account": ["Banka hesabına havale yap"],
+ "From another wallet": [""],
+ "currency not provided": [""],
+ "Specify the amount and the destination": [""],
+ "Use previous destinations:": [""],
+ "Or specify the destination of the money": [""],
+ "Specify the destination of the money": [""],
+ "To my bank account": ["Banka hesabına havale yap"],
+ "To another wallet": [""],
"Could not load backup recovery information": [
- "Yedekleme sağlayıcıları yüklenemedi"
- ],
- "Digital wallet recovery": [
- ""
+ "Yedekleme sağlayıcıları yüklenemedi",
],
- "Import backup, show info": [
- ""
+ "Digital wallet recovery": [""],
+ "Import backup, show info": [""],
+ "All done, your transaction is in progress": [""],
+ Edit: [
+ "Lütfen bir exchange seçin. Detayları seçiminizden önce inceleyebilirsiniz.",
],
- "All done, your transaction is in progress": [
- ""
- ],
- "Edit": [
- "Lütfen bir exchange seçin. Detayları seçiminizden önce inceleyebilirsiniz."
- ],
- "Could not load the list of known exchanges": [
- ""
- ]
- }
- }
+ "Could not load the list of known exchanges": [""],
+ },
+ },
};
-
diff --git a/packages/taler-wallet-webextension/src/stories.test.ts b/packages/taler-wallet-webextension/src/stories.test.ts
index 9f7374369..bb5abb92c 100644
--- a/packages/taler-wallet-webextension/src/stories.test.ts
+++ b/packages/taler-wallet-webextension/src/stories.test.ts
@@ -32,7 +32,7 @@ setupI18n("en", { en: {} });
setupPlatform(chromeAPI);
function testThisStory(st: any): any {
- describe(`render examples for ${(st as any).default.title}`, () => {
+ describe(`example "${(st as any).default.title}"`, () => {
Object.keys(st).forEach((k) => {
const Component = (st as any)[k];
if (k === "default" || !Component) return;
diff --git a/packages/taler-wallet-webextension/src/test-utils.ts b/packages/taler-wallet-webextension/src/test-utils.ts
index 695fec201..ccc8774e9 100644
--- a/packages/taler-wallet-webextension/src/test-utils.ts
+++ b/packages/taler-wallet-webextension/src/test-utils.ts
@@ -15,7 +15,12 @@
*/
import { NotificationType } from "@gnu-taler/taler-util";
-import { WalletCoreApiClient, WalletCoreOpKeys, WalletCoreRequestType, WalletCoreResponseType } from "@gnu-taler/taler-wallet-core";
+import {
+ WalletCoreApiClient,
+ WalletCoreOpKeys,
+ WalletCoreRequestType,
+ WalletCoreResponseType,
+} from "@gnu-taler/taler-wallet-core";
import {
ComponentChildren,
Fragment,
@@ -207,7 +212,8 @@ export function mountHook<T extends object>(
export const nullFunction: any = () => null;
interface MockHandler {
- addWalletCallResponse<Op extends WalletCoreOpKeys>(operation: Op,
+ addWalletCallResponse<Op extends WalletCoreOpKeys>(
+ operation: Op,
payload?: Partial<WalletCoreRequestType<Op>>,
response?: WalletCoreResponseType<Op>,
callback?: () => void,
@@ -220,16 +226,16 @@ interface MockHandler {
type CallRecord = WalletCallRecord | BackgroundCallRecord;
interface WalletCallRecord {
- source: "wallet"
+ source: "wallet";
callback: () => void;
- operation: WalletCoreOpKeys,
- payload?: WalletCoreRequestType<WalletCoreOpKeys>,
- response?: WalletCoreResponseType<WalletCoreOpKeys>,
+ operation: WalletCoreOpKeys;
+ payload?: WalletCoreRequestType<WalletCoreOpKeys>;
+ response?: WalletCoreResponseType<WalletCoreOpKeys>;
}
interface BackgroundCallRecord {
- source: "background"
- name: string,
- args: any,
+ source: "background";
+ name: string;
+ args: any;
response: any;
}
@@ -237,78 +243,112 @@ type Subscriptions = {
[key in NotificationType]?: VoidFunction;
};
-export function createWalletApiMock(): { handler: MockHandler, mock: typeof wxApi } {
- const calls = new Array<CallRecord>()
+export function createWalletApiMock(): {
+ handler: MockHandler;
+ mock: typeof wxApi;
+} {
+ const calls = new Array<CallRecord>();
const subscriptions: Subscriptions = {};
-
const mock: typeof wxApi = {
wallet: new Proxy<WalletCoreApiClient>({} as any, {
get(target, name, receiver) {
- const functionName = String(name)
+ const functionName = String(name);
if (functionName !== "call") {
- throw Error(`the only method in wallet api should be 'call': ${functionName}`)
+ throw Error(
+ `the only method in wallet api should be 'call': ${functionName}`,
+ );
}
- return function (operation: WalletCoreOpKeys, payload: WalletCoreRequestType<WalletCoreOpKeys>) {
- const next = calls.shift()
+ return function (
+ operation: WalletCoreOpKeys,
+ payload: WalletCoreRequestType<WalletCoreOpKeys>,
+ ) {
+ const next = calls.shift();
if (!next) {
- throw Error(`wallet operation was called but none was expected: ${operation} (${JSON.stringify(payload, undefined, 2)})`)
+ throw Error(
+ `wallet operation was called but none was expected: ${operation} (${JSON.stringify(
+ payload,
+ undefined,
+ 2,
+ )})`,
+ );
}
if (next.source !== "wallet") {
- throw Error(`wallet operation expected`)
+ throw Error(`wallet operation expected`);
}
if (operation !== next.operation) {
//more checks, deep check payload
- throw Error(`wallet operation doesn't match: expected ${next.operation} actual ${operation}`)
+ throw Error(
+ `wallet operation doesn't match: expected ${next.operation} actual ${operation}`,
+ );
}
- next.callback()
+ next.callback();
- return next.response ?? {}
- }
- }
+ return next.response ?? {};
+ };
+ },
}),
listener: {
- onUpdateNotification(mTypes: NotificationType[], callback: (() => void) | undefined): (() => void) {
- mTypes.forEach(m => {
- subscriptions[m] = callback
- })
- return nullFunction
- }
+ onUpdateNotification(
+ mTypes: NotificationType[],
+ callback: (() => void) | undefined,
+ ): () => void {
+ mTypes.forEach((m) => {
+ subscriptions[m] = callback;
+ });
+ return nullFunction;
+ },
},
background: new Proxy<BackgroundApiClient>({} as any, {
get(target, name, receiver) {
const functionName = String(name);
return function (...args: any) {
- const next = calls.shift()
+ const next = calls.shift();
if (!next) {
- throw Error(`background operation was called but none was expected: ${functionName} (${JSON.stringify(args, undefined, 2)})`)
+ throw Error(
+ `background operation was called but none was expected: ${functionName} (${JSON.stringify(
+ args,
+ undefined,
+ 2,
+ )})`,
+ );
}
if (next.source !== "background" || functionName !== next.name) {
//more checks, deep check args
- throw Error(`background operation doesn't match`)
+ throw Error(`background operation doesn't match`);
}
- return next.response
- }
- }
+ return next.response;
+ };
+ },
}),
- }
-
+ };
const handler: MockHandler = {
addWalletCallResponse(operation, payload, response, cb) {
- calls.push({ source: "wallet", operation, payload, response, callback: cb ? cb : () => { null } })
- return handler
+ calls.push({
+ source: "wallet",
+ operation,
+ payload,
+ response,
+ callback: cb
+ ? cb
+ : () => {
+ null;
+ },
+ });
+ return handler;
},
notifyEventFromWallet(event: NotificationType): void {
- const callback = subscriptions[event]
- if (!callback) throw Error(`Expected to have a subscription for ${event}`);
+ const callback = subscriptions[event];
+ if (!callback)
+ throw Error(`Expected to have a subscription for ${event}`);
return callback();
},
getCallingQueueState() {
return calls.length === 0 ? "empty" : `${calls.length} left`;
},
- }
+ };
- return { handler, mock }
+ return { handler, mock };
}
diff --git a/packages/taler-wallet-webextension/src/utils/index.ts b/packages/taler-wallet-webextension/src/utils/index.ts
index a1b2d5f14..23cfc7730 100644
--- a/packages/taler-wallet-webextension/src/utils/index.ts
+++ b/packages/taler-wallet-webextension/src/utils/index.ts
@@ -26,7 +26,8 @@ function getJsonIfOk(r: Response): Promise<any> {
}
throw new Error(
- `Try another server: (${r.status}) ${r.statusText || "internal server error"
+ `Try another server: (${r.status}) ${
+ r.statusText || "internal server error"
}`,
);
}
@@ -109,3 +110,7 @@ export function compose<SType extends { status: string }, PType>(
return h();
};
}
+
+export function assertUnreachable(x: never): never {
+ throw new Error("Didn't expect to get here");
+}
diff --git a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/index.ts b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/index.ts
new file mode 100644
index 000000000..3205588af
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/index.ts
@@ -0,0 +1,95 @@
+/*
+ This file is part of GNU Taler
+ (C) 2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+import {
+ AmountJson,
+ BackupBackupProviderTerms,
+ TalerErrorDetail,
+} from "@gnu-taler/taler-util";
+import { SyncTermsOfServiceResponse } from "@gnu-taler/taler-wallet-core";
+import { Loading } from "../../components/Loading.js";
+import { HookError } from "../../hooks/useAsyncAsHook.js";
+import {
+ ButtonHandler,
+ TextFieldHandler,
+ ToggleHandler,
+} from "../../mui/handlers.js";
+import { compose, StateViewMap } from "../../utils/index.js";
+import { wxApi } from "../../wxApi.js";
+import { useComponentState } from "./state.js";
+import {
+ LoadingUriView,
+ SelectProviderView,
+ ConfirmProviderView,
+} from "./views.js";
+
+export interface Props {
+ currency: string;
+ onBack: () => Promise<void>;
+ onComplete: (pid: string) => Promise<void>;
+ onPaymentRequired: (uri: string) => Promise<void>;
+}
+
+export type State =
+ | State.Loading
+ | State.LoadingUriError
+ | State.ConfirmProvider
+ | State.SelectProvider;
+
+export namespace State {
+ export interface Loading {
+ status: "loading";
+ error: undefined;
+ }
+
+ export interface LoadingUriError {
+ status: "loading-error";
+ error: HookError;
+ }
+
+ export interface ConfirmProvider {
+ status: "confirm-provider";
+ error: undefined | TalerErrorDetail;
+ url: string;
+ provider: SyncTermsOfServiceResponse;
+ tos: ToggleHandler;
+ onCancel: ButtonHandler;
+ onAccept: ButtonHandler;
+ }
+
+ export interface SelectProvider {
+ status: "select-provider";
+ url: TextFieldHandler;
+ urlOk: boolean;
+ name: TextFieldHandler;
+ onConfirm: ButtonHandler;
+ onCancel: ButtonHandler;
+ error: undefined | TalerErrorDetail;
+ }
+}
+
+const viewMapping: StateViewMap<State> = {
+ loading: Loading,
+ "loading-error": LoadingUriView,
+ "select-provider": SelectProviderView,
+ "confirm-provider": ConfirmProviderView,
+};
+
+export const AddBackupProviderPage = compose(
+ "AddBackupProvider",
+ (p: Props) => useComponentState(p, wxApi),
+ viewMapping,
+);
diff --git a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/state.ts b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/state.ts
new file mode 100644
index 000000000..0b3c17902
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/state.ts
@@ -0,0 +1,260 @@
+/*
+ This file is part of GNU Taler
+ (C) 2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+import {
+ canonicalizeBaseUrl,
+ Codec,
+ TalerErrorDetail,
+} from "@gnu-taler/taler-util";
+import {
+ codecForSyncTermsOfServiceResponse,
+ WalletApiOperation,
+} from "@gnu-taler/taler-wallet-core";
+import { useEffect, useState } from "preact/hooks";
+import { assertUnreachable } from "../../utils/index.js";
+import { wxApi } from "../../wxApi.js";
+import { Props, State } from "./index.js";
+
+type UrlState<T> = UrlOk<T> | UrlError;
+
+interface UrlOk<T> {
+ status: "ok";
+ result: T;
+}
+type UrlError =
+ | UrlNetworkError
+ | UrlClientError
+ | UrlServerError
+ | UrlParsingError
+ | UrlReadError;
+
+interface UrlNetworkError {
+ status: "network-error";
+ href: string;
+}
+interface UrlClientError {
+ status: "client-error";
+ code: number;
+}
+interface UrlServerError {
+ status: "server-error";
+ code: number;
+}
+interface UrlParsingError {
+ status: "parsing-error";
+ json: any;
+}
+interface UrlReadError {
+ status: "url-error";
+}
+
+function useDebounceEffect(
+ time: number,
+ cb: undefined | (() => Promise<void>),
+ deps: Array<any>,
+): void {
+ const [currentTimer, setCurrentTimer] = useState<any>();
+ useEffect(() => {
+ if (currentTimer !== undefined) clearTimeout(currentTimer);
+ if (cb !== undefined) {
+ const tid = setTimeout(cb, time);
+ setCurrentTimer(tid);
+ }
+ }, deps);
+}
+
+function useUrlState<T>(
+ host: string | undefined,
+ path: string,
+ codec: Codec<T>,
+): UrlState<T> | undefined {
+ const [state, setState] = useState<UrlState<T> | undefined>();
+
+ let href: string | undefined;
+ try {
+ if (host) {
+ const isHttps =
+ host.startsWith("https://") && host.length > "https://".length;
+ const isHttp =
+ host.startsWith("http://") && host.length > "http://".length;
+ const withProto = isHttp || isHttps ? host : `https://${host}`;
+ const baseUrl = canonicalizeBaseUrl(withProto);
+ href = new URL(path, baseUrl).href;
+ }
+ } catch (e) {
+ setState({
+ status: "url-error",
+ });
+ }
+ const constHref = href;
+
+ useDebounceEffect(
+ 500,
+ constHref == undefined
+ ? undefined
+ : async () => {
+ const req = await fetch(constHref).catch((e) => {
+ return setState({
+ status: "network-error",
+ href: constHref,
+ });
+ });
+ if (!req) return;
+
+ if (req.status >= 400 && req.status < 500) {
+ setState({
+ status: "client-error",
+ code: req.status,
+ });
+ return;
+ }
+ if (req.status > 500) {
+ setState({
+ status: "server-error",
+ code: req.status,
+ });
+ return;
+ }
+
+ const json = await req.json();
+ try {
+ const result = codec.decode(json);
+ setState({ status: "ok", result });
+ } catch (e: any) {
+ setState({ status: "parsing-error", json });
+ }
+ },
+ [host, path],
+ );
+
+ return state;
+}
+
+export function useComponentState(
+ { currency, onBack, onComplete, onPaymentRequired }: Props,
+ api: typeof wxApi,
+): State {
+ const [url, setHost] = useState<string | undefined>();
+ const [name, setName] = useState<string | undefined>();
+ const [tos, setTos] = useState(false);
+ const urlState = useUrlState(
+ url,
+ "config",
+ codecForSyncTermsOfServiceResponse(),
+ );
+ const [operationError, setOperationError] = useState<
+ TalerErrorDetail | undefined
+ >();
+ const [showConfirm, setShowConfirm] = useState(false);
+
+ async function addBackupProvider() {
+ if (!url || !name) return;
+
+ const resp = await api.wallet.call(WalletApiOperation.AddBackupProvider, {
+ backupProviderBaseUrl: url,
+ name: name,
+ activate: true,
+ });
+
+ switch (resp.status) {
+ case "payment-required":
+ return onPaymentRequired(resp.talerUri);
+ case "error":
+ return setOperationError(resp.error);
+ case "ok":
+ return onComplete(url);
+ default:
+ assertUnreachable(resp);
+ }
+ }
+
+ if (showConfirm && urlState && urlState.status === "ok") {
+ return {
+ status: "confirm-provider",
+ error: operationError,
+ onAccept: {
+ onClick: !tos ? undefined : addBackupProvider,
+ },
+ onCancel: {
+ onClick: onBack,
+ },
+ provider: urlState.result,
+ tos: {
+ value: tos,
+ button: {
+ onClick: async () => setTos(!tos),
+ },
+ },
+ url: url ?? "",
+ };
+ }
+
+ return {
+ status: "select-provider",
+ error: undefined,
+ name: {
+ value: name || "",
+ onInput: async (e) => setName(e),
+ error:
+ name === undefined ? undefined : !name ? "Can't be empty" : undefined,
+ },
+ onCancel: {
+ onClick: onBack,
+ },
+ onConfirm: {
+ onClick:
+ !urlState || urlState.status !== "ok" || !name
+ ? undefined
+ : async () => {
+ setShowConfirm(true);
+ },
+ },
+ urlOk: urlState?.status === "ok",
+ url: {
+ value: url || "",
+ onInput: async (e) => setHost(e),
+ error: errorString(urlState),
+ },
+ };
+}
+
+function errorString(state: undefined | UrlState<any>): string | undefined {
+ if (!state) return state;
+ switch (state.status) {
+ case "ok":
+ return undefined;
+ case "client-error": {
+ switch (state.code) {
+ case 404:
+ return "Not found";
+ case 401:
+ return "Unauthorized";
+ case 403:
+ return "Forbidden";
+ default:
+ return `Server says it a client error: ${state.code}.`;
+ }
+ }
+ case "server-error":
+ return `Server had a problem ${state.code}.`;
+ case "parsing-error":
+ return `Server response doesn't have the right format.`;
+ case "network-error":
+ return `Unable to connect to ${state.href}.`;
+ case "url-error":
+ return "URL is not complete";
+ }
+}
diff --git a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/stories.tsx b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/stories.tsx
new file mode 100644
index 000000000..ae3e1b091
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/stories.tsx
@@ -0,0 +1,109 @@
+/*
+ This file is part of GNU Taler
+ (C) 2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ *
+ * @author Sebastian Javier Marchano (sebasjm)
+ */
+
+import { createExample } from "../../test-utils.js";
+import { ConfirmProviderView, SelectProviderView } from "./views.js";
+
+export default {
+ title: "wallet/backup/confirm",
+};
+
+export const DemoService = createExample(ConfirmProviderView, {
+ url: "https://sync.demo.taler.net/",
+ provider: {
+ annual_fee: "KUDOS:0.1",
+ storage_limit_in_megabytes: 20,
+ version: "1",
+ },
+ tos: {
+ button: {},
+ },
+ onAccept: {},
+ onCancel: {},
+});
+
+export const FreeService = createExample(ConfirmProviderView, {
+ url: "https://sync.taler:9667/",
+ provider: {
+ annual_fee: "ARS:0",
+ storage_limit_in_megabytes: 20,
+ version: "1",
+ },
+ tos: {
+ button: {},
+ },
+ onAccept: {},
+ onCancel: {},
+});
+
+export const Initial = createExample(SelectProviderView, {
+ url: { value: "" },
+ name: { value: "" },
+ onCancel: {},
+ onConfirm: {},
+});
+
+export const WithValue = createExample(SelectProviderView, {
+ url: {
+ value: "sync.demo.taler.net",
+ },
+ name: {
+ value: "Demo backup service",
+ },
+ onCancel: {},
+ onConfirm: {},
+});
+
+export const WithConnectionError = createExample(SelectProviderView, {
+ url: {
+ value: "sync.demo.taler.net",
+ error: "Network error",
+ },
+ name: {
+ value: "Demo backup service",
+ },
+ onCancel: {},
+ onConfirm: {},
+});
+
+export const WithClientError = createExample(SelectProviderView, {
+ url: {
+ value: "sync.demo.taler.net",
+ error: "URL may not be right: (404) Not Found",
+ },
+ name: {
+ value: "Demo backup service",
+ },
+ onCancel: {},
+ onConfirm: {},
+});
+
+export const WithServerError = createExample(SelectProviderView, {
+ url: {
+ value: "sync.demo.taler.net",
+ error: "Try another server: (500) Internal Server Error",
+ },
+ name: {
+ value: "Demo backup service",
+ },
+ onCancel: {},
+ onConfirm: {},
+});
diff --git a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts
new file mode 100644
index 000000000..1143853f8
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts
@@ -0,0 +1,79 @@
+/*
+ This file is part of GNU Taler
+ (C) 2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ *
+ * @author Sebastian Javier Marchano (sebasjm)
+ */
+
+import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
+import { expect } from "chai";
+import {
+ createWalletApiMock,
+ mountHook,
+ nullFunction,
+} from "../../test-utils.js";
+import { Props } from "./index.js";
+import { useComponentState } from "./state.js";
+
+const props: Props = {
+ currency: "KUDOS",
+ onBack: nullFunction,
+ onComplete: nullFunction,
+ onPaymentRequired: nullFunction,
+};
+describe("AddBackupProvider states", () => {
+ it("should start in 'select-provider' state", async () => {
+ const { handler, mock } = createWalletApiMock();
+
+ // handler.addWalletCallResponse(
+ // WalletApiOperation.ListKnownBankAccounts,
+ // undefined,
+ // {
+ // accounts: [],
+ // },
+ // );
+
+ const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
+ mountHook(() => useComponentState(props, mock));
+
+ {
+ const state = pullLastResultOrThrow();
+ expect(state.status).equal("select-provider");
+ if (state.status !== "select-provider") return;
+ expect(state.name.value).eq("");
+ expect(state.url.value).eq("");
+ }
+
+ //FIXME: this should not make an extra update
+ /**
+ * this may be due to useUrlState because is using an effect over
+ * a dependency with a timeout
+ */
+ // NOTE: do not remove this comment, keeping as an example
+ // await waitForStateUpdate()
+ // {
+ // const state = pullLastResultOrThrow();
+ // expect(state.status).equal("select-provider");
+ // if (state.status !== "select-provider") return;
+ // expect(state.name.value).eq("")
+ // expect(state.url.value).eq("")
+ // }
+
+ await assertNoPendingUpdate();
+ expect(handler.getCallingQueueState()).eq("empty");
+ });
+});
diff --git a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/views.tsx b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/views.tsx
new file mode 100644
index 000000000..b633a595f
--- /dev/null
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/views.tsx
@@ -0,0 +1,172 @@
+/*
+ This file is part of GNU Taler
+ (C) 2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+import { Amounts } from "@gnu-taler/taler-util";
+import { Fragment, h, VNode } from "preact";
+import { Checkbox } from "../../components/Checkbox.js";
+import { LoadingError } from "../../components/LoadingError.js";
+import {
+ LightText,
+ SmallLightText,
+ SubTitle,
+ TermsOfService,
+ Title,
+} from "../../components/styled/index.js";
+import { useTranslationContext } from "../../context/translation.js";
+import { Button } from "../../mui/Button.js";
+import { TextField } from "../../mui/TextField.js";
+import { State } from "./index.js";
+
+export function LoadingUriView({ error }: State.LoadingUriError): VNode {
+ const { i18n } = useTranslationContext();
+
+ return (
+ <LoadingError
+ title={<i18n.Translate>Could not load</i18n.Translate>}
+ error={error}
+ />
+ );
+}
+
+export function ConfirmProviderView({
+ url,
+ provider,
+ tos,
+ onCancel,
+ onAccept,
+}: State.ConfirmProvider): VNode {
+ const { i18n } = useTranslationContext();
+ const noFee = Amounts.isZero(provider.annual_fee);
+ return (
+ <Fragment>
+ <section>
+ <Title>
+ <i18n.Translate>Review terms of service</i18n.Translate>
+ </Title>
+ <div>
+ <i18n.Translate>Provider URL</i18n.Translate>:{" "}
+ <a href={url} target="_blank" rel="noreferrer">
+ {url}
+ </a>
+ </div>
+ <SmallLightText>
+ <i18n.Translate>
+ Please review and accept this provider&apos;s terms of service
+ </i18n.Translate>
+ </SmallLightText>
+ <SubTitle>
+ 1. <i18n.Translate>Pricing</i18n.Translate>
+ </SubTitle>
+ <p>
+ {noFee ? (
+ <i18n.Translate>free of charge</i18n.Translate>
+ ) : (
+ <i18n.Translate>
+ {provider.annual_fee} per year of service
+ </i18n.Translate>
+ )}
+ </p>
+ <SubTitle>
+ 2. <i18n.Translate>Storage</i18n.Translate>
+ </SubTitle>
+ <p>
+ <i18n.Translate>
+ {provider.storage_limit_in_megabytes} megabytes of storage per year
+ of service
+ </i18n.Translate>
+ </p>
+ {/* replace with <TermsOfService /> */}
+ <Checkbox
+ label={<i18n.Translate>Accept terms of service</i18n.Translate>}
+ name="terms"
+ onToggle={tos.button.onClick}
+ enabled={tos.value}
+ />
+ </section>
+ <footer>
+ <Button
+ variant="contained"
+ color="secondary"
+ onClick={onCancel.onClick}
+ >
+ <i18n.Translate>Cancel</i18n.Translate>
+ </Button>
+ <Button variant="contained" color="primary" onClick={onAccept.onClick}>
+ {noFee ? (
+ <i18n.Translate>Add provider</i18n.Translate>
+ ) : (
+ <i18n.Translate>Pay</i18n.Translate>
+ )}
+ </Button>
+ </footer>
+ </Fragment>
+ );
+}
+
+export function SelectProviderView({
+ url,
+ name,
+ urlOk,
+ onCancel,
+ onConfirm,
+}: State.SelectProvider): VNode {
+ const { i18n } = useTranslationContext();
+ return (
+ <Fragment>
+ <section>
+ <Title>
+ <i18n.Translate>Add backup provider</i18n.Translate>
+ </Title>
+ <LightText>
+ <i18n.Translate>
+ Backup providers may charge for their service
+ </i18n.Translate>
+ </LightText>
+ <p>
+ <TextField
+ label={<i18n.Translate>URL</i18n.Translate>}
+ placeholder="https://"
+ color={urlOk ? "success" : undefined}
+ value={url.value}
+ error={url.error}
+ onChange={url.onInput}
+ />
+ </p>
+ <p>
+ <TextField
+ label={<i18n.Translate>Name</i18n.Translate>}
+ placeholder="provider name"
+ value={name.value}
+ error={name.error}
+ onChange={name.onInput}
+ />
+ </p>
+ </section>
+ <footer>
+ <Button
+ variant="contained"
+ color="secondary"
+ onClick={onCancel.onClick}
+ >
+ <i18n.Translate>Cancel</i18n.Translate>
+ </Button>
+ <Button variant="contained" color="primary" onClick={onConfirm.onClick}>
+ <i18n.Translate>Next</i18n.Translate>
+ </Button>
+ </footer>
+ </Fragment>
+ );
+}
diff --git a/packages/taler-wallet-webextension/src/wallet/Application.tsx b/packages/taler-wallet-webextension/src/wallet/Application.tsx
index 5934dec00..6b265c1ba 100644
--- a/packages/taler-wallet-webextension/src/wallet/Application.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Application.tsx
@@ -65,6 +65,7 @@ import { InvoiceCreatePage } from "../cta/InvoiceCreate/index.js";
import { TransferPickupPage } from "../cta/TransferPickup/index.js";
import { InvoicePayPage } from "../cta/InvoicePay/index.js";
import { RecoveryPage } from "../cta/Recovery/index.js";
+import { AddBackupProviderPage } from "./AddBackupProvider/index.js";
export function Application(): VNode {
const [globalNotification, setGlobalNotification] = useState<
@@ -221,7 +222,13 @@ export function Application(): VNode {
/>
<Route
path={Pages.backupProviderAdd}
- component={ProviderAddPage}
+ component={AddBackupProviderPage}
+ onPaymentRequired={(uri: string) =>
+ redirectTo(`${Pages.ctaPay}?talerPayUri=${uri}`)
+ }
+ onComplete={(pid: string) =>
+ redirectTo(Pages.backupProviderDetail({ pid }))
+ }
onBack={() => redirectTo(Pages.backup)}
/>
diff --git a/packages/taler-wallet-webextension/src/wallet/DepositPage/index.ts b/packages/taler-wallet-webextension/src/wallet/DepositPage/index.ts
index 85896da26..373045833 100644
--- a/packages/taler-wallet-webextension/src/wallet/DepositPage/index.ts
+++ b/packages/taler-wallet-webextension/src/wallet/DepositPage/index.ts
@@ -20,7 +20,7 @@ import { HookError } from "../../hooks/useAsyncAsHook.js";
import {
ButtonHandler,
SelectFieldHandler,
- TextFieldHandler
+ TextFieldHandler,
} from "../../mui/handlers.js";
import { compose, StateViewMap } from "../../utils/index.js";
import { wxApi } from "../../wxApi.js";
@@ -31,7 +31,7 @@ import {
LoadingErrorView,
NoAccountToDepositView,
NoEnoughBalanceView,
- ReadyView
+ ReadyView,
} from "./views.js";
export interface Props {
diff --git a/packages/taler-wallet-webextension/src/wallet/DepositPage/state.ts b/packages/taler-wallet-webextension/src/wallet/DepositPage/state.ts
index d8b752d44..91883c823 100644
--- a/packages/taler-wallet-webextension/src/wallet/DepositPage/state.ts
+++ b/packages/taler-wallet-webextension/src/wallet/DepositPage/state.ts
@@ -21,7 +21,7 @@ import {
KnownBankAccountsInfo,
parsePaytoUri,
PaytoUri,
- stringifyPaytoUri
+ stringifyPaytoUri,
} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { useState } from "preact/hooks";
@@ -37,10 +37,16 @@ export function useComponentState(
const currency = parsed !== undefined ? parsed.currency : currencyStr;
const hook = useAsyncAsHook(async () => {
- const { balances } = await api.wallet.call(WalletApiOperation.GetBalances, {});
- const { accounts } = await api.wallet.call(WalletApiOperation.ListKnownBankAccounts, {
- currency
- });
+ const { balances } = await api.wallet.call(
+ WalletApiOperation.GetBalances,
+ {},
+ );
+ const { accounts } = await api.wallet.call(
+ WalletApiOperation.ListKnownBankAccounts,
+ {
+ currency,
+ },
+ );
return { accounts, balances };
});
@@ -120,13 +126,13 @@ export function useComponentState(
},
};
}
- const firstAccount = accounts[0].uri
+ const firstAccount = accounts[0].uri;
const currentAccount = !selectedAccount ? firstAccount : selectedAccount;
if (fee === undefined && parsedAmount) {
- getFeeForAmount(currentAccount, parsedAmount, api).then(initialFee => {
- setFee(initialFee)
- })
+ getFeeForAmount(currentAccount, parsedAmount, api).then((initialFee) => {
+ setFee(initialFee);
+ });
return {
status: "loading",
error: undefined,
@@ -177,10 +183,10 @@ export function useComponentState(
const amountError = !isDirty
? undefined
: !parsedAmount
- ? "Invalid amount"
- : Amounts.cmp(balance, parsedAmount) === -1
- ? `Too much, your current balance is ${Amounts.stringifyValue(balance)}`
- : undefined;
+ ? "Invalid amount"
+ : Amounts.cmp(balance, parsedAmount) === -1
+ ? `Too much, your current balance is ${Amounts.stringifyValue(balance)}`
+ : undefined;
const unableToDeposit =
!parsedAmount || //no amount specified
@@ -194,8 +200,9 @@ export function useComponentState(
const depositPaytoUri = stringifyPaytoUri(currentAccount);
const amount = Amounts.stringify(parsedAmount);
await api.wallet.call(WalletApiOperation.CreateDepositGroup, {
- amount, depositPaytoUri
- })
+ amount,
+ depositPaytoUri,
+ });
onSuccess(currency);
}
@@ -242,8 +249,9 @@ async function getFeeForAmount(
const depositPaytoUri = `payto://${p.targetType}/${p.targetPath}`;
const amount = Amounts.stringify(a);
return await api.wallet.call(WalletApiOperation.GetFeeForDeposit, {
- amount, depositPaytoUri
- })
+ amount,
+ depositPaytoUri,
+ });
}
export function labelForAccountType(id: string) {
diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts
index ddfaa71f9..a95830f8e 100644
--- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts
+++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/index.ts
@@ -18,7 +18,7 @@ import {
DenomOperationMap,
ExchangeFullDetails,
ExchangeListItem,
- FeeDescriptionPair
+ FeeDescriptionPair,
} from "@gnu-taler/taler-util";
import { Loading } from "../../components/Loading.js";
import { HookError } from "../../hooks/useAsyncAsHook.js";
@@ -33,7 +33,7 @@ import {
NoExchangesView,
PrivacyContentView,
ReadyView,
- TosContentView
+ TosContentView,
} from "./views.js";
export interface Props {
diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
index ee839cad7..0a66dc381 100644
--- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
+++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/state.ts
@@ -15,7 +15,10 @@
*/
import { DenomOperationMap, FeeDescription } from "@gnu-taler/taler-util";
-import { createPairTimeline, WalletApiOperation } from "@gnu-taler/taler-wallet-core";
+import {
+ createPairTimeline,
+ WalletApiOperation,
+} from "@gnu-taler/taler-wallet-core";
import { useState } from "preact/hooks";
import { useAsyncAsHook } from "../../hooks/useAsyncAsHook.js";
import { wxApi } from "../../wxApi.js";
@@ -41,15 +44,23 @@ export function useComponentState(
exchanges.length == 0 ? undefined : exchanges[selectedIdx];
const selected = !selectedExchange
? undefined
- : await api.wallet.call(WalletApiOperation.GetExchangeDetailedInfo, { exchangeBaseUrl: selectedExchange.exchangeBaseUrl });
+ : await api.wallet.call(WalletApiOperation.GetExchangeDetailedInfo, {
+ exchangeBaseUrl: selectedExchange.exchangeBaseUrl,
+ });
const initialExchange =
selectedIdx === initialValue ? undefined : exchanges[initialValue];
const original = !initialExchange
? undefined
- : await api.wallet.call(WalletApiOperation.GetExchangeDetailedInfo, { exchangeBaseUrl: initialExchange.exchangeBaseUrl });
+ : await api.wallet.call(WalletApiOperation.GetExchangeDetailedInfo, {
+ exchangeBaseUrl: initialExchange.exchangeBaseUrl,
+ });
- return { exchanges, selected: selected?.exchange, original: original?.exchange };
+ return {
+ exchanges,
+ selected: selected?.exchange,
+ original: original?.exchange,
+ };
}, [value]);
const [showingTos, setShowingTos] = useState<string | undefined>(undefined);
diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx
index d9a33c5c2..be059630f 100644
--- a/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/ExchangeSelection/views.tsx
@@ -161,11 +161,14 @@ export function NoExchangesView({
title={<i18n.Translate>Could not find any exchange</i18n.Translate>}
/>
);
-
}
return (
<ErrorMessage
- title={<i18n.Translate>Could not find any exchange for the currency {currency}</i18n.Translate>}
+ title={
+ <i18n.Translate>
+ Could not find any exchange for the currency {currency}
+ </i18n.Translate>
+ }
/>
);
}
diff --git a/packages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts b/packages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts
index cd591be74..df4e7586f 100644
--- a/packages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts
+++ b/packages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts
@@ -20,7 +20,7 @@ import { HookError } from "../../hooks/useAsyncAsHook.js";
import {
ButtonHandler,
SelectFieldHandler,
- TextFieldHandler
+ TextFieldHandler,
} from "../../mui/handlers.js";
import { compose, StateViewMap } from "../../utils/index.js";
import { wxApi } from "../../wxApi.js";
@@ -58,13 +58,13 @@ export namespace State {
alias: TextFieldHandler;
onAccountAdded: ButtonHandler;
onCancel: ButtonHandler;
- accountByType: AccountByType,
- deleteAccount: (a: KnownBankAccountsInfo) => Promise<void>,
+ accountByType: AccountByType;
+ deleteAccount: (a: KnownBankAccountsInfo) => Promise<void>;
}
}
export type AccountByType = {
- [key: string]: KnownBankAccountsInfo[]
+ [key: string]: KnownBankAccountsInfo[];
};
const viewMapping: StateViewMap<State> = {
diff --git a/packages/taler-wallet-webextension/src/wallet/ManageAccount/state.ts b/packages/taler-wallet-webextension/src/wallet/ManageAccount/state.ts
index f180fc1c0..1f920f05f 100644
--- a/packages/taler-wallet-webextension/src/wallet/ManageAccount/state.ts
+++ b/packages/taler-wallet-webextension/src/wallet/ManageAccount/state.ts
@@ -14,7 +14,11 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { KnownBankAccountsInfo, parsePaytoUri, stringifyPaytoUri } from "@gnu-taler/taler-util";
+import {
+ KnownBankAccountsInfo,
+ parsePaytoUri,
+ stringifyPaytoUri,
+} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { useState } from "preact/hooks";
import { useAsyncAsHook } from "../../hooks/useAsyncAsHook.js";
@@ -25,7 +29,9 @@ export function useComponentState(
{ currency, onAccountAdded, onCancel }: Props,
api: typeof wxApi,
): State {
- const hook = useAsyncAsHook(() => api.wallet.call(WalletApiOperation.ListKnownBankAccounts, { currency }));
+ const hook = useAsyncAsHook(() =>
+ api.wallet.call(WalletApiOperation.ListKnownBankAccounts, { currency }),
+ );
const [payto, setPayto] = useState("");
const [alias, setAlias] = useState("");
@@ -61,34 +67,34 @@ export function useComponentState(
const normalizedPayto = stringifyPaytoUri(uri);
await api.wallet.call(WalletApiOperation.AddKnownBankAccounts, {
- alias, currency, payto: normalizedPayto
+ alias,
+ currency,
+ payto: normalizedPayto,
});
onAccountAdded(payto);
}
- const paytoUriError =
- found
- ? "that account is already present"
- : undefined;
+ const paytoUriError = found ? "that account is already present" : undefined;
- const unableToAdd = !type || !alias || paytoUriError !== undefined || uri === undefined;
+ const unableToAdd =
+ !type || !alias || paytoUriError !== undefined || uri === undefined;
const accountByType: AccountByType = {
iban: [],
bitcoin: [],
"x-taler-bank": [],
- }
+ };
- hook.response.accounts.forEach(acc => {
- accountByType[acc.uri.targetType].push(acc)
+ hook.response.accounts.forEach((acc) => {
+ accountByType[acc.uri.targetType].push(acc);
});
async function deleteAccount(account: KnownBankAccountsInfo): Promise<void> {
const payto = stringifyPaytoUri(account.uri);
await api.wallet.call(WalletApiOperation.ForgetKnownBankAccounts, {
- payto
- })
- hook?.retry()
+ payto,
+ });
+ hook?.retry();
}
return {
diff --git a/packages/taler-wallet-webextension/src/wallet/QrReader.stories.tsx b/packages/taler-wallet-webextension/src/wallet/QrReader.stories.tsx
index ba5a78570..caf833e79 100644
--- a/packages/taler-wallet-webextension/src/wallet/QrReader.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/QrReader.stories.tsx
@@ -23,7 +23,7 @@ import { createExample } from "../test-utils.js";
import { QrReaderPage } from "./QrReader.js";
export default {
- title: "wallet/qr",
+ title: "wallet/qr reader",
};
export const Reading = createExample(QrReaderPage, {});
diff --git a/packages/taler-wallet-webextension/src/wallet/index.stories.tsx b/packages/taler-wallet-webextension/src/wallet/index.stories.tsx
index d63f25ead..42808b573 100644
--- a/packages/taler-wallet-webextension/src/wallet/index.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/index.stories.tsx
@@ -25,8 +25,7 @@ import * as a4 from "./DepositPage/stories.js";
import * as a5 from "./ExchangeAddConfirm.stories.js";
import * as a6 from "./ExchangeAddSetUrl.stories.js";
import * as a7 from "./History.stories.js";
-import * as a8 from "./ProviderAddConfirmProvider.stories.js";
-import * as a9 from "./ProviderAddSetUrl.stories.js";
+import * as a8 from "./AddBackupProvider/stories.js";
import * as a10 from "./ProviderDetail.stories.js";
import * as a11 from "./ReserveCreated.stories.js";
import * as a12 from "./Settings.stories.js";
@@ -47,7 +46,6 @@ export default [
a6,
a7,
a8,
- a9,
a10,
a11,
a12,
diff --git a/packages/taler-wallet-webextension/src/wxApi.ts b/packages/taler-wallet-webextension/src/wxApi.ts
index bd1184d46..524eed990 100644
--- a/packages/taler-wallet-webextension/src/wxApi.ts
+++ b/packages/taler-wallet-webextension/src/wxApi.ts
@@ -22,13 +22,17 @@
* Imports.
*/
import {
- CoreApiResponse, Logger, NotificationType, WalletDiagnostics
+ CoreApiResponse,
+ Logger,
+ NotificationType,
+ WalletDiagnostics,
} from "@gnu-taler/taler-util";
import {
- TalerError, WalletCoreApiClient,
+ TalerError,
+ WalletCoreApiClient,
WalletCoreOpKeys,
WalletCoreRequestType,
- WalletCoreResponseType
+ WalletCoreResponseType,
} from "@gnu-taler/taler-wallet-core";
import { MessageFromBackend, platform } from "./platform/api.js";
import { nullFunction } from "./test-utils.js";
@@ -107,7 +111,6 @@ export class WxWalletCoreApiClient implements WalletCoreApiClient {
}
export class BackgroundApiClient {
-
public resetDb(): Promise<void> {
return callBackend("reset-db", {});
}
@@ -129,16 +132,16 @@ export class BackgroundApiClient {
public runGarbageCollector(): Promise<void> {
return callBackend("run-gc", {});
}
-
}
function onUpdateNotification(
messageTypes: Array<NotificationType>,
doCallback: undefined | (() => void),
): () => void {
//if no callback, then ignore
- if (!doCallback) return () => {
- return
- };
+ if (!doCallback)
+ return () => {
+ return;
+ };
const onNewMessage = (message: MessageFromBackend): void => {
const shouldNotify = messageTypes.includes(message.type);
if (shouldNotify) {
@@ -152,7 +155,6 @@ export const wxApi = {
wallet: new WxWalletCoreApiClient(),
background: new BackgroundApiClient(),
listener: {
- onUpdateNotification
- }
-}
-
+ onUpdateNotification,
+ },
+};