gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: fix #7411, also making the ba


From: gnunet
Subject: [taler-wallet-core] branch master updated: fix #7411, also making the backup payment visible
Date: Wed, 16 Nov 2022 20:05:33 +0100

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new 1a63d56bf fix #7411, also making the backup payment visible
1a63d56bf is described below

commit 1a63d56bfdd091cc7aefdf1e25f3a074bfdf5e0e
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Wed Nov 16 16:04:52 2022 -0300

    fix #7411, also making the backup payment visible
---
 packages/taler-util/src/punycode.ts                |     2 +-
 packages/taler-util/src/wallet-types.ts            |     8 +-
 .../workers/synchronousWorkerFactoryPlain.ts       |     4 +-
 .../src/operations/backup/index.ts                 |   166 +-
 .../src/operations/pay-merchant.ts                 |     2 +-
 packages/taler-wallet-core/src/wallet-api-types.ts |     3 +-
 packages/taler-wallet-core/src/wallet.ts           |     9 +-
 .../src/NavigationBar.tsx                          |    32 +-
 .../QR.stories.tsx}                                |     6 +-
 .../src/components/QR.tsx                          |     2 +-
 .../src/components/TermsOfService/index.ts         |     2 +-
 .../src/components/TermsOfService/state.ts         |    19 +-
 .../src/components/index.stories.tsx               |     3 +-
 .../src/context/devContext.ts                      |     7 +-
 .../src/cta/InvoiceCreate/state.ts                 |    87 +-
 .../src/cta/InvoicePay/index.ts                    |     2 +-
 .../src/cta/InvoicePay/state.ts                    |    26 +-
 .../src/cta/Payment/index.ts                       |     6 +-
 .../src/cta/Payment/state.ts                       |    26 +-
 .../src/cta/Payment/test.ts                        |   396 +-
 .../src/cta/Recovery/state.ts                      |     4 +-
 .../src/cta/Refund/index.ts                        |     2 +-
 .../src/cta/Refund/state.ts                        |    14 +-
 .../src/cta/Refund/test.ts                         |    61 +-
 .../taler-wallet-webextension/src/cta/Tip/index.ts |     2 +-
 .../taler-wallet-webextension/src/cta/Tip/state.ts |     8 +-
 .../taler-wallet-webextension/src/cta/Tip/test.ts  |    23 +-
 .../src/cta/TransferCreate/state.ts                |    80 +-
 .../src/cta/TransferPickup/index.ts                |     2 +-
 .../src/cta/TransferPickup/state.ts                |    16 +-
 .../src/cta/Withdraw/index.ts                      |     2 +-
 .../src/cta/Withdraw/state.ts                      |    63 +-
 .../src/cta/Withdraw/test.ts                       |   137 +-
 .../src/hooks/useAutoOpenPermissions.ts            |     4 +-
 .../src/hooks/useBackupDeviceName.ts               |     9 +-
 .../src/hooks/useClipboardPermissions.ts           |     4 +-
 .../src/hooks/useProviderStatus.ts                 |     9 +-
 .../src/hooks/useWalletDevMode.ts                  |     6 +-
 .../taler-wallet-webextension/src/i18n/strings.ts  | 10979 ++++++-------------
 .../taler-wallet-webextension/src/stories.test.ts  |     2 +-
 .../taler-wallet-webextension/src/test-utils.ts    |   126 +-
 .../taler-wallet-webextension/src/utils/index.ts   |     7 +-
 .../{ManageAccount => AddBackupProvider}/index.ts  |    67 +-
 .../src/wallet/AddBackupProvider/state.ts          |   260 +
 .../src/wallet/AddBackupProvider/stories.tsx       |   109 +
 .../src/wallet/AddBackupProvider/test.ts           |    79 +
 .../src/wallet/AddBackupProvider/views.tsx         |   172 +
 .../src/wallet/Application.tsx                     |     9 +-
 .../src/wallet/DepositPage/index.ts                |     4 +-
 .../src/wallet/DepositPage/state.ts                |    42 +-
 .../src/wallet/ExchangeSelection/index.ts          |     4 +-
 .../src/wallet/ExchangeSelection/state.ts          |    19 +-
 .../src/wallet/ExchangeSelection/views.tsx         |     7 +-
 .../src/wallet/ManageAccount/index.ts              |     8 +-
 .../src/wallet/ManageAccount/state.ts              |    34 +-
 .../src/wallet/QrReader.stories.tsx                |     2 +-
 .../src/wallet/index.stories.tsx                   |     4 +-
 packages/taler-wallet-webextension/src/wxApi.ts    |    26 +-
 58 files changed, 4640 insertions(+), 8574 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/wallet/QrReader.stories.tsx 
