gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-wallet-webex] branch master updated (a4e69662 -> 42e


From: gnunet
Subject: [GNUnet-SVN] [taler-wallet-webex] branch master updated (a4e69662 -> 42eb17e7)
Date: Thu, 22 Feb 2018 10:26:26 +0100

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

dold pushed a change to branch master
in repository wallet-webex.

    from a4e69662 i18n fixes
     new f4d39c10 Swedish translation, i18n fixes
     new b15f40ae version bump
     new 42eb17e7 i18n fixes

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 manifest.json                              |   4 +-
 node_modules/browserify-aes/readme.md      |  18 --
 node_modules/evp_bytestokey/readme.md      |  13 -
 node_modules/pogen/pogen.js                |   5 +-
 node_modules/pogen/pogen.ts                |   9 +-
 src/i18n.tsx                               |   6 +-
 src/i18n/de.po                             | 125 ++++----
 src/i18n/en-US.po                          | 112 +++----
 src/i18n/fr.po                             | 112 +++----
 src/i18n/it.po                             | 112 +++----
 src/i18n/strings.ts                        | 450 ++++++++++++++++++++++++-----
 src/i18n/{de.po => sv.po}                  | 270 +++++++++--------
 src/i18n/taler-wallet-webex.pot            | 112 +++----
 src/webex/pages/confirm-contract.tsx       |  11 +-
 src/webex/pages/confirm-create-reserve.tsx |  18 +-
 src/webex/pages/popup.tsx                  |  19 +-
 tooling/pogen/pogen.js                     |   5 +-
 tooling/pogen/pogen.ts                     |   5 +-
 18 files changed, 870 insertions(+), 536 deletions(-)
 delete mode 100644 node_modules/browserify-aes/readme.md
 delete mode 100644 node_modules/evp_bytestokey/readme.md
 copy src/i18n/{de.po => sv.po} (64%)

diff --git a/manifest.json b/manifest.json
index 23cb3dfe..cd818b19 100644
--- a/manifest.json
+++ b/manifest.json
@@ -4,8 +4,8 @@
   "name": "GNU Taler Wallet (git)",
   "description": "Privacy preserving and transparent payments",
   "author": "GNU Taler Developers",
-  "version": "0.6.57",
-  "version_name": "0.5.0-pre9",
+  "version": "0.6.58",
+  "version_name": "0.5.0-pre10",
 
   "minimum_chrome_version": "51",
   "minimum_opera_version": "36",
diff --git a/node_modules/browserify-aes/readme.md 
b/node_modules/browserify-aes/readme.md
deleted file mode 100644
index 1d7b0855..00000000
--- a/node_modules/browserify-aes/readme.md
+++ /dev/null
@@ -1,18 +0,0 @@
-browserify-aes
-====
-
-[![Build 
Status](https://travis-ci.org/crypto-browserify/browserify-aes.svg)](https://travis-ci.org/crypto-browserify/browserify-aes)
-
-Node style aes for use in the browser.  Implements:
-
- - createCipher
- - createCipheriv
- - createDecipher
- - createDecipheriv
- - getCiphers
-
-In node.js, the `crypto` implementation is used, in browsers it falls back to 
a pure JavaScript implementation.
-
-Much of this library has been taken from the aes implementation in 
[triplesec](https://github.com/keybase/triplesec),  a partial derivation of 
[crypto-js](https://code.google.com/p/crypto-js/).
-
-`EVP_BytesToKey` is a straight up port of the same function from OpenSSL as 
there is literally no documenation on it beyond it using 'undocumented 
extensions' for longer keys.
diff --git a/node_modules/evp_bytestokey/readme.md 
b/node_modules/evp_bytestokey/readme.md
deleted file mode 100644
index 86234dbf..00000000
--- a/node_modules/evp_bytestokey/readme.md
+++ /dev/null
@@ -1,13 +0,0 @@
-EVP_BytesToKey
-===
-
-The super secure [key derivation algorithm from 
openssl](https://wiki.openssl.org/index.php/Manual:EVP_BytesToKey(3)) (spoiler 
alert not actually secure, only every use it for compatibility reasons).
-
-Api:
-===
-
-```js
-var result = EVP_BytesToKey('password', 'salt', keyLen, ivLen);
-Buffer.isBuffer(result.password); // true
-Buffer.isBuffer(result.iv); // true
-```
diff --git a/node_modules/pogen/pogen.js b/node_modules/pogen/pogen.js
index 03cc0c34..ed634ef0 100644
--- a/node_modules/pogen/pogen.js
+++ b/node_modules/pogen/pogen.js
@@ -188,7 +188,8 @@ function processFile(sourceFile) {
                 case ts.SyntaxKind.JsxText:
                     {
                         var e = childNode;
-                        var t = e.getText().split("\n").map(trim).join("\n");
+                        var s = e.getFullText();
+                        var t = s.split("\n").map(trim).join(" ");
                         fragments.push(t);
                     }
                 case ts.SyntaxKind.JsxOpeningElement:
@@ -211,7 +212,7 @@ function processFile(sourceFile) {
             }
         };
         ts.forEachChild(node, process);
-        return fragments.join("");
+        return fragments.join("").trim().replace(/ +/g, " ");
     }
     function getJsxSingular(node) {
         var res;
diff --git a/node_modules/pogen/pogen.ts b/node_modules/pogen/pogen.ts
index 5721b571..0903b9db 100644
--- a/node_modules/pogen/pogen.ts
+++ b/node_modules/pogen/pogen.ts
@@ -211,7 +211,14 @@ export function processFile(sourceFile: ts.SourceFile) {
         case ts.SyntaxKind.JsxText:
         {
           let e = childNode as ts.JsxText;
-          let t = e.getText().split("\n").map(trim).join("\n");
+          let s = e.getText();
+          let t = s.split("\n").map(trim).join("\n");
+          if (s.length >= 1 && (s[0] === "\n" || s[0] === " ")) {
+            t = " " + t;
+          }
+          if (s.length >= 1 && (s[s.length-1] === "\n" || s[s.length-1] === " 
")) {
+            t = t + " ";
+          }
           fragments.push(t);
         }
         case ts.SyntaxKind.JsxOpeningElement:
diff --git a/src/i18n.tsx b/src/i18n.tsx
index cbc68709..540e3a9d 100644
--- a/src/i18n.tsx
+++ b/src/i18n.tsx
@@ -41,6 +41,8 @@ if (!strings[lang]) {
   console.log(`language ${lang} not found, defaulting to english`);
 }
 
+lang = "sv";
+
 const jed = new jedLib.Jed(strings[lang]);
 
 
@@ -82,7 +84,9 @@ function stringifyChildren(children: any): string {
     }
     return `%${n++}$s`;
   });
-  return ss.join("");
+  const s = ss.join("").replace(/ +/g, " ").trim();
+  console.log("translation lookup", JSON.stringify(s));
+  return s;
 }
 
 
diff --git a/src/i18n/de.po b/src/i18n/de.po
index a43eb936..172f8f11 100644
--- a/src/i18n/de.po
+++ b/src/i18n/de.po
@@ -29,7 +29,7 @@ msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:76
 #, c-format
-msgid "show more details\n"
+msgid "show more details"
 msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:90
@@ -74,9 +74,9 @@ msgid ""
 msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:355
-#, c-format
+#, fuzzy, c-format
 msgid "Aborting payment ..."
-msgstr ""
+msgstr "Bezahlung bestätigen"
 
 #: src/webex/pages/confirm-contract.tsx:357
 #, c-format
@@ -84,9 +84,9 @@ msgid "Payment aborted!"
 msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:360
-#, c-format
+#, fuzzy, c-format
 msgid "Retry Payment"
-msgstr ""
+msgstr "Bezahlung bestätigen"
 
 #: src/webex/pages/confirm-contract.tsx:363
 #, fuzzy, c-format
@@ -94,8 +94,18 @@ msgid "Abort Payment"
 msgstr "Bezahlung bestätigen"
 
 #: src/webex/pages/confirm-contract.tsx:372
+#, fuzzy, c-format
+msgid "The merchant%1$soffers you to purchase:"
+msgstr "Der Händler %1$s möchte einen Vertrag über %2$s mit Ihnen abschließen."
+
+#: src/webex/pages/confirm-contract.tsx:381
+#, c-format
+msgid "The total price is%1$s (plus%2$sfees)."
+msgstr ""
+
+#: src/webex/pages/confirm-contract.tsx:385
 #, c-format
-msgid "The merchant%1$s offers you to purchase:\n"
+msgid "The total price is%1$s."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:128
@@ -115,71 +125,74 @@ msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:210
 #, c-format
-msgid "The exchange is trusted by the wallet.\n"
+msgid "The exchange is trusted by the wallet."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:216
 #, c-format
-msgid "The exchange is audited by a trusted auditor.\n"
+msgid "The exchange is audited by a trusted auditor."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:222
 #, c-format
 msgid ""
-"Warning:  The exchange is neither directly trusted nor audited by a trusted "
-"auditor.\n"
-"If you withdraw from this exchange, it will be trusted in the future.\n"
+"Warning: The exchange is neither directly trusted nor audited by a trusted "
+"auditor. If you withdraw from this exchange, it will be trusted in the "
+"future."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:231
 #, c-format
 msgid ""
-"Using exchange provider%1$s.\n"
-"The exchange provider will charge\n"
-" %2$s in fees.\n"
+"Using exchange provider%1$s. The exchange provider will charge %2$s in fees."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:245
+#: src/webex/pages/confirm-create-reserve.tsx:243
 #, c-format
-msgid ""
-"Waiting for a response from\n"
-" %1$s"
+msgid "Waiting for a response from %1$s %2$s"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:262
+#: src/webex/pages/confirm-create-reserve.tsx:260
 #, c-format
 msgid ""
 "Information about fees will be available when an exchange provider is "
 "selected."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:281
+#: src/webex/pages/confirm-create-reserve.tsx:279
 #, c-format
 msgid ""
-"Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange has a "
-"higher, incompatible\n"
-"protocol version (%3$s).\n"
+"Your wallet (protocol version%1$s) might be outdated.%2$s The exchange has a "
+"higher, incompatible protocol version (%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:292
+#: src/webex/pages/confirm-create-reserve.tsx:290
 #, c-format
 msgid ""
-"The chosen exchange (protocol version%1$smight be outdated.%2$sThe exchange "
-"has a lower, incompatible\n"
-"protocol version than your wallet (protocol version%3$s).\n"
+"The chosen exchange (protocol version%1$smight be outdated.%2$s The exchange "
+"has a lower, incompatible protocol version than your wallet (protocol version"
+"%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:311
+#: src/webex/pages/confirm-create-reserve.tsx:309
 #, c-format
 msgid "Accept fees and withdraw"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:316
+#: src/webex/pages/confirm-create-reserve.tsx:314
 #, c-format
 msgid "Change Exchange Provider"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:343
+#: src/webex/pages/confirm-create-reserve.tsx:335
+#, c-format
+msgid ""
+"Please select an exchange.  You can review the details before after your "
+"selection."
+msgstr ""
+
+#: src/webex/pages/confirm-create-reserve.tsx:341
+#: src/webex/pages/confirm-create-reserve.tsx:353
 #, c-format
 msgid "Select%1$s"
 msgstr ""
@@ -239,19 +252,17 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:253
 #, fuzzy, c-format
-msgid ""
-"You have no balance to show. Need some\n"
-" %1$s getting started?\n"
+msgid "You have no balance to show. Need some %1$s getting started?"
 msgstr "Sie haben kein Digitalgeld. Wollen Sie %1$s? abheben?"
 
 #: src/webex/pages/popup.tsx:270
 #, c-format
-msgid "%1$s incoming\n"
+msgid "%1$s incoming"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:283
 #, c-format
-msgid "%1$s being spent\n"
+msgid "%1$s being spent"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:310
@@ -276,21 +287,17 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:351
 #, fuzzy, c-format
-msgid ""
-"Bank requested reserve (%1$s) for\n"
-" %2$s.\n"
+msgid "Bank requested reserve (%1$s) for %2$s."
 msgstr "Bank bestätig anlegen der Reserve (%1$s) bei %2$s"
 
 #: src/webex/pages/popup.tsx:361
 #, fuzzy, c-format
-msgid ""
-"Started to withdraw\n"
-" %1$s%2$sfrom%3$s(%4$s).\n"
+msgid "Started to withdraw %1$s from%2$s(%3$s)."
 msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
 
 #: src/webex/pages/popup.tsx:370
 #, fuzzy, c-format
-msgid "Merchant%1$soffered%2$scontract%3$s.\n"
+msgid "Merchant%1$soffered contract%2$s."
 msgstr ""
 "%1$s\n"
 "               möchte einen Vertrag über %2$s\n"
@@ -298,43 +305,51 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:381
 #, fuzzy, c-format
-msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
+msgid "Withdrew%1$sfrom%2$s(%3$s)."
 msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
 
 #: src/webex/pages/popup.tsx:391
 #, fuzzy, c-format
-msgid ""
-"Paid%1$sto merchant%2$s.\n"
-"%3$s(%4$s)\n"
+msgid "Paid%1$sto merchant%2$s. %3$s (%4$s)"
 msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
 
 #: src/webex/pages/popup.tsx:401
-#, c-format
-msgid "Merchant%1$sgave a refund over%2$s.\n"
+#, fuzzy, c-format
+msgid "Merchant%1$sgave a refund over%2$s."
 msgstr ""
+"%1$s\n"
+"               möchte einen Vertrag über %2$s\n"
+"               mit Ihnen abschließen."
 
 #: src/webex/pages/popup.tsx:411
+#, c-format
+msgid "tip"
+msgstr ""
+
+#: src/webex/pages/popup.tsx:414
 #, fuzzy, c-format
-msgid ""
-"Merchant%1$sgave\n"
-"a%2$sof%3$s.\n"
-"%4$s%5$s"
+msgid "Merchant%1$sgave a%2$sof%3$s."
 msgstr ""
 "%1$s\n"
 "               möchte einen Vertrag über %2$s\n"
 "               mit Ihnen abschließen."
 
-#: src/webex/pages/popup.tsx:421
+#: src/webex/pages/popup.tsx:419
+#, c-format
+msgid "You did not accept the tip yet."
+msgstr ""
+
+#: src/webex/pages/popup.tsx:424
 #, c-format
 msgid "Unknown event (%1$s)"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:464
+#: src/webex/pages/popup.tsx:467
 #, c-format
 msgid "Error: could not retrieve event history"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:489
+#: src/webex/pages/popup.tsx:492
 #, c-format
 msgid "Your wallet has no events recorded."
 msgstr "Ihre Geldbörse verzeichnet keine Vorkommnisse."
diff --git a/src/i18n/en-US.po b/src/i18n/en-US.po
index 8541542f..5ca2bea7 100644
--- a/src/i18n/en-US.po
+++ b/src/i18n/en-US.po
@@ -29,7 +29,7 @@ msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:76
 #, c-format
-msgid "show more details\n"
+msgid "show more details"
 msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:90
@@ -95,7 +95,17 @@ msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:372
 #, c-format
-msgid "The merchant%1$s offers you to purchase:\n"
+msgid "The merchant%1$soffers you to purchase:"
+msgstr ""
+
+#: src/webex/pages/confirm-contract.tsx:381
+#, c-format
+msgid "The total price is%1$s (plus%2$sfees)."
+msgstr ""
+
+#: src/webex/pages/confirm-contract.tsx:385
+#, c-format
+msgid "The total price is%1$s."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:128
@@ -115,71 +125,74 @@ msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:210
 #, c-format
-msgid "The exchange is trusted by the wallet.\n"
+msgid "The exchange is trusted by the wallet."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:216
 #, c-format
-msgid "The exchange is audited by a trusted auditor.\n"
+msgid "The exchange is audited by a trusted auditor."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:222
 #, c-format
 msgid ""
-"Warning:  The exchange is neither directly trusted nor audited by a trusted "
-"auditor.\n"
-"If you withdraw from this exchange, it will be trusted in the future.\n"
+"Warning: The exchange is neither directly trusted nor audited by a trusted "
+"auditor. If you withdraw from this exchange, it will be trusted in the "
+"future."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:231
 #, c-format
 msgid ""
-"Using exchange provider%1$s.\n"
-"The exchange provider will charge\n"
-" %2$s in fees.\n"
+"Using exchange provider%1$s. The exchange provider will charge %2$s in fees."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:245
+#: src/webex/pages/confirm-create-reserve.tsx:243
 #, c-format
-msgid ""
-"Waiting for a response from\n"
-" %1$s"
+msgid "Waiting for a response from %1$s %2$s"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:262
+#: src/webex/pages/confirm-create-reserve.tsx:260
 #, c-format
 msgid ""
 "Information about fees will be available when an exchange provider is "
 "selected."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:281
+#: src/webex/pages/confirm-create-reserve.tsx:279
 #, c-format
 msgid ""
-"Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange has a "
-"higher, incompatible\n"
-"protocol version (%3$s).\n"
+"Your wallet (protocol version%1$s) might be outdated.%2$s The exchange has a "
+"higher, incompatible protocol version (%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:292
+#: src/webex/pages/confirm-create-reserve.tsx:290
 #, c-format
 msgid ""
-"The chosen exchange (protocol version%1$smight be outdated.%2$sThe exchange "
-"has a lower, incompatible\n"
-"protocol version than your wallet (protocol version%3$s).\n"
+"The chosen exchange (protocol version%1$smight be outdated.%2$s The exchange "
+"has a lower, incompatible protocol version than your wallet (protocol version"
+"%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:311
+#: src/webex/pages/confirm-create-reserve.tsx:309
 #, c-format
 msgid "Accept fees and withdraw"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:316
+#: src/webex/pages/confirm-create-reserve.tsx:314
 #, c-format
 msgid "Change Exchange Provider"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:343
+#: src/webex/pages/confirm-create-reserve.tsx:335
+#, c-format
+msgid ""
+"Please select an exchange.  You can review the details before after your "
+"selection."
+msgstr ""
+
+#: src/webex/pages/confirm-create-reserve.tsx:341
+#: src/webex/pages/confirm-create-reserve.tsx:353
 #, c-format
 msgid "Select%1$s"
 msgstr ""
@@ -239,19 +252,17 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:253
 #, c-format
-msgid ""
-"You have no balance to show. Need some\n"
-" %1$s getting started?\n"
+msgid "You have no balance to show. Need some %1$s getting started?"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:270
 #, c-format
-msgid "%1$s incoming\n"
+msgid "%1$s incoming"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:283
 #, c-format
-msgid "%1$s being spent\n"
+msgid "%1$s being spent"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:310
@@ -276,59 +287,60 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:351
 #, c-format
-msgid ""
-"Bank requested reserve (%1$s) for\n"
-" %2$s.\n"
+msgid "Bank requested reserve (%1$s) for %2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:361
 #, c-format
-msgid ""
-"Started to withdraw\n"
-" %1$s%2$sfrom%3$s(%4$s).\n"
+msgid "Started to withdraw %1$s from%2$s(%3$s)."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:370
 #, c-format
-msgid "Merchant%1$soffered%2$scontract%3$s.\n"
+msgid "Merchant%1$soffered contract%2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:381
 #, c-format
-msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
+msgid "Withdrew%1$sfrom%2$s(%3$s)."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:391
 #, c-format
-msgid ""
-"Paid%1$sto merchant%2$s.\n"
-"%3$s(%4$s)\n"
+msgid "Paid%1$sto merchant%2$s. %3$s (%4$s)"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:401
 #, c-format
-msgid "Merchant%1$sgave a refund over%2$s.\n"
+msgid "Merchant%1$sgave a refund over%2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:411
 #, c-format
-msgid ""
-"Merchant%1$sgave\n"
-"a%2$sof%3$s.\n"
-"%4$s%5$s"
+msgid "tip"
+msgstr ""
+
+#: src/webex/pages/popup.tsx:414
+#, c-format
+msgid "Merchant%1$sgave a%2$sof%3$s."
+msgstr ""
+
+#: src/webex/pages/popup.tsx:419
+#, c-format
+msgid "You did not accept the tip yet."
 msgstr ""
 
-#: src/webex/pages/popup.tsx:421
+#: src/webex/pages/popup.tsx:424
 #, c-format
 msgid "Unknown event (%1$s)"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:464
+#: src/webex/pages/popup.tsx:467
 #, c-format
 msgid "Error: could not retrieve event history"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:489
+#: src/webex/pages/popup.tsx:492
 #, c-format
 msgid "Your wallet has no events recorded."
 msgstr ""
diff --git a/src/i18n/fr.po b/src/i18n/fr.po
index a4bffb01..38f817fa 100644
--- a/src/i18n/fr.po
+++ b/src/i18n/fr.po
@@ -29,7 +29,7 @@ msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:76
 #, c-format
-msgid "show more details\n"
+msgid "show more details"
 msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:90
@@ -95,7 +95,17 @@ msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:372
 #, c-format
-msgid "The merchant%1$s offers you to purchase:\n"
+msgid "The merchant%1$soffers you to purchase:"
+msgstr ""
+
+#: src/webex/pages/confirm-contract.tsx:381
+#, c-format
+msgid "The total price is%1$s (plus%2$sfees)."
+msgstr ""
+
+#: src/webex/pages/confirm-contract.tsx:385
+#, c-format
+msgid "The total price is%1$s."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:128
@@ -115,71 +125,74 @@ msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:210
 #, c-format
-msgid "The exchange is trusted by the wallet.\n"
+msgid "The exchange is trusted by the wallet."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:216
 #, c-format
-msgid "The exchange is audited by a trusted auditor.\n"
+msgid "The exchange is audited by a trusted auditor."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:222
 #, c-format
 msgid ""
-"Warning:  The exchange is neither directly trusted nor audited by a trusted "
-"auditor.\n"
-"If you withdraw from this exchange, it will be trusted in the future.\n"
+"Warning: The exchange is neither directly trusted nor audited by a trusted "
+"auditor. If you withdraw from this exchange, it will be trusted in the "
+"future."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:231
 #, c-format
 msgid ""
-"Using exchange provider%1$s.\n"
-"The exchange provider will charge\n"
-" %2$s in fees.\n"
+"Using exchange provider%1$s. The exchange provider will charge %2$s in fees."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:245
+#: src/webex/pages/confirm-create-reserve.tsx:243
 #, c-format
-msgid ""
-"Waiting for a response from\n"
-" %1$s"
+msgid "Waiting for a response from %1$s %2$s"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:262
+#: src/webex/pages/confirm-create-reserve.tsx:260
 #, c-format
 msgid ""
 "Information about fees will be available when an exchange provider is "
 "selected."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:281
+#: src/webex/pages/confirm-create-reserve.tsx:279
 #, c-format
 msgid ""
-"Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange has a "
-"higher, incompatible\n"
-"protocol version (%3$s).\n"
+"Your wallet (protocol version%1$s) might be outdated.%2$s The exchange has a "
+"higher, incompatible protocol version (%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:292
+#: src/webex/pages/confirm-create-reserve.tsx:290
 #, c-format
 msgid ""
-"The chosen exchange (protocol version%1$smight be outdated.%2$sThe exchange "
-"has a lower, incompatible\n"
-"protocol version than your wallet (protocol version%3$s).\n"
+"The chosen exchange (protocol version%1$smight be outdated.%2$s The exchange "
+"has a lower, incompatible protocol version than your wallet (protocol version"
+"%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:311
+#: src/webex/pages/confirm-create-reserve.tsx:309
 #, c-format
 msgid "Accept fees and withdraw"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:316
+#: src/webex/pages/confirm-create-reserve.tsx:314
 #, c-format
 msgid "Change Exchange Provider"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:343
+#: src/webex/pages/confirm-create-reserve.tsx:335
+#, c-format
+msgid ""
+"Please select an exchange.  You can review the details before after your "
+"selection."
+msgstr ""
+
+#: src/webex/pages/confirm-create-reserve.tsx:341
+#: src/webex/pages/confirm-create-reserve.tsx:353
 #, c-format
 msgid "Select%1$s"
 msgstr ""
@@ -239,19 +252,17 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:253
 #, c-format
-msgid ""
-"You have no balance to show. Need some\n"
-" %1$s getting started?\n"
+msgid "You have no balance to show. Need some %1$s getting started?"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:270
 #, c-format
-msgid "%1$s incoming\n"
+msgid "%1$s incoming"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:283
 #, c-format
-msgid "%1$s being spent\n"
+msgid "%1$s being spent"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:310
@@ -276,59 +287,60 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:351
 #, c-format
-msgid ""
-"Bank requested reserve (%1$s) for\n"
-" %2$s.\n"
+msgid "Bank requested reserve (%1$s) for %2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:361
 #, c-format
-msgid ""
-"Started to withdraw\n"
-" %1$s%2$sfrom%3$s(%4$s).\n"
+msgid "Started to withdraw %1$s from%2$s(%3$s)."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:370
 #, c-format
-msgid "Merchant%1$soffered%2$scontract%3$s.\n"
+msgid "Merchant%1$soffered contract%2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:381
 #, c-format
-msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
+msgid "Withdrew%1$sfrom%2$s(%3$s)."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:391
 #, c-format
-msgid ""
-"Paid%1$sto merchant%2$s.\n"
-"%3$s(%4$s)\n"
+msgid "Paid%1$sto merchant%2$s. %3$s (%4$s)"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:401
 #, c-format
-msgid "Merchant%1$sgave a refund over%2$s.\n"
+msgid "Merchant%1$sgave a refund over%2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:411
 #, c-format
-msgid ""
-"Merchant%1$sgave\n"
-"a%2$sof%3$s.\n"
-"%4$s%5$s"
+msgid "tip"
+msgstr ""
+
+#: src/webex/pages/popup.tsx:414
+#, c-format
+msgid "Merchant%1$sgave a%2$sof%3$s."
+msgstr ""
+
+#: src/webex/pages/popup.tsx:419
+#, c-format
+msgid "You did not accept the tip yet."
 msgstr ""
 
-#: src/webex/pages/popup.tsx:421
+#: src/webex/pages/popup.tsx:424
 #, c-format
 msgid "Unknown event (%1$s)"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:464
+#: src/webex/pages/popup.tsx:467
 #, c-format
 msgid "Error: could not retrieve event history"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:489
+#: src/webex/pages/popup.tsx:492
 #, c-format
 msgid "Your wallet has no events recorded."
 msgstr ""
diff --git a/src/i18n/it.po b/src/i18n/it.po
index a4bffb01..38f817fa 100644
--- a/src/i18n/it.po
+++ b/src/i18n/it.po
@@ -29,7 +29,7 @@ msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:76
 #, c-format
-msgid "show more details\n"
+msgid "show more details"
 msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:90
@@ -95,7 +95,17 @@ msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:372
 #, c-format
-msgid "The merchant%1$s offers you to purchase:\n"
+msgid "The merchant%1$soffers you to purchase:"
+msgstr ""
+
+#: src/webex/pages/confirm-contract.tsx:381
+#, c-format
+msgid "The total price is%1$s (plus%2$sfees)."
+msgstr ""
+
+#: src/webex/pages/confirm-contract.tsx:385
+#, c-format
+msgid "The total price is%1$s."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:128
@@ -115,71 +125,74 @@ msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:210
 #, c-format
-msgid "The exchange is trusted by the wallet.\n"
+msgid "The exchange is trusted by the wallet."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:216
 #, c-format
-msgid "The exchange is audited by a trusted auditor.\n"
+msgid "The exchange is audited by a trusted auditor."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:222
 #, c-format
 msgid ""
-"Warning:  The exchange is neither directly trusted nor audited by a trusted "
-"auditor.\n"
-"If you withdraw from this exchange, it will be trusted in the future.\n"
+"Warning: The exchange is neither directly trusted nor audited by a trusted "
+"auditor. If you withdraw from this exchange, it will be trusted in the "
+"future."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:231
 #, c-format
 msgid ""
-"Using exchange provider%1$s.\n"
-"The exchange provider will charge\n"
-" %2$s in fees.\n"
+"Using exchange provider%1$s. The exchange provider will charge %2$s in fees."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:245
+#: src/webex/pages/confirm-create-reserve.tsx:243
 #, c-format
-msgid ""
-"Waiting for a response from\n"
-" %1$s"
+msgid "Waiting for a response from %1$s %2$s"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:262
+#: src/webex/pages/confirm-create-reserve.tsx:260
 #, c-format
 msgid ""
 "Information about fees will be available when an exchange provider is "
 "selected."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:281
+#: src/webex/pages/confirm-create-reserve.tsx:279
 #, c-format
 msgid ""
-"Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange has a "
-"higher, incompatible\n"
-"protocol version (%3$s).\n"
+"Your wallet (protocol version%1$s) might be outdated.%2$s The exchange has a "
+"higher, incompatible protocol version (%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:292
+#: src/webex/pages/confirm-create-reserve.tsx:290
 #, c-format
 msgid ""
-"The chosen exchange (protocol version%1$smight be outdated.%2$sThe exchange "
-"has a lower, incompatible\n"
-"protocol version than your wallet (protocol version%3$s).\n"
+"The chosen exchange (protocol version%1$smight be outdated.%2$s The exchange "
+"has a lower, incompatible protocol version than your wallet (protocol version"
+"%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:311
+#: src/webex/pages/confirm-create-reserve.tsx:309
 #, c-format
 msgid "Accept fees and withdraw"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:316
+#: src/webex/pages/confirm-create-reserve.tsx:314
 #, c-format
 msgid "Change Exchange Provider"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:343
+#: src/webex/pages/confirm-create-reserve.tsx:335
+#, c-format
+msgid ""
+"Please select an exchange.  You can review the details before after your "
+"selection."
+msgstr ""
+
+#: src/webex/pages/confirm-create-reserve.tsx:341
+#: src/webex/pages/confirm-create-reserve.tsx:353
 #, c-format
 msgid "Select%1$s"
 msgstr ""
@@ -239,19 +252,17 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:253
 #, c-format
-msgid ""
-"You have no balance to show. Need some\n"
-" %1$s getting started?\n"
+msgid "You have no balance to show. Need some %1$s getting started?"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:270
 #, c-format
-msgid "%1$s incoming\n"
+msgid "%1$s incoming"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:283
 #, c-format
-msgid "%1$s being spent\n"
+msgid "%1$s being spent"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:310
@@ -276,59 +287,60 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:351
 #, c-format
-msgid ""
-"Bank requested reserve (%1$s) for\n"
-" %2$s.\n"
+msgid "Bank requested reserve (%1$s) for %2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:361
 #, c-format
-msgid ""
-"Started to withdraw\n"
-" %1$s%2$sfrom%3$s(%4$s).\n"
+msgid "Started to withdraw %1$s from%2$s(%3$s)."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:370
 #, c-format
-msgid "Merchant%1$soffered%2$scontract%3$s.\n"
+msgid "Merchant%1$soffered contract%2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:381
 #, c-format
-msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
+msgid "Withdrew%1$sfrom%2$s(%3$s)."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:391
 #, c-format
-msgid ""
-"Paid%1$sto merchant%2$s.\n"
-"%3$s(%4$s)\n"
+msgid "Paid%1$sto merchant%2$s. %3$s (%4$s)"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:401
 #, c-format
-msgid "Merchant%1$sgave a refund over%2$s.\n"
+msgid "Merchant%1$sgave a refund over%2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:411
 #, c-format
-msgid ""
-"Merchant%1$sgave\n"
-"a%2$sof%3$s.\n"
-"%4$s%5$s"
+msgid "tip"
+msgstr ""
+
+#: src/webex/pages/popup.tsx:414
+#, c-format
+msgid "Merchant%1$sgave a%2$sof%3$s."
+msgstr ""
+
+#: src/webex/pages/popup.tsx:419
+#, c-format
+msgid "You did not accept the tip yet."
 msgstr ""
 
-#: src/webex/pages/popup.tsx:421
+#: src/webex/pages/popup.tsx:424
 #, c-format
 msgid "Unknown event (%1$s)"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:464
+#: src/webex/pages/popup.tsx:467
 #, c-format
 msgid "Error: could not retrieve event history"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:489
+#: src/webex/pages/popup.tsx:492
 #, c-format
 msgid "Your wallet has no events recorded."
 msgstr ""
diff --git a/src/i18n/strings.ts b/src/i18n/strings.ts
index 821378fe..7251a5c5 100644
--- a/src/i18n/strings.ts
+++ b/src/i18n/strings.ts
@@ -24,7 +24,7 @@ strings['de'] = {
         "plural_forms": "nplurals=2; plural=(n != 1);",
         "lang": ""
       },
-      "show more details\n": [
+      "show more details": [
         ""
       ],
       "Accepted exchanges:": [
@@ -49,18 +49,24 @@ strings['de'] = {
         ""
       ],
       "Aborting payment ...": [
-        ""
+        "Bezahlung bestätigen"
       ],
       "Payment aborted!": [
         ""
       ],
       "Retry Payment": [
-        ""
+        "Bezahlung bestätigen"
       ],
       "Abort Payment": [
         "Bezahlung bestätigen"
       ],
-      "The merchant%1$s offers you to purchase:\n": [
+      "The merchant%1$soffers you to purchase:": [
+        "Der Händler %1$s möchte einen Vertrag über %2$s mit Ihnen 
abschließen."
+      ],
+      "The total price is%1$s (plus%2$sfees).": [
+        ""
+      ],
+      "The total price is%1$s.": [
         ""
       ],
       "Select": [
@@ -72,28 +78,28 @@ strings['de'] = {
       "Invalid exchange URL (%1$s)": [
         ""
       ],
-      "The exchange is trusted by the wallet.\n": [
+      "The exchange is trusted by the wallet.": [
         ""
       ],
-      "The exchange is audited by a trusted auditor.\n": [
+      "The exchange is audited by a trusted auditor.": [
         ""
       ],
-      "Warning:  The exchange is neither directly trusted nor audited by a 
trusted auditor.\nIf you withdraw from this exchange, it will be trusted in the 
future.\n": [
+      "Warning: The exchange is neither directly trusted nor audited by a 
trusted auditor. If you withdraw from this exchange, it will be trusted in the 
future.": [
         ""
       ],
-      "Using exchange provider%1$s.\nThe exchange provider will charge\n %2$s 
in fees.\n": [
+      "Using exchange provider%1$s. The exchange provider will charge %2$s in 
fees.": [
         ""
       ],
-      "Waiting for a response from\n %1$s": [
+      "Waiting for a response from %1$s %2$s": [
         ""
       ],
       "Information about fees will be available when an exchange provider is 
selected.": [
         ""
       ],
-      "Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange 
has a higher, incompatible\nprotocol version (%3$s).\n": [
+      "Your wallet (protocol version%1$s) might be outdated.%2$s The exchange 
has a higher, incompatible protocol version (%3$s).": [
         ""
       ],
-      "The chosen exchange (protocol version%1$smight be outdated.%2$sThe 
exchange has a lower, incompatible\nprotocol version than your wallet (protocol 
version%3$s).\n": [
+      "The chosen exchange (protocol version%1$smight be outdated.%2$s The 
exchange has a lower, incompatible protocol version than your wallet (protocol 
version%3$s).": [
         ""
       ],
       "Accept fees and withdraw": [
@@ -102,6 +108,9 @@ strings['de'] = {
       "Change Exchange Provider": [
         ""
       ],
+      "Please select an exchange.  You can review the details before after 
your selection.": [
+        ""
+      ],
       "Select%1$s": [
         ""
       ],
@@ -135,13 +144,13 @@ strings['de'] = {
       "help": [
         ""
       ],
-      "You have no balance to show. Need some\n %1$s getting started?\n": [
+      "You have no balance to show. Need some %1$s getting started?": [
         "Sie haben kein Digitalgeld. Wollen Sie %1$s? abheben?"
       ],
-      "%1$s incoming\n": [
+      "%1$s incoming": [
         ""
       ],
-      "%1$s being spent\n": [
+      "%1$s being spent": [
         ""
       ],
       "Error: could not retrieve balance information.": [
@@ -156,27 +165,33 @@ strings['de'] = {
       "Manage Trusted Auditors and Exchanges": [
         ""
       ],
-      "Bank requested reserve (%1$s) for\n %2$s.\n": [
+      "Bank requested reserve (%1$s) for %2$s.": [
         "Bank bestätig anlegen der Reserve (%1$s) bei %2$s"
       ],
-      "Started to withdraw\n %1$s%2$sfrom%3$s(%4$s).\n": [
+      "Started to withdraw %1$s from%2$s(%3$s).": [
         "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
       ],
-      "Merchant%1$soffered%2$scontract%3$s.\n": [
+      "Merchant%1$soffered contract%2$s.": [
         "%1$s\n               möchte einen Vertrag über %2$s\n               
mit Ihnen abschließen."
       ],
-      "Withdrew%1$sfrom%2$s(%3$s).\n": [
+      "Withdrew%1$sfrom%2$s(%3$s).": [
         "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
       ],
-      "Paid%1$sto merchant%2$s.\n%3$s(%4$s)\n": [
+      "Paid%1$sto merchant%2$s. %3$s (%4$s)": [
         "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
       ],
-      "Merchant%1$sgave a refund over%2$s.\n": [
+      "Merchant%1$sgave a refund over%2$s.": [
+        "%1$s\n               möchte einen Vertrag über %2$s\n               
mit Ihnen abschließen."
+      ],
+      "tip": [
         ""
       ],
-      "Merchant%1$sgave\na%2$sof%3$s.\n%4$s%5$s": [
+      "Merchant%1$sgave a%2$sof%3$s.": [
         "%1$s\n               möchte einen Vertrag über %2$s\n               
mit Ihnen abschließen."
       ],
+      "You did not accept the tip yet.": [
+        ""
+      ],
       "Unknown event (%1$s)": [
         ""
       ],
@@ -243,7 +258,7 @@ strings['en-US'] = {
         "plural_forms": "nplurals=2; plural=(n != 1);",
         "lang": ""
       },
-      "show more details\n": [
+      "show more details": [
         ""
       ],
       "Accepted exchanges:": [
@@ -279,7 +294,13 @@ strings['en-US'] = {
       "Abort Payment": [
         ""
       ],
-      "The merchant%1$s offers you to purchase:\n": [
+      "The merchant%1$soffers you to purchase:": [
+        ""
+      ],
+      "The total price is%1$s (plus%2$sfees).": [
+        ""
+      ],
+      "The total price is%1$s.": [
         ""
       ],
       "Select": [
@@ -291,28 +312,28 @@ strings['en-US'] = {
       "Invalid exchange URL (%1$s)": [
         ""
       ],
-      "The exchange is trusted by the wallet.\n": [
+      "The exchange is trusted by the wallet.": [
         ""
       ],
-      "The exchange is audited by a trusted auditor.\n": [
+      "The exchange is audited by a trusted auditor.": [
         ""
       ],
-      "Warning:  The exchange is neither directly trusted nor audited by a 
trusted auditor.\nIf you withdraw from this exchange, it will be trusted in the 
future.\n": [
+      "Warning: The exchange is neither directly trusted nor audited by a 
trusted auditor. If you withdraw from this exchange, it will be trusted in the 
future.": [
         ""
       ],
-      "Using exchange provider%1$s.\nThe exchange provider will charge\n %2$s 
in fees.\n": [
+      "Using exchange provider%1$s. The exchange provider will charge %2$s in 
fees.": [
         ""
       ],
-      "Waiting for a response from\n %1$s": [
+      "Waiting for a response from %1$s %2$s": [
         ""
       ],
       "Information about fees will be available when an exchange provider is 
selected.": [
         ""
       ],
-      "Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange 
has a higher, incompatible\nprotocol version (%3$s).\n": [
+      "Your wallet (protocol version%1$s) might be outdated.%2$s The exchange 
has a higher, incompatible protocol version (%3$s).": [
         ""
       ],
-      "The chosen exchange (protocol version%1$smight be outdated.%2$sThe 
exchange has a lower, incompatible\nprotocol version than your wallet (protocol 
version%3$s).\n": [
+      "The chosen exchange (protocol version%1$smight be outdated.%2$s The 
exchange has a lower, incompatible protocol version than your wallet (protocol 
version%3$s).": [
         ""
       ],
       "Accept fees and withdraw": [
@@ -321,6 +342,9 @@ strings['en-US'] = {
       "Change Exchange Provider": [
         ""
       ],
+      "Please select an exchange.  You can review the details before after 
your selection.": [
+        ""
+      ],
       "Select%1$s": [
         ""
       ],
@@ -354,13 +378,13 @@ strings['en-US'] = {
       "help": [
         ""
       ],
-      "You have no balance to show. Need some\n %1$s getting started?\n": [
+      "You have no balance to show. Need some %1$s getting started?": [
         ""
       ],
-      "%1$s incoming\n": [
+      "%1$s incoming": [
         ""
       ],
-      "%1$s being spent\n": [
+      "%1$s being spent": [
         ""
       ],
       "Error: could not retrieve balance information.": [
@@ -375,25 +399,31 @@ strings['en-US'] = {
       "Manage Trusted Auditors and Exchanges": [
         ""
       ],
-      "Bank requested reserve (%1$s) for\n %2$s.\n": [
+      "Bank requested reserve (%1$s) for %2$s.": [
+        ""
+      ],
+      "Started to withdraw %1$s from%2$s(%3$s).": [
         ""
       ],
-      "Started to withdraw\n %1$s%2$sfrom%3$s(%4$s).\n": [
+      "Merchant%1$soffered contract%2$s.": [
         ""
       ],
-      "Merchant%1$soffered%2$scontract%3$s.\n": [
+      "Withdrew%1$sfrom%2$s(%3$s).": [
         ""
       ],
-      "Withdrew%1$sfrom%2$s(%3$s).\n": [
+      "Paid%1$sto merchant%2$s. %3$s (%4$s)": [
         ""
       ],
-      "Paid%1$sto merchant%2$s.\n%3$s(%4$s)\n": [
+      "Merchant%1$sgave a refund over%2$s.": [
         ""
       ],
-      "Merchant%1$sgave a refund over%2$s.\n": [
+      "tip": [
         ""
       ],
-      "Merchant%1$sgave\na%2$sof%3$s.\n%4$s%5$s": [
+      "Merchant%1$sgave a%2$sof%3$s.": [
+        ""
+      ],
+      "You did not accept the tip yet.": [
         ""
       ],
       "Unknown event (%1$s)": [
@@ -462,7 +492,7 @@ strings['fr'] = {
         "plural_forms": "nplurals=2; plural=(n != 1);",
         "lang": ""
       },
-      "show more details\n": [
+      "show more details": [
         ""
       ],
       "Accepted exchanges:": [
@@ -498,7 +528,13 @@ strings['fr'] = {
       "Abort Payment": [
         ""
       ],
-      "The merchant%1$s offers you to purchase:\n": [
+      "The merchant%1$soffers you to purchase:": [
+        ""
+      ],
+      "The total price is%1$s (plus%2$sfees).": [
+        ""
+      ],
+      "The total price is%1$s.": [
         ""
       ],
       "Select": [
@@ -510,28 +546,28 @@ strings['fr'] = {
       "Invalid exchange URL (%1$s)": [
         ""
       ],
-      "The exchange is trusted by the wallet.\n": [
+      "The exchange is trusted by the wallet.": [
         ""
       ],
-      "The exchange is audited by a trusted auditor.\n": [
+      "The exchange is audited by a trusted auditor.": [
         ""
       ],
-      "Warning:  The exchange is neither directly trusted nor audited by a 
trusted auditor.\nIf you withdraw from this exchange, it will be trusted in the 
future.\n": [
+      "Warning: The exchange is neither directly trusted nor audited by a 
trusted auditor. If you withdraw from this exchange, it will be trusted in the 
future.": [
         ""
       ],
-      "Using exchange provider%1$s.\nThe exchange provider will charge\n %2$s 
in fees.\n": [
+      "Using exchange provider%1$s. The exchange provider will charge %2$s in 
fees.": [
         ""
       ],
-      "Waiting for a response from\n %1$s": [
+      "Waiting for a response from %1$s %2$s": [
         ""
       ],
       "Information about fees will be available when an exchange provider is 
selected.": [
         ""
       ],
-      "Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange 
has a higher, incompatible\nprotocol version (%3$s).\n": [
+      "Your wallet (protocol version%1$s) might be outdated.%2$s The exchange 
has a higher, incompatible protocol version (%3$s).": [
         ""
       ],
-      "The chosen exchange (protocol version%1$smight be outdated.%2$sThe 
exchange has a lower, incompatible\nprotocol version than your wallet (protocol 
version%3$s).\n": [
+      "The chosen exchange (protocol version%1$smight be outdated.%2$s The 
exchange has a lower, incompatible protocol version than your wallet (protocol 
version%3$s).": [
         ""
       ],
       "Accept fees and withdraw": [
@@ -540,6 +576,9 @@ strings['fr'] = {
       "Change Exchange Provider": [
         ""
       ],
+      "Please select an exchange.  You can review the details before after 
your selection.": [
+        ""
+      ],
       "Select%1$s": [
         ""
       ],
@@ -573,13 +612,13 @@ strings['fr'] = {
       "help": [
         ""
       ],
-      "You have no balance to show. Need some\n %1$s getting started?\n": [
+      "You have no balance to show. Need some %1$s getting started?": [
         ""
       ],
-      "%1$s incoming\n": [
+      "%1$s incoming": [
         ""
       ],
-      "%1$s being spent\n": [
+      "%1$s being spent": [
         ""
       ],
       "Error: could not retrieve balance information.": [
@@ -594,25 +633,31 @@ strings['fr'] = {
       "Manage Trusted Auditors and Exchanges": [
         ""
       ],
-      "Bank requested reserve (%1$s) for\n %2$s.\n": [
+      "Bank requested reserve (%1$s) for %2$s.": [
+        ""
+      ],
+      "Started to withdraw %1$s from%2$s(%3$s).": [
         ""
       ],
-      "Started to withdraw\n %1$s%2$sfrom%3$s(%4$s).\n": [
+      "Merchant%1$soffered contract%2$s.": [
         ""
       ],
-      "Merchant%1$soffered%2$scontract%3$s.\n": [
+      "Withdrew%1$sfrom%2$s(%3$s).": [
         ""
       ],
-      "Withdrew%1$sfrom%2$s(%3$s).\n": [
+      "Paid%1$sto merchant%2$s. %3$s (%4$s)": [
         ""
       ],
-      "Paid%1$sto merchant%2$s.\n%3$s(%4$s)\n": [
+      "Merchant%1$sgave a refund over%2$s.": [
         ""
       ],
-      "Merchant%1$sgave a refund over%2$s.\n": [
+      "tip": [
         ""
       ],
-      "Merchant%1$sgave\na%2$sof%3$s.\n%4$s%5$s": [
+      "Merchant%1$sgave a%2$sof%3$s.": [
+        ""
+      ],
+      "You did not accept the tip yet.": [
         ""
       ],
       "Unknown event (%1$s)": [
@@ -681,7 +726,7 @@ strings['it'] = {
         "plural_forms": "nplurals=2; plural=(n != 1);",
         "lang": ""
       },
-      "show more details\n": [
+      "show more details": [
         ""
       ],
       "Accepted exchanges:": [
@@ -717,7 +762,13 @@ strings['it'] = {
       "Abort Payment": [
         ""
       ],
-      "The merchant%1$s offers you to purchase:\n": [
+      "The merchant%1$soffers you to purchase:": [
+        ""
+      ],
+      "The total price is%1$s (plus%2$sfees).": [
+        ""
+      ],
+      "The total price is%1$s.": [
         ""
       ],
       "Select": [
@@ -729,28 +780,28 @@ strings['it'] = {
       "Invalid exchange URL (%1$s)": [
         ""
       ],
-      "The exchange is trusted by the wallet.\n": [
+      "The exchange is trusted by the wallet.": [
         ""
       ],
-      "The exchange is audited by a trusted auditor.\n": [
+      "The exchange is audited by a trusted auditor.": [
         ""
       ],
-      "Warning:  The exchange is neither directly trusted nor audited by a 
trusted auditor.\nIf you withdraw from this exchange, it will be trusted in the 
future.\n": [
+      "Warning: The exchange is neither directly trusted nor audited by a 
trusted auditor. If you withdraw from this exchange, it will be trusted in the 
future.": [
         ""
       ],
-      "Using exchange provider%1$s.\nThe exchange provider will charge\n %2$s 
in fees.\n": [
+      "Using exchange provider%1$s. The exchange provider will charge %2$s in 
fees.": [
         ""
       ],
-      "Waiting for a response from\n %1$s": [
+      "Waiting for a response from %1$s %2$s": [
         ""
       ],
       "Information about fees will be available when an exchange provider is 
selected.": [
         ""
       ],
-      "Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange 
has a higher, incompatible\nprotocol version (%3$s).\n": [
+      "Your wallet (protocol version%1$s) might be outdated.%2$s The exchange 
has a higher, incompatible protocol version (%3$s).": [
         ""
       ],
-      "The chosen exchange (protocol version%1$smight be outdated.%2$sThe 
exchange has a lower, incompatible\nprotocol version than your wallet (protocol 
version%3$s).\n": [
+      "The chosen exchange (protocol version%1$smight be outdated.%2$s The 
exchange has a lower, incompatible protocol version than your wallet (protocol 
version%3$s).": [
         ""
       ],
       "Accept fees and withdraw": [
@@ -759,6 +810,9 @@ strings['it'] = {
       "Change Exchange Provider": [
         ""
       ],
+      "Please select an exchange.  You can review the details before after 
your selection.": [
+        ""
+      ],
       "Select%1$s": [
         ""
       ],
@@ -792,13 +846,13 @@ strings['it'] = {
       "help": [
         ""
       ],
-      "You have no balance to show. Need some\n %1$s getting started?\n": [
+      "You have no balance to show. Need some %1$s getting started?": [
         ""
       ],
-      "%1$s incoming\n": [
+      "%1$s incoming": [
         ""
       ],
-      "%1$s being spent\n": [
+      "%1$s being spent": [
         ""
       ],
       "Error: could not retrieve balance information.": [
@@ -813,25 +867,31 @@ strings['it'] = {
       "Manage Trusted Auditors and Exchanges": [
         ""
       ],
-      "Bank requested reserve (%1$s) for\n %2$s.\n": [
+      "Bank requested reserve (%1$s) for %2$s.": [
+        ""
+      ],
+      "Started to withdraw %1$s from%2$s(%3$s).": [
+        ""
+      ],
+      "Merchant%1$soffered contract%2$s.": [
         ""
       ],
-      "Started to withdraw\n %1$s%2$sfrom%3$s(%4$s).\n": [
+      "Withdrew%1$sfrom%2$s(%3$s).": [
         ""
       ],
-      "Merchant%1$soffered%2$scontract%3$s.\n": [
+      "Paid%1$sto merchant%2$s. %3$s (%4$s)": [
         ""
       ],
-      "Withdrew%1$sfrom%2$s(%3$s).\n": [
+      "Merchant%1$sgave a refund over%2$s.": [
         ""
       ],
-      "Paid%1$sto merchant%2$s.\n%3$s(%4$s)\n": [
+      "tip": [
         ""
       ],
-      "Merchant%1$sgave a refund over%2$s.\n": [
+      "Merchant%1$sgave a%2$sof%3$s.": [
         ""
       ],
-      "Merchant%1$sgave\na%2$sof%3$s.\n%4$s%5$s": [
+      "You did not accept the tip yet.": [
         ""
       ],
       "Unknown event (%1$s)": [
@@ -891,3 +951,237 @@ strings['it'] = {
     }
   }
 };
+strings['sv'] = {
+  "domain": "messages",
+  "locale_data": {
+    "messages": {
+      "": {
+        "domain": "messages",
+        "plural_forms": "nplurals=2; plural=(n != 1);",
+        "lang": ""
+      },
+      "show more details": [
+        "visa mer"
+      ],
+      "Accepted exchanges:": [
+        "Accepterade tjänsteleverantörer:"
+      ],
+      "Exchanges in the wallet:": [
+        "Tjänsteleverantörer i plånboken:"
+      ],
+      "You have insufficient funds of the requested currency in your wallet.": 
[
+        "plånboken"
+      ],
+      "You do not have any funds from an exchange that is accepted by this 
merchant. None of the exchanges accepted by the merchant is known to your 
wallet.": [
+        "plånboken"
+      ],
+      "Confirm payment": [
+        "Godkän betalning"
+      ],
+      "Submitting payment": [
+        "Bekräftar betalning"
+      ],
+      "You already paid for this, clicking \"Confirm payment\" will not cost 
money again.": [
+        "Du har redan betalat för det här, om du trycker \"Godkän betalning\" 
debiteras du inte igen"
+      ],
+      "Aborting payment ...": [
+        ""
+      ],
+      "Payment aborted!": [
+        ""
+      ],
+      "Retry Payment": [
+        ""
+      ],
+      "Abort Payment": [
+        ""
+      ],
+      "The merchant%1$soffers you to purchase:": [
+        "Säljaren %1$serbjuder följande:"
+      ],
+      "The total price is%1$s (plus%2$sfees).": [
+        "Det totala priset är %1$s(plus %2$savgifter).\n"
+      ],
+      "The total price is%1$s.": [
+        "Det totala priset är %1$s."
+      ],
+      "Select": [
+        "Välj"
+      ],
+      "Error: URL may not be relative": [
+        ""
+      ],
+      "Invalid exchange URL (%1$s)": [
+        ""
+      ],
+      "The exchange is trusted by the wallet.": [
+        "tjänsteleverantörer"
+      ],
+      "The exchange is audited by a trusted auditor.": [
+        "tjänsteleverantörer"
+      ],
+      "Warning: The exchange is neither directly trusted nor audited by a 
trusted auditor. If you withdraw from this exchange, it will be trusted in the 
future.": [
+        ""
+      ],
+      "Using exchange provider%1$s. The exchange provider will charge %2$s in 
fees.": [
+        "tjänsteleverantörer"
+      ],
+      "Waiting for a response from %1$s %2$s": [
+        ""
+      ],
+      "Information about fees will be available when an exchange provider is 
selected.": [
+        ""
+      ],
+      "Your wallet (protocol version%1$s) might be outdated.%2$s The exchange 
has a higher, incompatible protocol version (%3$s).": [
+        "plånboken tjänsteleverantörer"
+      ],
+      "The chosen exchange (protocol version%1$smight be outdated.%2$s The 
exchange has a lower, incompatible protocol version than your wallet (protocol 
version%3$s).": [
+        "tjänsteleverantörer  plånboken"
+      ],
+      "Accept fees and withdraw": [
+        "Acceptera avgifter och utbetala"
+      ],
+      "Change Exchange Provider": [
+        "Ändra tjänsteleverantörer"
+      ],
+      "Please select an exchange.  You can review the details before after 
your selection.": [
+        "tjänsteleverantörer"
+      ],
+      "Select%1$s": [
+        "Välj %1$s"
+      ],
+      "You are about to withdraw %1$s from your bank account into your 
wallet.": [
+        "Du är på väg att ta ut\n %1$s från ditt bankkonto till din plånbok.\n"
+      ],
+      "Oops, something went wrong. The wallet responded with error status 
(%1$s).": [
+        "plånboken"
+      ],
+      "Checking URL, please wait ...": [
+        ""
+      ],
+      "Can't parse amount: %1$s": [
+        ""
+      ],
+      "Can't parse wire_types: %1$s": [
+        ""
+      ],
+      "Fatal error: \"%1$s\".": [
+        ""
+      ],
+      "Balance": [
+        "Balans"
+      ],
+      "History": [
+        "Historia"
+      ],
+      "Debug": [
+        ""
+      ],
+      "help": [
+        "hjälp"
+      ],
+      "You have no balance to show. Need some %1$s getting started?": [
+        "Du har ingen balans att visa. Behöver du\n %1$s att börja?\n"
+      ],
+      "%1$s incoming": [
+        "%1$s inkommande"
+      ],
+      "%1$s being spent": [
+        ""
+      ],
+      "Error: could not retrieve balance information.": [
+        ""
+      ],
+      "Payback": [
+        "Återbetalning"
+      ],
+      "Return Electronic Cash to Bank Account": [
+        "Återlämna elektroniska pengar till bank konto"
+      ],
+      "Manage Trusted Auditors and Exchanges": [
+        ""
+      ],
+      "Bank requested reserve (%1$s) for %2$s.": [
+        ""
+      ],
+      "Started to withdraw %1$s from%2$s(%3$s).": [
+        ""
+      ],
+      "Merchant%1$soffered contract%2$s.": [
+        "Säljaren %1$s erbjöd kontrakt %2$s.\n"
+      ],
+      "Withdrew%1$sfrom%2$s(%3$s).": [
+        ""
+      ],
+      "Paid%1$sto merchant%2$s. %3$s (%4$s)": [
+        ""
+      ],
+      "Merchant%1$sgave a refund over%2$s.": [
+        "Säljaren %1$sgav en återbetalning på %2$s.\n"
+      ],
+      "tip": [
+        ""
+      ],
+      "Merchant%1$sgave a%2$sof%3$s.": [
+        "Säljaren %1$sgav en återbetalning på %2$s.\n"
+      ],
+      "You did not accept the tip yet.": [
+        ""
+      ],
+      "Unknown event (%1$s)": [
+        ""
+      ],
+      "Error: could not retrieve event history": [
+        ""
+      ],
+      "Your wallet has no events recorded.": [
+        "plånboken"
+      ],
+      "Wire to bank account": [
+        "Övervisa till bank konto"
+      ],
+      "Confirm": [
+        "Bekräfta"
+      ],
+      "Cancel": [
+        "Avbryt"
+      ],
+      "Withdrawal fees:": [
+        "Utbetalnings avgifter:"
+      ],
+      "Rounding loss:": [
+        ""
+      ],
+      "Earliest expiration (for deposit): %1$s": [
+        ""
+      ],
+      "# Coins": [
+        "# Mynt"
+      ],
+      "Value": [
+        "Värde"
+      ],
+      "Withdraw Fee": [
+        "Utbetalnings avgift"
+      ],
+      "Refresh Fee": [
+        "Återhämtnings avgift"
+      ],
+      "Deposit Fee": [
+        "Depostitions avgift"
+      ],
+      "Invalid Wire": [
+        ""
+      ],
+      "Invalid Test Wire Detail": [
+        ""
+      ],
+      "Test Wire Acct #%1$s on %2$s": [
+        ""
+      ],
+      "Unknown Wire Detail": [
+        ""
+      ]
+    }
+  }
+};
diff --git a/src/i18n/de.po b/src/i18n/sv.po
similarity index 64%
copy from src/i18n/de.po
copy to src/i18n/sv.po
index a43eb936..24573f74 100644
--- a/src/i18n/de.po
+++ b/src/i18n/sv.po
@@ -19,7 +19,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-11-23 00:00+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <address@hidden>\n"
+"Last-Translator: Flo Reitz <address@hidden>\n"
 "Language-Team: LANGUAGE <address@hidden>\n"
 "Language: \n"
 "MIME-Version: 1.0\n"
@@ -28,24 +28,24 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: src/webex/pages/confirm-contract.tsx:76
-#, c-format
-msgid "show more details\n"
-msgstr ""
+#, fuzzy, c-format
+msgid "show more details"
+msgstr "visa mer"
 
 #: src/webex/pages/confirm-contract.tsx:90
 #, c-format
 msgid "Accepted exchanges:"
-msgstr ""
+msgstr "Accepterade tjänsteleverantörer:"
 
 #: src/webex/pages/confirm-contract.tsx:95
 #, c-format
 msgid "Exchanges in the wallet:"
-msgstr ""
+msgstr "Tjänsteleverantörer i plånboken:"
 
 #: src/webex/pages/confirm-contract.tsx:217
 #, c-format
 msgid "You have insufficient funds of the requested currency in your wallet."
-msgstr ""
+msgstr "plånboken"
 
 #. tslint:disable-next-line:max-line-length
 #: src/webex/pages/confirm-contract.tsx:219
@@ -54,17 +54,17 @@ msgid ""
 "You do not have any funds from an exchange that is accepted by this "
 "merchant. None of the exchanges accepted by the merchant is known to your "
 "wallet."
-msgstr ""
+msgstr "plånboken"
 
 #: src/webex/pages/confirm-contract.tsx:320
-#, fuzzy, c-format
+#, c-format
 msgid "Confirm payment"
-msgstr "Bezahlung bestätigen"
+msgstr "Godkän betalning"
 
 #: src/webex/pages/confirm-contract.tsx:330
 #, c-format
 msgid "Submitting payment"
-msgstr ""
+msgstr "Bekräftar betalning"
 
 #: src/webex/pages/confirm-contract.tsx:341
 #, c-format
@@ -72,6 +72,8 @@ msgid ""
 "You already paid for this, clicking \"Confirm payment\" will not cost money "
 "again."
 msgstr ""
+"Du har redan betalat för det här, om du trycker \"Godkän betalning\" "
+"debiteras du inte igen"
 
 #: src/webex/pages/confirm-contract.tsx:355
 #, c-format
@@ -89,19 +91,29 @@ msgid "Retry Payment"
 msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:363
-#, fuzzy, c-format
+#, c-format
 msgid "Abort Payment"
-msgstr "Bezahlung bestätigen"
+msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:372
-#, c-format
-msgid "The merchant%1$s offers you to purchase:\n"
-msgstr ""
+#, fuzzy, c-format
+msgid "The merchant%1$soffers you to purchase:"
+msgstr "Säljaren %1$serbjuder följande:"
+
+#: src/webex/pages/confirm-contract.tsx:381
+#, fuzzy, c-format
+msgid "The total price is%1$s (plus%2$sfees)."
+msgstr "Det totala priset är %1$s(plus %2$savgifter).\n"
+
+#: src/webex/pages/confirm-contract.tsx:385
+#, fuzzy, c-format
+msgid "The total price is%1$s."
+msgstr "Det totala priset är %1$s."
 
 #: src/webex/pages/confirm-create-reserve.tsx:128
 #, c-format
 msgid "Select"
-msgstr ""
+msgstr "Välj"
 
 #: src/webex/pages/confirm-create-reserve.tsx:145
 #, c-format
@@ -114,86 +126,91 @@ msgid "Invalid exchange URL (%1$s)"
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:210
-#, c-format
-msgid "The exchange is trusted by the wallet.\n"
-msgstr ""
+#, fuzzy, c-format
+msgid "The exchange is trusted by the wallet."
+msgstr "tjänsteleverantörer"
 
 #: src/webex/pages/confirm-create-reserve.tsx:216
-#, c-format
-msgid "The exchange is audited by a trusted auditor.\n"
-msgstr ""
+#, fuzzy, c-format
+msgid "The exchange is audited by a trusted auditor."
+msgstr "tjänsteleverantörer"
 
 #: src/webex/pages/confirm-create-reserve.tsx:222
 #, c-format
 msgid ""
-"Warning:  The exchange is neither directly trusted nor audited by a trusted "
-"auditor.\n"
-"If you withdraw from this exchange, it will be trusted in the future.\n"
+"Warning: The exchange is neither directly trusted nor audited by a trusted "
+"auditor. If you withdraw from this exchange, it will be trusted in the "
+"future."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:231
-#, c-format
+#, fuzzy, c-format
 msgid ""
-"Using exchange provider%1$s.\n"
-"The exchange provider will charge\n"
-" %2$s in fees.\n"
-msgstr ""
+"Using exchange provider%1$s. The exchange provider will charge %2$s in fees."
+msgstr "tjänsteleverantörer"
 
-#: src/webex/pages/confirm-create-reserve.tsx:245
+#: src/webex/pages/confirm-create-reserve.tsx:243
 #, c-format
-msgid ""
-"Waiting for a response from\n"
-" %1$s"
+msgid "Waiting for a response from %1$s %2$s"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:262
+#: src/webex/pages/confirm-create-reserve.tsx:260
 #, c-format
 msgid ""
 "Information about fees will be available when an exchange provider is "
 "selected."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:281
-#, c-format
+#: src/webex/pages/confirm-create-reserve.tsx:279
+#, fuzzy, c-format
 msgid ""
-"Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange has a "
-"higher, incompatible\n"
-"protocol version (%3$s).\n"
-msgstr ""
+"Your wallet (protocol version%1$s) might be outdated.%2$s The exchange has a "
+"higher, incompatible protocol version (%3$s)."
+msgstr "plånboken tjänsteleverantörer"
 
-#: src/webex/pages/confirm-create-reserve.tsx:292
-#, c-format
+#: src/webex/pages/confirm-create-reserve.tsx:290
+#, fuzzy, c-format
 msgid ""
-"The chosen exchange (protocol version%1$smight be outdated.%2$sThe exchange "
-"has a lower, incompatible\n"
-"protocol version than your wallet (protocol version%3$s).\n"
-msgstr ""
+"The chosen exchange (protocol version%1$smight be outdated.%2$s The exchange "
+"has a lower, incompatible protocol version than your wallet (protocol version"
+"%3$s)."
+msgstr "tjänsteleverantörer  plånboken"
 
-#: src/webex/pages/confirm-create-reserve.tsx:311
+#: src/webex/pages/confirm-create-reserve.tsx:309
 #, c-format
 msgid "Accept fees and withdraw"
-msgstr ""
+msgstr "Acceptera avgifter och utbetala"
 
-#: src/webex/pages/confirm-create-reserve.tsx:316
+#: src/webex/pages/confirm-create-reserve.tsx:314
 #, c-format
 msgid "Change Exchange Provider"
-msgstr ""
+msgstr "Ändra tjänsteleverantörer"
 
-#: src/webex/pages/confirm-create-reserve.tsx:343
+#: src/webex/pages/confirm-create-reserve.tsx:335
 #, c-format
+msgid ""
+"Please select an exchange.  You can review the details before after your "
+"selection."
+msgstr "tjänsteleverantörer"
+
+#: src/webex/pages/confirm-create-reserve.tsx:341
+#: src/webex/pages/confirm-create-reserve.tsx:353
+#, fuzzy, c-format
 msgid "Select%1$s"
-msgstr ""
+msgstr "Välj %1$s"
 
 #: src/webex/pages/confirm-create-reserve.tsx:370
-#, c-format
+#, fuzzy, c-format
 msgid "You are about to withdraw %1$s from your bank account into your wallet."
 msgstr ""
+"Du är på väg att ta ut\n"
+" %1$s från ditt bankkonto till din plånbok.\n"
 
 #: src/webex/pages/confirm-create-reserve.tsx:455
 #, c-format
 msgid ""
 "Oops, something went wrong. The wallet responded with error status (%1$s)."
-msgstr ""
+msgstr "plånboken"
 
 #: src/webex/pages/confirm-create-reserve.tsx:464
 #, c-format
@@ -220,38 +237,38 @@ msgstr ""
 #: src/webex/pages/popup.tsx:162
 #, c-format
 msgid "Balance"
-msgstr "Saldo"
+msgstr "Balans"
 
 #: src/webex/pages/popup.tsx:165
 #, c-format
 msgid "History"
-msgstr "Verlauf"
+msgstr "Historia"
 
 #: src/webex/pages/popup.tsx:168
 #, c-format
 msgid "Debug"
-msgstr "Debug"
+msgstr ""
 
 #: src/webex/pages/popup.tsx:248
 #, c-format
 msgid "help"
-msgstr ""
+msgstr "hjälp"
 
 #: src/webex/pages/popup.tsx:253
 #, fuzzy, c-format
-msgid ""
-"You have no balance to show. Need some\n"
-" %1$s getting started?\n"
-msgstr "Sie haben kein Digitalgeld. Wollen Sie %1$s? abheben?"
+msgid "You have no balance to show. Need some %1$s getting started?"
+msgstr ""
+"Du har ingen balans att visa. Behöver du\n"
+" %1$s att börja?\n"
 
 #: src/webex/pages/popup.tsx:270
-#, c-format
-msgid "%1$s incoming\n"
-msgstr ""
+#, fuzzy, c-format
+msgid "%1$s incoming"
+msgstr "%1$s inkommande"
 
 #: src/webex/pages/popup.tsx:283
 #, c-format
-msgid "%1$s being spent\n"
+msgid "%1$s being spent"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:310
@@ -262,12 +279,12 @@ msgstr ""
 #: src/webex/pages/popup.tsx:337
 #, c-format
 msgid "Payback"
-msgstr ""
+msgstr "Återbetalning"
 
 #: src/webex/pages/popup.tsx:338
 #, c-format
 msgid "Return Electronic Cash to Bank Account"
-msgstr ""
+msgstr "Återlämna elektroniska pengar till bank konto"
 
 #: src/webex/pages/popup.tsx:339
 #, c-format
@@ -275,89 +292,84 @@ msgid "Manage Trusted Auditors and Exchanges"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:351
-#, fuzzy, c-format
-msgid ""
-"Bank requested reserve (%1$s) for\n"
-" %2$s.\n"
-msgstr "Bank bestätig anlegen der Reserve (%1$s) bei %2$s"
+#, c-format
+msgid "Bank requested reserve (%1$s) for %2$s."
+msgstr ""
 
 #: src/webex/pages/popup.tsx:361
-#, fuzzy, c-format
-msgid ""
-"Started to withdraw\n"
-" %1$s%2$sfrom%3$s(%4$s).\n"
-msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
+#, c-format
+msgid "Started to withdraw %1$s from%2$s(%3$s)."
+msgstr ""
 
 #: src/webex/pages/popup.tsx:370
 #, fuzzy, c-format
-msgid "Merchant%1$soffered%2$scontract%3$s.\n"
-msgstr ""
-"%1$s\n"
-"               möchte einen Vertrag über %2$s\n"
-"               mit Ihnen abschließen."
+msgid "Merchant%1$soffered contract%2$s."
+msgstr "Säljaren %1$s erbjöd kontrakt %2$s.\n"
 
 #: src/webex/pages/popup.tsx:381
-#, fuzzy, c-format
-msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
-msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
+#, c-format
+msgid "Withdrew%1$sfrom%2$s(%3$s)."
+msgstr ""
 
 #: src/webex/pages/popup.tsx:391
-#, fuzzy, c-format
-msgid ""
-"Paid%1$sto merchant%2$s.\n"
-"%3$s(%4$s)\n"
-msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
+#, c-format
+msgid "Paid%1$sto merchant%2$s. %3$s (%4$s)"
+msgstr ""
 
 #: src/webex/pages/popup.tsx:401
+#, fuzzy, c-format
+msgid "Merchant%1$sgave a refund over%2$s."
+msgstr "Säljaren %1$sgav en återbetalning på %2$s.\n"
+
+#: src/webex/pages/popup.tsx:411
 #, c-format
-msgid "Merchant%1$sgave a refund over%2$s.\n"
+msgid "tip"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:411
+#: src/webex/pages/popup.tsx:414
 #, fuzzy, c-format
-msgid ""
-"Merchant%1$sgave\n"
-"a%2$sof%3$s.\n"
-"%4$s%5$s"
+msgid "Merchant%1$sgave a%2$sof%3$s."
+msgstr "Säljaren %1$sgav en återbetalning på %2$s.\n"
+
+#: src/webex/pages/popup.tsx:419
+#, c-format
+msgid "You did not accept the tip yet."
 msgstr ""
-"%1$s\n"
-"               möchte einen Vertrag über %2$s\n"
-"               mit Ihnen abschließen."
 
-#: src/webex/pages/popup.tsx:421
+#: src/webex/pages/popup.tsx:424
 #, c-format
 msgid "Unknown event (%1$s)"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:464
+#: src/webex/pages/popup.tsx:467
 #, c-format
 msgid "Error: could not retrieve event history"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:489
+#: src/webex/pages/popup.tsx:492
 #, c-format
 msgid "Your wallet has no events recorded."
-msgstr "Ihre Geldbörse verzeichnet keine Vorkommnisse."
+msgstr "plånboken"
 
 #: src/webex/pages/return-coins.tsx:105
 #, c-format
 msgid "Wire to bank account"
-msgstr ""
+msgstr "Övervisa till bank konto"
 
 #: src/webex/pages/return-coins.tsx:173
-#, fuzzy, c-format
+#, c-format
 msgid "Confirm"
-msgstr "Bezahlung bestätigen"
+msgstr "Bekräfta"
 
 #: src/webex/pages/return-coins.tsx:176
-#, fuzzy, c-format
+#, c-format
 msgid "Cancel"
-msgstr "Saldo"
+msgstr "Avbryt"
 
 #: src/webex/renderHtml.tsx:225
-#, fuzzy, c-format
+#, c-format
 msgid "Withdrawal fees:"
-msgstr "Abheben bei"
+msgstr "Utbetalnings avgifter:"
 
 #: src/webex/renderHtml.tsx:226
 #, c-format
@@ -372,27 +384,27 @@ msgstr ""
 #: src/webex/renderHtml.tsx:233
 #, c-format
 msgid "# Coins"
-msgstr ""
+msgstr "# Mynt"
 
 #: src/webex/renderHtml.tsx:234
 #, c-format
 msgid "Value"
-msgstr ""
+msgstr "Värde"
 
 #: src/webex/renderHtml.tsx:235
-#, fuzzy, c-format
+#, c-format
 msgid "Withdraw Fee"
-msgstr "Abheben bei %1$s"
+msgstr "Utbetalnings avgift"
 
 #: src/webex/renderHtml.tsx:236
 #, c-format
 msgid "Refresh Fee"
-msgstr ""
+msgstr "Återhämtnings avgift"
 
 #: src/webex/renderHtml.tsx:237
 #, c-format
 msgid "Deposit Fee"
-msgstr ""
+msgstr "Depostitions avgift"
 
 #: src/wire.ts:38
 #, c-format
@@ -413,23 +425,3 @@ msgstr ""
 #, c-format
 msgid "Unknown Wire Detail"
 msgstr ""
-
-#, fuzzy
-#~ msgid "You are about to purchase:"
-#~ msgstr "Sie sind dabei, Folgendes zu kaufen:"
-
-#, fuzzy
-#~ msgid "Withdrawal fees: %1$s"
-#~ msgstr "Abheben bei %1$s"
-
-#~ msgid "Wallet depleted reserve (%1$s) at %2$s"
-#~ msgstr "Geldbörse hat die Reserve (%1$s) erschöpft"
-
-#~ msgid "Please enter a URL"
-#~ msgstr "Bitte eine URL eingeben"
-
-#~ msgid "The URL you've entered is not valid (must be absolute)"
-#~ msgstr "Die eingegebene URL ist nicht gültig (muss absolut sein)"
-
-#~ msgid "The bank wants to create a reserve over %1$s."
-#~ msgstr "Die Bank möchte eine Reserve über %1$s anlegen."
diff --git a/src/i18n/taler-wallet-webex.pot b/src/i18n/taler-wallet-webex.pot
index a4bffb01..38f817fa 100644
--- a/src/i18n/taler-wallet-webex.pot
+++ b/src/i18n/taler-wallet-webex.pot
@@ -29,7 +29,7 @@ msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:76
 #, c-format
-msgid "show more details\n"
+msgid "show more details"
 msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:90
@@ -95,7 +95,17 @@ msgstr ""
 
 #: src/webex/pages/confirm-contract.tsx:372
 #, c-format
-msgid "The merchant%1$s offers you to purchase:\n"
+msgid "The merchant%1$soffers you to purchase:"
+msgstr ""
+
+#: src/webex/pages/confirm-contract.tsx:381
+#, c-format
+msgid "The total price is%1$s (plus%2$sfees)."
+msgstr ""
+
+#: src/webex/pages/confirm-contract.tsx:385
+#, c-format
+msgid "The total price is%1$s."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:128
@@ -115,71 +125,74 @@ msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:210
 #, c-format
-msgid "The exchange is trusted by the wallet.\n"
+msgid "The exchange is trusted by the wallet."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:216
 #, c-format
-msgid "The exchange is audited by a trusted auditor.\n"
+msgid "The exchange is audited by a trusted auditor."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:222
 #, c-format
 msgid ""
-"Warning:  The exchange is neither directly trusted nor audited by a trusted "
-"auditor.\n"
-"If you withdraw from this exchange, it will be trusted in the future.\n"
+"Warning: The exchange is neither directly trusted nor audited by a trusted "
+"auditor. If you withdraw from this exchange, it will be trusted in the "
+"future."
 msgstr ""
 
 #: src/webex/pages/confirm-create-reserve.tsx:231
 #, c-format
 msgid ""
-"Using exchange provider%1$s.\n"
-"The exchange provider will charge\n"
-" %2$s in fees.\n"
+"Using exchange provider%1$s. The exchange provider will charge %2$s in fees."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:245
+#: src/webex/pages/confirm-create-reserve.tsx:243
 #, c-format
-msgid ""
-"Waiting for a response from\n"
-" %1$s"
+msgid "Waiting for a response from %1$s %2$s"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:262
+#: src/webex/pages/confirm-create-reserve.tsx:260
 #, c-format
 msgid ""
 "Information about fees will be available when an exchange provider is "
 "selected."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:281
+#: src/webex/pages/confirm-create-reserve.tsx:279
 #, c-format
 msgid ""
-"Your wallet (protocol version%1$s) might be outdated.%2$sThe exchange has a "
-"higher, incompatible\n"
-"protocol version (%3$s).\n"
+"Your wallet (protocol version%1$s) might be outdated.%2$s The exchange has a "
+"higher, incompatible protocol version (%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:292
+#: src/webex/pages/confirm-create-reserve.tsx:290
 #, c-format
 msgid ""
-"The chosen exchange (protocol version%1$smight be outdated.%2$sThe exchange "
-"has a lower, incompatible\n"
-"protocol version than your wallet (protocol version%3$s).\n"
+"The chosen exchange (protocol version%1$smight be outdated.%2$s The exchange "
+"has a lower, incompatible protocol version than your wallet (protocol version"
+"%3$s)."
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:311
+#: src/webex/pages/confirm-create-reserve.tsx:309
 #, c-format
 msgid "Accept fees and withdraw"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:316
+#: src/webex/pages/confirm-create-reserve.tsx:314
 #, c-format
 msgid "Change Exchange Provider"
 msgstr ""
 
-#: src/webex/pages/confirm-create-reserve.tsx:343
+#: src/webex/pages/confirm-create-reserve.tsx:335
+#, c-format
+msgid ""
+"Please select an exchange.  You can review the details before after your "
+"selection."
+msgstr ""
+
+#: src/webex/pages/confirm-create-reserve.tsx:341
+#: src/webex/pages/confirm-create-reserve.tsx:353
 #, c-format
 msgid "Select%1$s"
 msgstr ""
@@ -239,19 +252,17 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:253
 #, c-format
-msgid ""
-"You have no balance to show. Need some\n"
-" %1$s getting started?\n"
+msgid "You have no balance to show. Need some %1$s getting started?"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:270
 #, c-format
-msgid "%1$s incoming\n"
+msgid "%1$s incoming"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:283
 #, c-format
-msgid "%1$s being spent\n"
+msgid "%1$s being spent"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:310
@@ -276,59 +287,60 @@ msgstr ""
 
 #: src/webex/pages/popup.tsx:351
 #, c-format
-msgid ""
-"Bank requested reserve (%1$s) for\n"
-" %2$s.\n"
+msgid "Bank requested reserve (%1$s) for %2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:361
 #, c-format
-msgid ""
-"Started to withdraw\n"
-" %1$s%2$sfrom%3$s(%4$s).\n"
+msgid "Started to withdraw %1$s from%2$s(%3$s)."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:370
 #, c-format
-msgid "Merchant%1$soffered%2$scontract%3$s.\n"
+msgid "Merchant%1$soffered contract%2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:381
 #, c-format
-msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
+msgid "Withdrew%1$sfrom%2$s(%3$s)."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:391
 #, c-format
-msgid ""
-"Paid%1$sto merchant%2$s.\n"
-"%3$s(%4$s)\n"
+msgid "Paid%1$sto merchant%2$s. %3$s (%4$s)"
 msgstr ""
 
 #: src/webex/pages/popup.tsx:401
 #, c-format
-msgid "Merchant%1$sgave a refund over%2$s.\n"
+msgid "Merchant%1$sgave a refund over%2$s."
 msgstr ""
 
 #: src/webex/pages/popup.tsx:411
 #, c-format
-msgid ""
-"Merchant%1$sgave\n"
-"a%2$sof%3$s.\n"
-"%4$s%5$s"
+msgid "tip"
+msgstr ""
+
+#: src/webex/pages/popup.tsx:414
+#, c-format
+msgid "Merchant%1$sgave a%2$sof%3$s."
+msgstr ""
+
+#: src/webex/pages/popup.tsx:419
+#, c-format
+msgid "You did not accept the tip yet."
 msgstr ""
 
-#: src/webex/pages/popup.tsx:421
+#: src/webex/pages/popup.tsx:424
 #, c-format
 msgid "Unknown event (%1$s)"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:464
+#: src/webex/pages/popup.tsx:467
 #, c-format
 msgid "Error: could not retrieve event history"
 msgstr ""
 
-#: src/webex/pages/popup.tsx:489
+#: src/webex/pages/popup.tsx:492
 #, c-format
 msgid "Your wallet has no events recorded."
 msgstr ""
diff --git a/src/webex/pages/confirm-contract.tsx 
b/src/webex/pages/confirm-contract.tsx
index 0aaed483..24e08aec 100644
--- a/src/webex/pages/confirm-contract.tsx
+++ b/src/webex/pages/confirm-contract.tsx
@@ -370,8 +370,7 @@ class ContractPrompt extends 
React.Component<ContractPromptProps, ContractPrompt
     return (
         <div>
           <i18n.Translate wrap="p">
-            The merchant <span>{merchantName}</span> {" "}
-            offers you to purchase:
+            The merchant <span>{merchantName} </span> offers you to purchase:
           </i18n.Translate>
           <div style={{"text-align": "center"}}>
             <strong>{c.summary}</strong>
@@ -379,12 +378,12 @@ class ContractPrompt extends 
React.Component<ContractPromptProps, ContractPrompt
           <strong></strong>
           {products}
           {(this.state.payStatus && this.state.payStatus.coinSelection)
-            ? <p>
-                The total price is <span>{amount}</span>{" "}
+            ? <i18n.Translate wrap="p">
+                The total price is <span>{amount} </span>
                 (plus 
<span>{renderAmount(this.state.payStatus.coinSelection.totalFees)}</span> fees).
-              </p>
+              </i18n.Translate>
             :
-            <p>The total price is <span>{amount}</span>.</p>
+            <i18n.Translate wrap="p">The total price is 
<span>{amount}</span>.</i18n.Translate>
           }
           { this.state.confirmPayError
             ? PayErrorDialog()
diff --git a/src/webex/pages/confirm-create-reserve.tsx 
b/src/webex/pages/confirm-create-reserve.tsx
index 3c5bb575..5be6fe35 100644
--- a/src/webex/pages/confirm-create-reserve.tsx
+++ b/src/webex/pages/confirm-create-reserve.tsx
@@ -231,9 +231,7 @@ class ExchangeSelection extends 
ImplicitStateComponent<ExchangeSelectionProps> {
         <i18n.Translate wrap="p">
           Using exchange provider <strong>{this.url()}</strong>.
           The exchange provider will charge
-          {" "}
-          <span>{renderAmount(totalCost)}</span>
-          {" "}
+          {" "}<span>{renderAmount(totalCost)}</span>{" "}
           in fees.
         </i18n.Translate>
         {trustMessage}
@@ -245,7 +243,7 @@ class ExchangeSelection extends 
ImplicitStateComponent<ExchangeSelectionProps> {
       return (
         <i18n.Translate wrap="p">
           Waiting for a response from
-          {" "}
+          <span> </span>
           <em>{shortName}</em>
         </i18n.Translate>
       );
@@ -334,7 +332,7 @@ class ExchangeSelection extends 
ImplicitStateComponent<ExchangeSelectionProps> {
     console.log(exchanges);
     return (
       <div>
-        i18n.str`Please select an exchange.  You can review the details before 
after your selection.`
+        {i18n.str`Please select an exchange.  You can review the details 
before after your selection.`}
 
         {this.props.suggestedExchangeUrl && (
           <div>
@@ -352,7 +350,9 @@ class ExchangeSelection extends 
ImplicitStateComponent<ExchangeSelectionProps> {
             <h2>Known Exchanges</h2>
             {exchanges.map((e) => (
               <button key={e.baseUrl} className="pure-button button-success" 
onClick={() => this.select(e.baseUrl)}>
-              Select <strong>{e.baseUrl}</strong>
+                <i18n.Translate>
+                Select <strong>{e.baseUrl}</strong>
+                </i18n.Translate>
               </button>
             ))}
           </div>
@@ -368,9 +368,9 @@ class ExchangeSelection extends 
ImplicitStateComponent<ExchangeSelectionProps> {
     return (
       <div>
         <i18n.Translate wrap="p">
-          {"You are about to withdraw "}
-          <strong>{renderAmount(this.props.amount)}</strong>
-          {" from your bank account into your wallet."}
+          You are about to withdraw
+          {" "}<strong>{renderAmount(this.props.amount)}</strong>{" "}
+          from your bank account into your wallet.
         </i18n.Translate>
         {this.selectingExchange() ? this.renderSelect() : this.renderConfirm()}
       </div>
diff --git a/src/webex/pages/popup.tsx b/src/webex/pages/popup.tsx
index 6bba1014..6d0134b8 100644
--- a/src/webex/pages/popup.tsx
+++ b/src/webex/pages/popup.tsx
@@ -361,7 +361,7 @@ function formatHistoryItem(historyItem: HistoryRecord) {
       return (
         <i18n.Translate wrap="p">
           Started to withdraw
-          {" "}{renderAmount(d.requestedAmount)}<span> </span>
+          <span>{renderAmount(d.requestedAmount)}</span>
           from <span>{exchange}</span> (<span>{pub}</span>).
         </i18n.Translate>
       );
@@ -369,7 +369,7 @@ function formatHistoryItem(historyItem: HistoryRecord) {
     case "offer-contract": {
       return (
         <i18n.Translate wrap="p">
-          Merchant <em>{abbrev(d.merchantName, 15)}</em> offered<span> </span>
+          Merchant <em>{abbrev(d.merchantName, 15)}</em> offered
           contract <span>{abbrev(d.contractTermsHash)}</span>.
         </i18n.Translate>
       );
@@ -408,13 +408,16 @@ function formatHistoryItem(historyItem: HistoryRecord) {
       const tipPageUrl = new 
URI(chrome.extension.getURL("/src/webex/pages/tip.html"));
       const params = { tip_id: d.tipId, merchant_domain: d.merchantDomain };
       const url = tipPageUrl.query(params).href();
+      const tipLink = <a href={url} onClick={openTab(url)}>{i18n.str`tip`}</a>;
+      // i18n: Tip
       return (
-        <i18n.Translate wrap="p">
-          Merchant <span>{d.merchantDomain}</span> gave
-          a <a href={url} onClick={openTab(url)}> tip</a> of 
<span>{renderAmount(d.amount)}</span>.
-          <span> </span>
-          { d.accepted ? null : <span>You did not accept the tip yet.</span> }
-        </i18n.Translate>
+        <>
+          <i18n.Translate wrap="p">
+            Merchant <span>{d.merchantDomain}</span> gave
+            a <span>{tipLink}</span> of <span>{renderAmount(d.amount)}</span>.
+          </i18n.Translate>
+          <span> { d.accepted ? null : <i18n.Translate>You did not accept the 
tip yet.</i18n.Translate> }</span>
+        </>
       );
     }
     default:
diff --git a/tooling/pogen/pogen.js b/tooling/pogen/pogen.js
index 03cc0c34..ed634ef0 100644
--- a/tooling/pogen/pogen.js
+++ b/tooling/pogen/pogen.js
@@ -188,7 +188,8 @@ function processFile(sourceFile) {
                 case ts.SyntaxKind.JsxText:
                     {
                         var e = childNode;
-                        var t = e.getText().split("\n").map(trim).join("\n");
+                        var s = e.getFullText();
+                        var t = s.split("\n").map(trim).join(" ");
                         fragments.push(t);
                     }
                 case ts.SyntaxKind.JsxOpeningElement:
@@ -211,7 +212,7 @@ function processFile(sourceFile) {
             }
         };
         ts.forEachChild(node, process);
-        return fragments.join("");
+        return fragments.join("").trim().replace(/ +/g, " ");
     }
     function getJsxSingular(node) {
         var res;
diff --git a/tooling/pogen/pogen.ts b/tooling/pogen/pogen.ts
index 5721b571..39184391 100644
--- a/tooling/pogen/pogen.ts
+++ b/tooling/pogen/pogen.ts
@@ -211,7 +211,8 @@ export function processFile(sourceFile: ts.SourceFile) {
         case ts.SyntaxKind.JsxText:
         {
           let e = childNode as ts.JsxText;
-          let t = e.getText().split("\n").map(trim).join("\n");
+          let s = e.getFullText();
+          let t = s.split("\n").map(trim).join(" ");
           fragments.push(t);
         }
         case ts.SyntaxKind.JsxOpeningElement:
@@ -234,7 +235,7 @@ export function processFile(sourceFile: ts.SourceFile) {
       }
     };
     ts.forEachChild(node, process);
-    return fragments.join("");
+    return fragments.join("").trim().replace(/ +/g, " ");
   }
 
   function getJsxSingular(node: ts.Node) {

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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