b/packages/taler-wallet-webextension/src/components/QR.stories.tsx
similarity index 77%
copy from packages/taler-wallet-webextension/src/wallet/QrReader.stories.tsx
copy to packages/taler-wallet-webextension/src/components/QR.stories.tsx
index ba5a78570..890cd1941 100644
--- a/packages/taler-wallet-webextension/src/wallet/QrReader.stories.tsx
+++ b/packages/taler-wallet-webextension/src/components/QR.stories.tsx
@@ -20,10 +20,12 @@
  */
 
 import { createExample } from "../test-utils.js";
-import { QrReaderPage } from "./QrReader.js";
+import { QR } from "./QR.js";
 
 export default {
   title: "wallet/qr",
 };
 
-export const Reading = createExample(QrReaderPage, {});
+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": [
-        ""
-      ],
-      "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": [
-        ""
-      ]
-    }
-  }
-};
-
-strings['es'] = {
-  "domain": "messages",
-  "locale_data": {
-    "messages": {
-      "": {
-        "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"
-      ],
-      "Could not load backup providers": [
-        "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"
-      ],
-      "There was an error loading the provider detail for &quot; %1$s&quot;": [
-        "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"
-      ],
-      "This provider has reported an 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"
-      ],
-      "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."
-      ],
-      "This page has a withdrawal action.": [
-        "Esta página tiene una acción de retirada."
-      ],
-      "This page has a tip action.": [
-        "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"
-      ],
-      "This page has a refund action.": [
-        "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "Could not load the transaction information": [
-        "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "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."
-      ],
-      "The refund is in progress.": [
-        "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"
-      ],
-      "Could not load tip status": [
-        "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"
-      ],
-      "I accept the exchange terms of service": [
-        "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"
-      ],
-      "Review new version of terms of service": [
-        "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "Could not get the info from the 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"
-      ],
-      "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"
-      ],
-      "Could not finish the invoice creation": [
-        "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"
-      ],
-      "Could not finish the transfer creation": [
-        "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"
-      ],
-      "Could not load deposit balance": [
-        "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "This exchange doesn&apos;t match the expected currency %1$s": [
-        "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"
-      ],
-      "Could not load the list of transactions": [
-        "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"
-      ],
-      "Could not get provider information": [
-        "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"
-      ],
-      "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"
-      ],
-      "%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"
-      ],
-      "Could not parse the payto 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"
-      ],
-      "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."
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "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!"
-      ],
-      "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"
-      ],
-      "Learn how to top up your wallet balance": [
-        "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "Scan a QR code or enter taler:// URI below": [
-        "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"
-      ],
-      "Could not load list of 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:"
-      ],
-      "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"
-      ],
-      "Specify the amount and the destination": [
-        "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"
-      ],
-      "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"
-      ],
-      "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"
-      ],
-      "Import backup, show info": [
-        "Importar copia de seguridad, mostrar información"
-      ],
-      "All done, your transaction is in progress": [
-        "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"
-      ]
-    }
-  }
-};
-
-strings['fr'] = {
-  "domain": "messages",
-  "locale_data": {
-    "messages": {
-      "": {
-        "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ]
-    }
-  }
-};
-
-strings['it'] = {
-  "domain": "messages",
-  "locale_data": {
-    "messages": {
-      "": {
-        "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ]
-    }
-  }
-};
-
-strings['ja'] = {
-  "domain": "messages",
-  "locale_data": {
-    "messages": {
-      "": {
-        "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ]
-    }
-  }
-};
-
-strings['sv'] = {
-  "domain": "messages",
-  "locale_data": {
-    "messages": {
-      "": {
-        "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ],
-      "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.": [
-        "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ]
-    }
-  }
-};
-
-strings['tr'] = {
-  "domain": "messages",
-  "locale_data": {
-    "messages": {
-      "": {
-        "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"
-      ],
-      "Could not load backup providers": [
-        "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"
-      ],
-      "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."
-      ],
-      "This page has a withdrawal action.": [
-        "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"
-      ],
-      "This page has a refund action.": [
-        "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": [
-        ""
-      ],
-      "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"
+        "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": [""],
+    },
+  },
+};
+
+strings["es"] = {
+  domain: "messages",
+  locale_data: {
+    messages: {
+      "": {
+        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"],
+      "Could not load backup providers": [
+        "No se pudo cargar los proveedores de copias de seguridad",
       ],
-      "Price": [
-        ""
+      "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"],
+      "There was an error loading the provider detail for &quot; %1$s&quot;": [
+        'Hubo un error cargando los detalles del proveedor para "%1$s"',
       ],
-      "Refunded": [
-        ""
+      "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"],
+      "This provider has reported an error": [
+        "Este proveedor ha reportado un error",
       ],
-      "Delivery": [
-        ""
+      "There is conflict with another backup from %1$s": [
+        "Hay un conflicto con otra copia de seguridad de %1$s",
       ],
-      "Total transfer": [
-        "Çekildi"
+      "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."],
+      "This page has a withdrawal action.": [
+        "Esta página tiene una acción de retirada.",
       ],
-      "Could not load pay status": [
-        ""
+      "This page has a tip action.": [
+        "Esta página tiene una acción de propina.",
       ],
-      "Digital cash payment": [
-        ""
+      "This page has a notify reserve action.": [
+        "Esta página tiene una acción de notificación de reserva.",
       ],
-      "Purchase": [
-        ""
+      Notify: ["Notificar"],
+      "This page has a refund action.": [
+        "Esta página tiene una acción de devolución.",
       ],
-      "Receipt": [
-        ""
+      "This page has a malformed taler uri.": [
+        "Esta página tiene una URI de Taler malformada.",
       ],
-      "Valid until": [
-        ""
+      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",
       ],
-      "List of products": [
-        ""
+      "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"],
+      "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"],
+      "Could not load the transaction information": [
+        "No se pudo cargar información de la transacción",
       ],
-      "free": [
-        ""
+      "There was an error trying to complete the transaction": [
+        "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"],
       "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": [
-        ""
-      ],
+        "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.": [
-        ""
-      ],
-      "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": [
-        ""
-      ],
+        "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": [
-        "Bakiye sayfası yüklenemedi"
-      ],
-      "Digital cash refund": [
-        ""
-      ],
-      "You&apos;ve ignored the tip.": [
-        ""
+        "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.": [
-        ""
-      ],
-      "Total to refund": [
-        "Ödeme iadesi"
+        "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.": [
-        ""
-      ],
-      "Order amount": [
-        "Ücreti yenile"
-      ],
-      "Already refunded": [
-        "Ödeme iadesi"
-      ],
-      "Refund offered": [
-        ""
-      ],
-      "Accept &nbsp; %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": [
-        "Bakiye sayfası yüklenemedi"
-      ],
-      "Digital cash tip": [
-        ""
+        "No se pudo cargar el estado de la propina",
       ],
+      "Digital cash tip": ["Propina con dinero digital"],
       "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"
-      ],
+        "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": [
-        "Hizmet şartlarını kabul ediyorum"
+        "Yo acepto los términos de servicio del exchange",
       ],
       "Exchange doesn&apos;t have terms of service": [
-        "Exchange'in hizmet şartları yok"
-      ],
-      "Review exchange terms of service": [
-        "Exchange'in hizmet şartlarını inceleyin"
+        "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": [
-        "Hizmet şartlarının yeni sürümünü inceleyin"
+        "Revisar los nuevos términos de servicio",
       ],
       "The exchange reply with a empty terms of service": [
-        ""
-      ],
-      "Download Terms of Service": [
-        ""
-      ],
-      "Hide 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"],
       "Could not load exchange fees": [
-        "Bakiye sayfası yüklenemedi"
-      ],
-      "Close": [
-        ""
-      ],
-      "could not find any exchange": [
-        "Bakiye sayfası yüklenemedi"
+        "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ],
+        "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",
       ],
       "Could not get info of withdrawal": [
-        "Para çekme işlemi için ayrıntılar alınamadı:"
-      ],
-      "Digital cash withdrawal": [
-        ""
+        "No se pudo obtener la información de retiro",
       ],
+      "Digital cash withdrawal": ["Retirada de dinero digital"],
       "Could not finish the withdrawal operation": [
-        ""
-      ],
-      "Age restriction": [
-        ""
-      ],
-      "Withdraw &nbsp; %1$s": [
-        ""
-      ],
-      "Withdraw to a mobile phone": [
-        ""
-      ],
-      "Digital invoice": [
-        ""
+        "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": [
-        ""
-      ],
-      "Create": [
-        ""
+        "No se pudo completar la creación de la factura",
       ],
+      Create: ["Crear"],
       "Could not finish the payment operation": [
-        "Para çekme işlemi için ayrıntılar alınamadı:"
-      ],
-      "Digital cash transfer": [
-        ""
+        "No se pudo completar la operación de pago",
       ],
+      "Digital cash transfer": ["Transferencia de dinero digital"],
       "Could not finish the transfer creation": [
-        "Para çekme işlemi için ayrıntılar alınamadı:"
+        "No se pudo completar la operación de creación de transferencia",
       ],
       "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": [
-        ""
-      ],
+        "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": [
-        "Bakiye sayfası yüklenemedi"
+        "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",
       ],
       "There is no enough balance to make a deposit for currency %1$s": [
-        ""
-      ],
-      "Send %1$s to your account": [
-        ""
+        "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": [
-        ""
-      ],
-      "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": [
-        ""
-      ],
+        "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.": [
-        ""
-      ],
-      "Unable add this account": [
-        ""
-      ],
-      "Select account type": [
-        ""
-      ],
-      "Review terms of service": [
-        ""
-      ],
-      "Exchange URL": [
-        ""
-      ],
-      "Add exchange": [
-        ""
-      ],
-      "Add new exchange": [
-        ""
-      ],
-      "Add exchange for %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",
       ],
       "This exchange doesn&apos;t match the expected currency %1$s": [
-        ""
+        "Este exchange no coincide con la divisa %1$s esperada",
       ],
       "Unable to verify this exchange": [
-        ""
-      ],
-      "Unable to add this exchange": [
-        ""
-      ],
-      "loading": [
-        ""
-      ],
-      "Version": [
-        ""
-      ],
-      "Next": [
-        ""
-      ],
-      "Waiting for confirmation": [
-        ""
-      ],
-      "PENDING": [
-        ""
-      ],
+        "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",
       ],
       "Your transaction history is empty for this currency.": [
-        ""
-      ],
-      "Add backup provider": [
-        ""
+        "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",
       ],
       "Backup providers may charge for their service": [
-        ""
-      ],
-      "URL": [
-        ""
-      ],
-      "Name": [
-        ""
-      ],
-      "Provider URL": [
-        ""
+        "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": [
-        "Hizmet şartlarını kabul ediyorum"
-      ],
-      "Pricing": [
-        ""
-      ],
-      "free of charge": [
-        ""
-      ],
-      "%1$s per year of service": [
-        ""
-      ],
-      "Storage": [
-        ""
+        "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": [
-        ""
-      ],
-      "Accept terms of service": [
-        ""
+        "%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": [
-        ""
-      ],
-      "Please check the uri": [
-        ""
+        "No se pudo obtener la información de la URI payto",
       ],
+      "Please check the uri": ["Revisar la 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": [
-        ""
-      ],
+        "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": [
-        ""
-      ],
-      "Enabling this option below will make using the wallet faster, but 
requires more permissions from your browser.": [
-        ""
+        "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": [
-        ""
-      ],
-      "Trust": [
-        ""
-      ],
-      "No exchange yet": [
-        ""
-      ],
-      "Term of Service": [
-        ""
-      ],
-      "ok": [
-        ""
-      ],
-      "changed": [
-        ""
-      ],
-      "not accepted": [
-        ""
-      ],
+        "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)": [
-        ""
-      ],
-      "Add an exchange": [
-        ""
-      ],
-      "Troubleshooting": [
-        ""
-      ],
-      "Developer mode": [
-        ""
+        "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": [
-        ""
-      ],
-      "Display": [
-        ""
-      ],
-      "Current Language": [
-        ""
-      ],
-      "Wallet Core": [
-        ""
-      ],
-      "Web Extension": [
-        ""
-      ],
-      "Exchange compatibility": [
-        ""
-      ],
-      "Merchant compatibility": [
-        ""
-      ],
-      "Bank compatibility": [
-        ""
-      ],
-      "Browser Extension Installed!": [
-        ""
-      ],
+        "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 .": [
-        ""
-      ],
-      "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": [
-        ""
-      ],
+        "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",
       ],
       "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"
-      ],
+        "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": [
-        ""
-      ],
-      "run gc": [
-        ""
-      ],
-      "import database": [
-        "veritabanını içe aktar"
-      ],
-      "export database": [
-        "veritabanını dışa aktar"
+        "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": [
-        "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"
-      ],
+        "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": [
-        ""
-      ],
-      "Open": [
-        ""
+        "Escanear un código QR o ingresar taler:// URI debajo",
       ],
+      Open: ["Abrir"],
       "URI is not valid. Taler URI should start with `taler://`": [
-        ""
-      ],
-      "Try another": [
-        ""
+        "El URI no es válido. Taler URI debería comenzar con `taler://`",
       ],
+      "Try another": ["Intentar otro"],
       "Could not load list of exchange": [
-        "Bakiye sayfası yüklenemedi"
+        "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": [
-        ""
+      "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 amount and the origin": [
-        ""
+      "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",
       ],
-      "Change currency": [
-        ""
+      "Use previous destinations:": ["Usar destinos previos:"],
+      "Or specify the destination of the money": [
+        "O especificar el destino del dinero",
       ],
-      "Use previous origins:": [
-        ""
+      "Specify the destination of the money": [
+        "Especificar el destino del dinero",
       ],
-      "Or specify the origin of the money": [
-        ""
+      "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",
       ],
-      "Specify the origin of the money": [
-        ""
+      "Digital wallet recovery": ["Recuperación de billetera digital"],
+      "Import backup, show info": [
+        "Importar copia de seguridad, mostrar información",
       ],
-      "From my bank account": [
-        "Banka hesabına havale yap"
+      "All done, your transaction is in progress": [
+        "Todo completo, su transacción está en progreso",
       ],
-      "From another wallet": [
-        ""
+      Edit: ["Editar"],
+      "Could not load the list of known exchanges": [
+        "No se pudo cargar la lista de exchange conocidos",
       ],
-      "currency not provided": [
-        ""
+    },
+  },
+};
+
+strings["fr"] = {
+  domain: "messages",
+  locale_data: {
+    messages: {
+      "": {
+        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": [""],
+      "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": [""],
+      "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": [""],
+    },
+  },
+};
+
+strings["it"] = {
+  domain: "messages",
+  locale_data: {
+    messages: {
+      "": {
+        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": [""],
+      "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": [""],
+      "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": [""],
+    },
+  },
+};
+
+strings["ja"] = {
+  domain: "messages",
+  locale_data: {
+    messages: {
+      "": {
+        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": [""],
+      "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": [""],
+      "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": [""],
+    },
+  },
+};
+
+strings["sv"] = {
+  domain: "messages",
+  locale_data: {
+    messages: {
+      "": {
+        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": [""],
+      "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": [""],
+      "You have no balance for this currency. Withdraw digital cash first.": [
+        "",
       ],
-      "Specify the amount and the destination": [
-        ""
+      "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"],
+      "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": [""],
+      "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": [""],
+    },
+  },
+};
+
+strings["tr"] = {
+  domain: "messages",
+  locale_data: {
+    messages: {
+      "": {
+        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"],
+      "Could not load backup providers": [
+        "Yedekleme sağlayıcıları yüklenemedi",
       ],
-      "Use previous destinations:": [
-        ""
+      "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"],
+      "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."],
+      "This page has a withdrawal action.": [
+        "Bu sayfada para çekme eylemi var.",
       ],
-      "Or specify the destination of the money": [
-        ""
+      "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.",
       ],
-      "Specify the destination of the money": [
-        ""
+      Notify: ["Bildirin"],
+      "This page has a refund action.": [
+        "Bu sayfada bir geri ödeme eylemi var.",
       ],
-      "To my bank account": [
-        "Banka hesabına havale yap"
+      "This page has a malformed taler uri.": [
+        "Bu sayfada hatalı biçimlendirilmiş taler uri var.",
       ],
-      "To another wallet": [
-        ""
+      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": [""],
+      "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"],
+      "I accept the exchange terms of service": [
+        "Hizmet şartlarını kabul ediyorum",
       ],
-      "Could not load backup recovery information": [
-        "Yedekleme sağlayıcıları yüklenemedi"
+      "Exchange doesn&apos;t have terms of service": [
+        "Exchange'in hizmet şartları yok",
       ],
-      "Digital wallet recovery": [
-        ""
+      "Review exchange terms of service": [
+        "Exchange'in hizmet şartlarını inceleyin",
       ],
-      "Import backup, show info": [
-        ""
+      "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": [""],
+      "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: [""],
+      "Could not finish the payment operation": [
+        "Para çekme işlemi için ayrıntılar alınamadı:",
       ],
-      "All done, your transaction is in progress": [
-        ""
+      "Digital cash transfer": [""],
+      "Could not finish the transfer creation": [
+        "Para çekme işlemi için ayrıntılar alınamadı:",
       ],
-      "Edit": [
-        "Lütfen bir exchange seçin. Detayları seçiminizden önce 
inceleyebilirsiniz."
+      "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": [""],
+      "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": [""],
+      "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"],
+      "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": [""],
+      "Could not load backup recovery information": [
+        "Yedekleme sağlayıcıları yüklenemedi",
       ],
-      "Could not load the list of known exchanges": [
-        ""
-      ]
-    }
-  }
+      "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.",
+      ],
+      "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/ManageAccount/index.ts 
b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/index.ts
similarity index 55%
copy from packages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts
copy to packages/taler-wallet-webextension/src/wallet/AddBackupProvider/index.ts
index cd591be74..3205588af 100644
--- a/packages/taler-wallet-webextension/src/wallet/ManageAccount/index.ts
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/index.ts
@@ -14,26 +14,40 @@
  GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
 
-import { KnownBankAccountsInfo } from "@gnu-taler/taler-util";
+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,
-  SelectFieldHandler,
-  TextFieldHandler
+  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, ReadyView } from "./views.js";
+import {
+  LoadingUriView,
+  SelectProviderView,
+  ConfirmProviderView,
+} from "./views.js";
 
 export interface Props {
   currency: string;
-  onAccountAdded: (uri: string) => void;
-  onCancel: () => void;
+  onBack: () => Promise<void>;
+  onComplete: (pid: string) => Promise<void>;
+  onPaymentRequired: (uri: string) => Promise<void>;
 }
 
-export type State = State.Loading | State.LoadingUriError | State.Ready;
+export type State =
+  | State.Loading
+  | State.LoadingUriError
+  | State.ConfirmProvider
+  | State.SelectProvider;
 
 export namespace State {
   export interface Loading {
@@ -46,35 +60,36 @@ export namespace State {
     error: HookError;
   }
 
-  export interface BaseInfo {
-    error: undefined;
+  export interface ConfirmProvider {
+    status: "confirm-provider";
+    error: undefined | TalerErrorDetail;
+    url: string;
+    provider: SyncTermsOfServiceResponse;
+    tos: ToggleHandler;
+    onCancel: ButtonHandler;
+    onAccept: ButtonHandler;
   }
-  export interface Ready extends BaseInfo {
-    status: "ready";
-    error: undefined;
-    currency: string;
-    accountType: SelectFieldHandler;
-    uri: TextFieldHandler;
-    alias: TextFieldHandler;
-    onAccountAdded: ButtonHandler;
+
+  export interface SelectProvider {
+    status: "select-provider";
+    url: TextFieldHandler;
+    urlOk: boolean;
+    name: TextFieldHandler;
+    onConfirm: ButtonHandler;
     onCancel: ButtonHandler;
-    accountByType: AccountByType,
-    deleteAccount: (a: KnownBankAccountsInfo) => Promise<void>,
+    error: undefined | TalerErrorDetail;
   }
 }
 
-export type AccountByType = {
-  [key: string]: KnownBankAccountsInfo[]
-};
-
 const viewMapping: StateViewMap<State> = {
   loading: Loading,
   "loading-error": LoadingUriView,
-  ready: ReadyView,
+  "select-provider": SelectProviderView,
+  "confirm-provider": ConfirmProviderView,
 };
 
-export const ManageAccountPage = compose(
-  "ManageAccountPage",
+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,
+  },
+};

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]