aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-11-27 22:13:24 +0100
committerFlorian Dold <florian.dold@gmail.com>2016-11-27 22:13:24 +0100
commitd57b6a4bcc595aee990b8e1c63e786e7796b737b (patch)
tree9d5341a94d5b6f4c337b55617d534f9d0301e9a8
parentf72af162a00d1d0eb9dced873fd1fbdf4d0975a2 (diff)
modularize i18n
-rw-r--r--.gitignore1
-rw-r--r--Makefile17
-rw-r--r--package.json2
-rw-r--r--src/i18n.tsx120
-rw-r--r--src/i18n/de.po118
-rw-r--r--src/i18n/en-US.po106
-rw-r--r--src/i18n/fr.po106
-rw-r--r--src/i18n/it.po106
-rw-r--r--src/i18n/strings-prelude17
-rw-r--r--src/i18n/strings-prelude.js3
-rw-r--r--src/i18n/strings.ts21
-rw-r--r--src/i18n/taler-wallet-webex.pot106
-rw-r--r--src/pages/confirm-contract.html4
-rw-r--r--src/pages/confirm-contract.tsx9
-rw-r--r--src/pages/confirm-create-reserve.html5
-rw-r--r--src/pages/confirm-create-reserve.tsx41
-rw-r--r--src/pages/error.html5
-rw-r--r--src/pages/logs.html5
-rw-r--r--src/pages/tree.html5
-rw-r--r--src/popup/popup.html6
-rw-r--r--src/popup/popup.tsx19
-rw-r--r--src/renderHtml.tsx11
-rw-r--r--src/vendor/jed.d.ts13
-rw-r--r--tsconfig.json2
-rw-r--r--yarn.lock201
25 files changed, 518 insertions, 531 deletions
diff --git a/.gitignore b/.gitignore
index 6d2ba51c5..39a12e846 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,6 @@ src/**/*.js.map
src/**/*.js
!src/vendor/*.js
-!src/i18n/*.js
!src/content_scripts/*.js
!src/module-trampoline.js
!src/emscripten/taler-emscripten-lib.js
diff --git a/Makefile b/Makefile
index e2cd5e169..42f11b3ab 100644
--- a/Makefile
+++ b/Makefile
@@ -6,15 +6,15 @@ gulp = node_modules/gulp/bin/gulp.js
tsc = node_modules/typescript/bin/tsc
po2json = node_modules/po2json/bin/po2json
-.PHONY: pogen src/i18n/strings.js yarn-install
+.PHONY: pogen src/i18n/strings.ts yarn-install
-package-stable: tsc i18n yarn-install
+package-stable: tsc yarn-install
$(gulp) package-stable
-package-unstable: tsc i18n yarn-install
+package-unstable: tsc yarn-install
$(gulp) package-unstable
-tsc: tsconfig.json yarn-install
+tsc: tsconfig.json yarn-install src/i18n/strings.ts
$(tsc)
yarn-install:
@@ -23,8 +23,6 @@ yarn-install:
tsconfig.json: gulpfile.js yarn-install
$(gulp) tsconfig
-i18n: pogen msgmerge src/i18n/strings.js
-
pogen/pogen.js: pogen/pogen.ts pogen/tsconfig.json
cd pogen; ../$(tsc)
@@ -44,12 +42,13 @@ msgmerge:
dist:
$(gulp) srcdist
-src/i18n/strings.js: # $(ts)
- cp src/i18n/strings-prelude.js src/i18n/strings.js
+src/i18n/strings.ts: pogen msgmerge
+ cp src/i18n/strings-prelude src/i18n/strings.ts
for pofile in src/i18n/*.po; do \
b=`basename $$pofile`; \
lang=$${b%%.po}; \
$(po2json) -F -f jed1.x -d $$lang $$pofile $$pofile.json; \
- (echo -n "i18n.strings['$$lang'] = "; cat $$pofile.json; echo ';') >> $@; \
+ (echo -n "strings['$$lang'] = "; cat $$pofile.json; echo ';') >> $@; \
+ rm $$pofile.json; \
done
diff --git a/package.json b/package.json
index ef64c7bb4..9c8dbc4eb 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
"serve-static": "^1.11.1",
"systemjs": "^0.19.14",
"through2": "^2.0.1",
- "typescript": "^2.2.0-dev",
+ "typescript": "next",
"typhonjs-istanbul-instrument-jspm": "^0.1.0",
"vinyl": "^2.0.0",
"vinyl-fs": "^2.4.3"
diff --git a/src/i18n.tsx b/src/i18n.tsx
index 443d3997a..d03fd52ef 100644
--- a/src/i18n.tsx
+++ b/src/i18n.tsx
@@ -16,26 +16,26 @@
"use strict";
-document.addEventListener(
- "DOMContentLoaded",
- function () {
- try {
- document.body.lang = chrome.i18n.getUILanguage();
- } catch (e) {
- // chrome.* not available?
- }
- });
+import {default as Jed} from "src/vendor/jed";
+import {strings} from "src/i18n/strings";
-declare var i18n: any;
+console.log("jed:", Jed);
/**
* Information about the last two i18n results, used by plural()
* 2-element array, each element contains { stringFound: boolean, pluralValue: number }
*/
-var i18nResult = [] as any;
+const i18nResult = [] as any;
-const JedModule: any = (window as any)["Jed"];
-var jed: any;
+let lang: string;
+try {
+ lang = chrome.i18n.getUILanguage();
+} catch (e) {
+ lang = "en";
+ console.warn("i18n default language not available");
+}
+
+let jed = new Jed(strings[lang]);
class PluralNumber {
@@ -56,27 +56,9 @@ class PluralNumber {
/**
- * Initialize Jed
- */
-function init () {
- if ("object" === typeof jed) {
- return;
- }
- if ("function" !== typeof JedModule) {
- return;
- }
- if (!(i18n.lang in i18n.strings)) {
- i18n.lang = "en-US";
- return;
- }
- jed = new JedModule(i18n.strings[i18n.lang]);
-}
-
-
-/**
* Convert template strings to a msgid
*/
-function toI18nString(strings: string[]) {
+function toI18nString(strings: ReadonlyArray<string>) {
let str = "";
for (let i = 0; i < strings.length; i++) {
str += strings[i];
@@ -113,7 +95,7 @@ function getPluralValue (values: any) {
function setI18nResult (i18nString: string, pluralValue: number) {
i18nResult[1] = i18nResult[0];
i18nResult[0] = {
- stringFound: i18nString in i18n.strings[i18n.lang].locale_data[i18n.lang],
+ stringFound: i18nString in strings[lang].locale_data[lang],
pluralValue: pluralValue
};
}
@@ -122,35 +104,21 @@ function setI18nResult (i18nString: string, pluralValue: number) {
/**
* Internationalize a string template with arbitrary serialized values.
*/
-var i18n = (function i18n(strings: string[], ...values: any[]) {
- init();
- //console.log('i18n:', strings, values);
- if ("object" !== typeof jed) {
- // Fallback implementation in case i18n lib is not there
- return String.raw(strings as any, ...values);
- }
-
- let str = toI18nString (strings);
- let n = getPluralValue (values);
+export function str(strings: TemplateStringsArray, ...values: any[]) {
+ let str = toI18nString(strings);
+ let n = getPluralValue(values);
let tr = jed.translate(str).ifPlural(n, str).fetch(...values);
- setI18nResult (str, n);
+ setI18nResult(str, n);
return tr;
-}) as any;
-
-try {
- i18n.lang = chrome.i18n.getUILanguage();
-} catch (e) {
- console.warn("i18n default language not available");
}
-i18n.strings = {};
/**
* Pluralize based on first numeric parameter in the template.
* @todo The plural argument is used for extraction by pogen.js
*/
-i18n.plural = function (singular: any, plural: any) {
+function plural(singular: any, plural: any) {
if (i18nResult[1].stringFound) { // string found in translation file?
// 'singular' has the correctly translated & pluralized text
return singular;
@@ -167,7 +135,7 @@ interface TranslateSwitchProps {
/**
* Return a number that is used to determine the plural form for a template.
*/
-i18n.number = function (n : number) {
+function number(n : number) {
return new PluralNumber (n);
};
@@ -196,12 +164,9 @@ interface TranslateProps {
wrapProps?: any;
}
-i18n.Translate = class extends React.Component<TranslateProps,void> {
+
+export class Translate extends React.Component<TranslateProps,void> {
render(): JSX.Element {
- init();
- if (typeof jed !== "object") {
- return <div>{this.props.children}</div>;
- }
let s = stringifyChildren(this.props.children);
let tr = jed.ngettext(s, s, 1).split(/%(\d+)\$s/).filter((e: any, i: number) => i % 2 == 0);
let childArray = React.Children.toArray(this.props.children!);
@@ -231,17 +196,18 @@ i18n.Translate = class extends React.Component<TranslateProps,void> {
}
}
-i18n.TranslateSwitch = class extends React.Component<TranslateSwitchProps,void>{
+
+export class TranslateSwitch extends React.Component<TranslateSwitchProps,void>{
render(): JSX.Element {
let singular: React.ReactElement<TranslationPluralProps> | undefined;
let plural: React.ReactElement<TranslationPluralProps> | undefined;
let children = this.props.children;
if (children) {
React.Children.forEach(children, (child: any) => {
- if (child.type == i18n.TranslatePlural) {
+ if (child.type == TranslatePlural) {
plural = child;
}
- if (child.type == i18n.TranslateSingular) {
+ if (child.type == TranslateSingular) {
singular = child;
}
});
@@ -250,33 +216,22 @@ i18n.TranslateSwitch = class extends React.Component<TranslateSwitchProps,void>{
console.error("translation not found");
return React.createElement("span", {}, ["translation not found"]);
}
- init();
singular.props.target = this.props.target;
plural.props.target = this.props.target;;
- if (typeof "jed" !== "object") {
- if (this.props.target == 1) {
- return singular;
- } else {
- return plural;
- }
- } else {
- // We're looking up the translation based on the
- // singular, even if we must use the plural form.
- return singular;
- }
+ // We're looking up the translation based on the
+ // singular, even if we must use the plural form.
+ return singular;
}
}
+
interface TranslationPluralProps {
target: number;
}
-class TranslatePlural extends React.Component<TranslationPluralProps,void> {
+
+export class TranslatePlural extends React.Component<TranslationPluralProps,void> {
render(): JSX.Element {
- init();
- if (typeof jed !== "object") {
- return <div>{this.props.children}</div>;
- }
let s = stringifyChildren(this.props.children);
let tr = jed.ngettext(s, s, 1).split(/%(\d+)\$s/).filter((e: any, i: number) => i % 2 == 0);
let childArray = React.Children.toArray(this.props.children!);
@@ -303,14 +258,9 @@ class TranslatePlural extends React.Component<TranslationPluralProps,void> {
}
}
-i18n.TranslatePlural = TranslatePlural;
-class TranslateSingular extends React.Component<TranslationPluralProps,void> {
+export class TranslateSingular extends React.Component<TranslationPluralProps,void> {
render(): JSX.Element {
- init();
- if (typeof jed !== "object") {
- return <div>{this.props.children}</div>;
- }
let s = stringifyChildren(this.props.children);
let tr = jed.ngettext(s, s, 1).split(/%(\d+)\$s/).filter((e: any, i: number) => i % 2 == 0);
let childArray = React.Children.toArray(this.props.children!);
@@ -336,5 +286,3 @@ class TranslateSingular extends React.Component<TranslationPluralProps,void> {
return <div>{result}</div>;
}
}
-
-i18n.TranslateSingular = TranslateSingular;
diff --git a/src/i18n/de.po b/src/i18n/de.po
index e1486d233..df5e3c08e 100644
--- a/src/i18n/de.po
+++ b/src/i18n/de.po
@@ -27,27 +27,27 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/pages/confirm-contract.tsx:61
+#: src/pages/confirm-contract.tsx:62
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/pages/confirm-contract.tsx:75
+#: src/pages/confirm-contract.tsx:76
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/pages/confirm-contract.tsx:80
+#: src/pages/confirm-contract.tsx:81
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/pages/confirm-contract.tsx:156
+#: src/pages/confirm-contract.tsx:157
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
-#: src/pages/confirm-contract.tsx:157
+#: src/pages/confirm-contract.tsx:158
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -55,196 +55,203 @@ msgid ""
"wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:105
+#: src/pages/confirm-create-reserve.tsx:106
#, fuzzy, c-format
msgid "Withdrawal fees: %1$s"
msgstr "Abheben bei %1$s"
-#: src/pages/confirm-create-reserve.tsx:106
+#: src/pages/confirm-create-reserve.tsx:107
#, c-format
msgid "Rounding loss: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:109
+#: src/pages/confirm-create-reserve.tsx:110
#, c-format
msgid "# Coins"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:110
+#: src/pages/confirm-create-reserve.tsx:111
#, c-format
msgid "Value"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:111
+#: src/pages/confirm-create-reserve.tsx:112
#, fuzzy, c-format
msgid "Withdraw Fee"
msgstr "Abheben bei %1$s"
-#: src/pages/confirm-create-reserve.tsx:112
+#: src/pages/confirm-create-reserve.tsx:113
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:113
+#: src/pages/confirm-create-reserve.tsx:114
#, c-format
msgid "Deposit Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:146
+#: src/pages/confirm-create-reserve.tsx:147
#, fuzzy, c-format
msgid "Withdraw fees:"
msgstr "Abheben bei %1$s"
-#: src/pages/confirm-create-reserve.tsx:180
+#: src/pages/confirm-create-reserve.tsx:182
#, c-format
msgid "view fee structure / select different exchange provider"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:194
+#: src/pages/confirm-create-reserve.tsx:196
#, c-format
msgid "Detailed Fee Structure"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:210
+#: src/pages/confirm-create-reserve.tsx:212
#, c-format
msgid ""
"The exchange provider will charge\n"
" %1$s in fees.\n"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:222
+#: src/pages/confirm-create-reserve.tsx:224
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:233
+#: src/pages/confirm-create-reserve.tsx:235
#, c-format
msgid "A problem occured, see below."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:239
+#: src/pages/confirm-create-reserve.tsx:241
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:247
+#: src/pages/confirm-create-reserve.tsx:249
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:256
+#: src/pages/confirm-create-reserve.tsx:258
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:278
+#: src/pages/confirm-create-reserve.tsx:280
#, c-format
msgid "Error: URL is empty"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:286
+#: src/pages/confirm-create-reserve.tsx:288
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:344
+#: src/pages/confirm-create-reserve.tsx:347
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:371
+#: src/pages/confirm-create-reserve.tsx:374
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:385
+#: src/pages/confirm-create-reserve.tsx:388
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:393
+#: src/pages/confirm-create-reserve.tsx:396
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. TODO:generic error reporting function or component.
-#: src/pages/confirm-create-reserve.tsx:410
+#: src/pages/confirm-create-reserve.tsx:413
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/popup/popup.tsx:173
+#: src/popup/popup.tsx:172
#, c-format
msgid "Balance"
msgstr "Saldo"
-#: src/popup/popup.tsx:176
+#: src/popup/popup.tsx:175
#, c-format
msgid "History"
msgstr "Verlauf"
-#: src/popup/popup.tsx:179
+#: src/popup/popup.tsx:178
#, c-format
msgid "Debug"
msgstr "Debug"
-#: src/popup/popup.tsx:239
+#: src/popup/popup.tsx:238
#, c-format
msgid "help"
msgstr ""
-#: src/popup/popup.tsx:244
+#: src/popup/popup.tsx:243
#, 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?"
-#: src/popup/popup.tsx:261
+#: src/popup/popup.tsx:260
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/popup/popup.tsx:274
+#: src/popup/popup.tsx:273
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/popup/popup.tsx:300
+#: src/popup/popup.tsx:299
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/popup/popup.tsx:340
+#: src/popup/popup.tsx:337
#, fuzzy, c-format
-msgid "Bank requested reserve (%1$s) for %2$s."
+msgid "Bank requested reserve (%1$s) for%2$s.\n"
msgstr "Bank bestätig anlegen der Reserve (%1$s) bei %2$s"
-#: src/popup/popup.tsx:351
+#: src/popup/popup.tsx:346
#, fuzzy, c-format
-msgid "Started to withdraw %1$s from %2$s (%3$s)."
+msgid ""
+"Started to withdraw\n"
+" %1$s from%2$s(%3$s).\n"
msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
-#: src/popup/popup.tsx:361
+#: src/popup/popup.tsx:358
#, c-format
-msgid "Merchant %1$s offered contract %2$s."
+msgid "Merchant%1$soffered contract%2$s;\n"
msgstr ""
-#: src/popup/popup.tsx:371
+#: src/popup/popup.tsx:368
#, fuzzy, c-format
-msgid "Withdrew %1$s from %2$s (%3$s)."
+msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
-#: src/popup/popup.tsx:382
+#: src/popup/popup.tsx:379
#, fuzzy, c-format
-msgid "Paid %1$s to merchant %2$s. (%3$s)"
+msgid "Paid%1$sto merchant%2$s. (%3$s)\n"
msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt"
+#: src/popup/popup.tsx:386
+#, c-format
+msgid "Unknown event (%1$s)"
+msgstr ""
+
#: src/popup/popup.tsx:429
#, c-format
msgid "Error: could not retrieve event history"
@@ -255,20 +262,19 @@ msgstr ""
msgid "Your wallet has no events recorded."
msgstr "Ihre Geldbörse verzeichnet keine Vorkommnisse."
-#: src/renderHtml.tsx:42
+#: src/renderHtml.tsx:38
+#, fuzzy, c-format
+msgid "The merchant%1$swants to enter a contract over%2$s with you.\n"
+msgstr ""
+"%1$s\n"
+" möchte einen Vertrag über %2$s\n"
+" mit Ihnen abschließen."
+
+#: src/renderHtml.tsx:43
#, fuzzy, c-format
msgid "You are about to purchase:"
msgstr "Sie sind dabei, Folgendes zu kaufen:"
-#~ msgid ""
-#~ "%1$s\n"
-#~ " wants to enter a contract over %2$s\n"
-#~ " with you."
-#~ msgstr ""
-#~ "%1$s\n"
-#~ " möchte einen Vertrag über %2$s\n"
-#~ " mit Ihnen abschließen."
-
#~ msgid "Confirm Payment"
#~ msgstr "Bezahlung bestätigen"
diff --git a/src/i18n/en-US.po b/src/i18n/en-US.po
index 7ff886a01..fae9d5336 100644
--- a/src/i18n/en-US.po
+++ b/src/i18n/en-US.po
@@ -27,27 +27,27 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/pages/confirm-contract.tsx:61
+#: src/pages/confirm-contract.tsx:62
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/pages/confirm-contract.tsx:75
+#: src/pages/confirm-contract.tsx:76
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/pages/confirm-contract.tsx:80
+#: src/pages/confirm-contract.tsx:81
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/pages/confirm-contract.tsx:156
+#: src/pages/confirm-contract.tsx:157
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
-#: src/pages/confirm-contract.tsx:157
+#: src/pages/confirm-contract.tsx:158
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -55,194 +55,201 @@ msgid ""
"wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:105
+#: src/pages/confirm-create-reserve.tsx:106
#, c-format
msgid "Withdrawal fees: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:106
+#: src/pages/confirm-create-reserve.tsx:107
#, c-format
msgid "Rounding loss: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:109
+#: src/pages/confirm-create-reserve.tsx:110
#, c-format
msgid "# Coins"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:110
+#: src/pages/confirm-create-reserve.tsx:111
#, c-format
msgid "Value"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:111
+#: src/pages/confirm-create-reserve.tsx:112
#, c-format
msgid "Withdraw Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:112
+#: src/pages/confirm-create-reserve.tsx:113
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:113
+#: src/pages/confirm-create-reserve.tsx:114
#, c-format
msgid "Deposit Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:146
+#: src/pages/confirm-create-reserve.tsx:147
#, c-format
msgid "Withdraw fees:"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:180
+#: src/pages/confirm-create-reserve.tsx:182
#, c-format
msgid "view fee structure / select different exchange provider"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:194
+#: src/pages/confirm-create-reserve.tsx:196
#, c-format
msgid "Detailed Fee Structure"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:210
+#: src/pages/confirm-create-reserve.tsx:212
#, c-format
msgid ""
"The exchange provider will charge\n"
" %1$s in fees.\n"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:222
+#: src/pages/confirm-create-reserve.tsx:224
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:233
+#: src/pages/confirm-create-reserve.tsx:235
#, c-format
msgid "A problem occured, see below."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:239
+#: src/pages/confirm-create-reserve.tsx:241
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:247
+#: src/pages/confirm-create-reserve.tsx:249
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:256
+#: src/pages/confirm-create-reserve.tsx:258
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:278
+#: src/pages/confirm-create-reserve.tsx:280
#, c-format
msgid "Error: URL is empty"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:286
+#: src/pages/confirm-create-reserve.tsx:288
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:344
+#: src/pages/confirm-create-reserve.tsx:347
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:371
+#: src/pages/confirm-create-reserve.tsx:374
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:385
+#: src/pages/confirm-create-reserve.tsx:388
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:393
+#: src/pages/confirm-create-reserve.tsx:396
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. TODO:generic error reporting function or component.
-#: src/pages/confirm-create-reserve.tsx:410
+#: src/pages/confirm-create-reserve.tsx:413
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/popup/popup.tsx:173
+#: src/popup/popup.tsx:172
#, c-format
msgid "Balance"
msgstr ""
-#: src/popup/popup.tsx:176
+#: src/popup/popup.tsx:175
#, c-format
msgid "History"
msgstr ""
-#: src/popup/popup.tsx:179
+#: src/popup/popup.tsx:178
#, c-format
msgid "Debug"
msgstr ""
-#: src/popup/popup.tsx:239
+#: src/popup/popup.tsx:238
#, c-format
msgid "help"
msgstr ""
-#: src/popup/popup.tsx:244
+#: src/popup/popup.tsx:243
#, c-format
msgid ""
"You have no balance to show. Need some\n"
" %1$s getting started?\n"
msgstr ""
-#: src/popup/popup.tsx:261
+#: src/popup/popup.tsx:260
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/popup/popup.tsx:274
+#: src/popup/popup.tsx:273
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/popup/popup.tsx:300
+#: src/popup/popup.tsx:299
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/popup/popup.tsx:340
+#: src/popup/popup.tsx:337
#, c-format
-msgid "Bank requested reserve (%1$s) for %2$s."
+msgid "Bank requested reserve (%1$s) for%2$s.\n"
msgstr ""
-#: src/popup/popup.tsx:351
+#: src/popup/popup.tsx:346
#, c-format
-msgid "Started to withdraw %1$s from %2$s (%3$s)."
+msgid ""
+"Started to withdraw\n"
+" %1$s from%2$s(%3$s).\n"
msgstr ""
-#: src/popup/popup.tsx:361
+#: src/popup/popup.tsx:358
#, c-format
-msgid "Merchant %1$s offered contract %2$s."
+msgid "Merchant%1$soffered contract%2$s;\n"
msgstr ""
-#: src/popup/popup.tsx:371
+#: src/popup/popup.tsx:368
#, c-format
-msgid "Withdrew %1$s from %2$s (%3$s)."
+msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr ""
-#: src/popup/popup.tsx:382
+#: src/popup/popup.tsx:379
#, c-format
-msgid "Paid %1$s to merchant %2$s. (%3$s)"
+msgid "Paid%1$sto merchant%2$s. (%3$s)\n"
+msgstr ""
+
+#: src/popup/popup.tsx:386
+#, c-format
+msgid "Unknown event (%1$s)"
msgstr ""
#: src/popup/popup.tsx:429
@@ -255,7 +262,12 @@ msgstr ""
msgid "Your wallet has no events recorded."
msgstr ""
-#: src/renderHtml.tsx:42
+#: src/renderHtml.tsx:38
+#, c-format
+msgid "The merchant%1$swants to enter a contract over%2$s with you.\n"
+msgstr ""
+
+#: src/renderHtml.tsx:43
#, c-format
msgid "You are about to purchase:"
msgstr ""
diff --git a/src/i18n/fr.po b/src/i18n/fr.po
index 8c68a63f1..8bfdf57d0 100644
--- a/src/i18n/fr.po
+++ b/src/i18n/fr.po
@@ -27,27 +27,27 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/pages/confirm-contract.tsx:61
+#: src/pages/confirm-contract.tsx:62
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/pages/confirm-contract.tsx:75
+#: src/pages/confirm-contract.tsx:76
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/pages/confirm-contract.tsx:80
+#: src/pages/confirm-contract.tsx:81
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/pages/confirm-contract.tsx:156
+#: src/pages/confirm-contract.tsx:157
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
-#: src/pages/confirm-contract.tsx:157
+#: src/pages/confirm-contract.tsx:158
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -55,194 +55,201 @@ msgid ""
"wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:105
+#: src/pages/confirm-create-reserve.tsx:106
#, c-format
msgid "Withdrawal fees: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:106
+#: src/pages/confirm-create-reserve.tsx:107
#, c-format
msgid "Rounding loss: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:109
+#: src/pages/confirm-create-reserve.tsx:110
#, c-format
msgid "# Coins"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:110
+#: src/pages/confirm-create-reserve.tsx:111
#, c-format
msgid "Value"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:111
+#: src/pages/confirm-create-reserve.tsx:112
#, c-format
msgid "Withdraw Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:112
+#: src/pages/confirm-create-reserve.tsx:113
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:113
+#: src/pages/confirm-create-reserve.tsx:114
#, c-format
msgid "Deposit Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:146
+#: src/pages/confirm-create-reserve.tsx:147
#, c-format
msgid "Withdraw fees:"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:180
+#: src/pages/confirm-create-reserve.tsx:182
#, c-format
msgid "view fee structure / select different exchange provider"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:194
+#: src/pages/confirm-create-reserve.tsx:196
#, c-format
msgid "Detailed Fee Structure"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:210
+#: src/pages/confirm-create-reserve.tsx:212
#, c-format
msgid ""
"The exchange provider will charge\n"
" %1$s in fees.\n"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:222
+#: src/pages/confirm-create-reserve.tsx:224
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:233
+#: src/pages/confirm-create-reserve.tsx:235
#, c-format
msgid "A problem occured, see below."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:239
+#: src/pages/confirm-create-reserve.tsx:241
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:247
+#: src/pages/confirm-create-reserve.tsx:249
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:256
+#: src/pages/confirm-create-reserve.tsx:258
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:278
+#: src/pages/confirm-create-reserve.tsx:280
#, c-format
msgid "Error: URL is empty"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:286
+#: src/pages/confirm-create-reserve.tsx:288
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:344
+#: src/pages/confirm-create-reserve.tsx:347
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:371
+#: src/pages/confirm-create-reserve.tsx:374
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:385
+#: src/pages/confirm-create-reserve.tsx:388
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:393
+#: src/pages/confirm-create-reserve.tsx:396
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. TODO:generic error reporting function or component.
-#: src/pages/confirm-create-reserve.tsx:410
+#: src/pages/confirm-create-reserve.tsx:413
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/popup/popup.tsx:173
+#: src/popup/popup.tsx:172
#, c-format
msgid "Balance"
msgstr ""
-#: src/popup/popup.tsx:176
+#: src/popup/popup.tsx:175
#, c-format
msgid "History"
msgstr ""
-#: src/popup/popup.tsx:179
+#: src/popup/popup.tsx:178
#, c-format
msgid "Debug"
msgstr ""
-#: src/popup/popup.tsx:239
+#: src/popup/popup.tsx:238
#, c-format
msgid "help"
msgstr ""
-#: src/popup/popup.tsx:244
+#: src/popup/popup.tsx:243
#, c-format
msgid ""
"You have no balance to show. Need some\n"
" %1$s getting started?\n"
msgstr ""
-#: src/popup/popup.tsx:261
+#: src/popup/popup.tsx:260
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/popup/popup.tsx:274
+#: src/popup/popup.tsx:273
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/popup/popup.tsx:300
+#: src/popup/popup.tsx:299
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/popup/popup.tsx:340
+#: src/popup/popup.tsx:337
#, c-format
-msgid "Bank requested reserve (%1$s) for %2$s."
+msgid "Bank requested reserve (%1$s) for%2$s.\n"
msgstr ""
-#: src/popup/popup.tsx:351
+#: src/popup/popup.tsx:346
#, c-format
-msgid "Started to withdraw %1$s from %2$s (%3$s)."
+msgid ""
+"Started to withdraw\n"
+" %1$s from%2$s(%3$s).\n"
msgstr ""
-#: src/popup/popup.tsx:361
+#: src/popup/popup.tsx:358
#, c-format
-msgid "Merchant %1$s offered contract %2$s."
+msgid "Merchant%1$soffered contract%2$s;\n"
msgstr ""
-#: src/popup/popup.tsx:371
+#: src/popup/popup.tsx:368
#, c-format
-msgid "Withdrew %1$s from %2$s (%3$s)."
+msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr ""
-#: src/popup/popup.tsx:382
+#: src/popup/popup.tsx:379
#, c-format
-msgid "Paid %1$s to merchant %2$s. (%3$s)"
+msgid "Paid%1$sto merchant%2$s. (%3$s)\n"
+msgstr ""
+
+#: src/popup/popup.tsx:386
+#, c-format
+msgid "Unknown event (%1$s)"
msgstr ""
#: src/popup/popup.tsx:429
@@ -255,7 +262,12 @@ msgstr ""
msgid "Your wallet has no events recorded."
msgstr ""
-#: src/renderHtml.tsx:42
+#: src/renderHtml.tsx:38
+#, c-format
+msgid "The merchant%1$swants to enter a contract over%2$s with you.\n"
+msgstr ""
+
+#: src/renderHtml.tsx:43
#, c-format
msgid "You are about to purchase:"
msgstr ""
diff --git a/src/i18n/it.po b/src/i18n/it.po
index 8c68a63f1..8bfdf57d0 100644
--- a/src/i18n/it.po
+++ b/src/i18n/it.po
@@ -27,27 +27,27 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/pages/confirm-contract.tsx:61
+#: src/pages/confirm-contract.tsx:62
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/pages/confirm-contract.tsx:75
+#: src/pages/confirm-contract.tsx:76
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/pages/confirm-contract.tsx:80
+#: src/pages/confirm-contract.tsx:81
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/pages/confirm-contract.tsx:156
+#: src/pages/confirm-contract.tsx:157
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
-#: src/pages/confirm-contract.tsx:157
+#: src/pages/confirm-contract.tsx:158
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -55,194 +55,201 @@ msgid ""
"wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:105
+#: src/pages/confirm-create-reserve.tsx:106
#, c-format
msgid "Withdrawal fees: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:106
+#: src/pages/confirm-create-reserve.tsx:107
#, c-format
msgid "Rounding loss: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:109
+#: src/pages/confirm-create-reserve.tsx:110
#, c-format
msgid "# Coins"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:110
+#: src/pages/confirm-create-reserve.tsx:111
#, c-format
msgid "Value"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:111
+#: src/pages/confirm-create-reserve.tsx:112
#, c-format
msgid "Withdraw Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:112
+#: src/pages/confirm-create-reserve.tsx:113
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:113
+#: src/pages/confirm-create-reserve.tsx:114
#, c-format
msgid "Deposit Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:146
+#: src/pages/confirm-create-reserve.tsx:147
#, c-format
msgid "Withdraw fees:"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:180
+#: src/pages/confirm-create-reserve.tsx:182
#, c-format
msgid "view fee structure / select different exchange provider"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:194
+#: src/pages/confirm-create-reserve.tsx:196
#, c-format
msgid "Detailed Fee Structure"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:210
+#: src/pages/confirm-create-reserve.tsx:212
#, c-format
msgid ""
"The exchange provider will charge\n"
" %1$s in fees.\n"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:222
+#: src/pages/confirm-create-reserve.tsx:224
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:233
+#: src/pages/confirm-create-reserve.tsx:235
#, c-format
msgid "A problem occured, see below."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:239
+#: src/pages/confirm-create-reserve.tsx:241
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:247
+#: src/pages/confirm-create-reserve.tsx:249
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:256
+#: src/pages/confirm-create-reserve.tsx:258
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:278
+#: src/pages/confirm-create-reserve.tsx:280
#, c-format
msgid "Error: URL is empty"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:286
+#: src/pages/confirm-create-reserve.tsx:288
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:344
+#: src/pages/confirm-create-reserve.tsx:347
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:371
+#: src/pages/confirm-create-reserve.tsx:374
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:385
+#: src/pages/confirm-create-reserve.tsx:388
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:393
+#: src/pages/confirm-create-reserve.tsx:396
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. TODO:generic error reporting function or component.
-#: src/pages/confirm-create-reserve.tsx:410
+#: src/pages/confirm-create-reserve.tsx:413
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/popup/popup.tsx:173
+#: src/popup/popup.tsx:172
#, c-format
msgid "Balance"
msgstr ""
-#: src/popup/popup.tsx:176
+#: src/popup/popup.tsx:175
#, c-format
msgid "History"
msgstr ""
-#: src/popup/popup.tsx:179
+#: src/popup/popup.tsx:178
#, c-format
msgid "Debug"
msgstr ""
-#: src/popup/popup.tsx:239
+#: src/popup/popup.tsx:238
#, c-format
msgid "help"
msgstr ""
-#: src/popup/popup.tsx:244
+#: src/popup/popup.tsx:243
#, c-format
msgid ""
"You have no balance to show. Need some\n"
" %1$s getting started?\n"
msgstr ""
-#: src/popup/popup.tsx:261
+#: src/popup/popup.tsx:260
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/popup/popup.tsx:274
+#: src/popup/popup.tsx:273
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/popup/popup.tsx:300
+#: src/popup/popup.tsx:299
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/popup/popup.tsx:340
+#: src/popup/popup.tsx:337
#, c-format
-msgid "Bank requested reserve (%1$s) for %2$s."
+msgid "Bank requested reserve (%1$s) for%2$s.\n"
msgstr ""
-#: src/popup/popup.tsx:351
+#: src/popup/popup.tsx:346
#, c-format
-msgid "Started to withdraw %1$s from %2$s (%3$s)."
+msgid ""
+"Started to withdraw\n"
+" %1$s from%2$s(%3$s).\n"
msgstr ""
-#: src/popup/popup.tsx:361
+#: src/popup/popup.tsx:358
#, c-format
-msgid "Merchant %1$s offered contract %2$s."
+msgid "Merchant%1$soffered contract%2$s;\n"
msgstr ""
-#: src/popup/popup.tsx:371
+#: src/popup/popup.tsx:368
#, c-format
-msgid "Withdrew %1$s from %2$s (%3$s)."
+msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr ""
-#: src/popup/popup.tsx:382
+#: src/popup/popup.tsx:379
#, c-format
-msgid "Paid %1$s to merchant %2$s. (%3$s)"
+msgid "Paid%1$sto merchant%2$s. (%3$s)\n"
+msgstr ""
+
+#: src/popup/popup.tsx:386
+#, c-format
+msgid "Unknown event (%1$s)"
msgstr ""
#: src/popup/popup.tsx:429
@@ -255,7 +262,12 @@ msgstr ""
msgid "Your wallet has no events recorded."
msgstr ""
-#: src/renderHtml.tsx:42
+#: src/renderHtml.tsx:38
+#, c-format
+msgid "The merchant%1$swants to enter a contract over%2$s with you.\n"
+msgstr ""
+
+#: src/renderHtml.tsx:43
#, c-format
msgid "You are about to purchase:"
msgstr ""
diff --git a/src/i18n/strings-prelude b/src/i18n/strings-prelude
new file mode 100644
index 000000000..147b6c939
--- /dev/null
+++ b/src/i18n/strings-prelude
@@ -0,0 +1,17 @@
+/*
+ This file is part of TALER
+ (C) 2016 Inria
+
+ 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.
+
+ 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
+ TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+export let strings: {[s: string]: any} = {};
diff --git a/src/i18n/strings-prelude.js b/src/i18n/strings-prelude.js
deleted file mode 100644
index 0e9ddc468..000000000
--- a/src/i18n/strings-prelude.js
+++ /dev/null
@@ -1,3 +0,0 @@
-if (!window.i18n) {
- throw Error("Module loading order incorrect, please load i18n module before loading i18n-strings");
-}
diff --git a/src/i18n/strings.ts b/src/i18n/strings.ts
new file mode 100644
index 000000000..08ba92992
--- /dev/null
+++ b/src/i18n/strings.ts
@@ -0,0 +1,21 @@
+/*
+ This file is part of TALER
+ (C) 2016 Inria
+
+ 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.
+
+ 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
+ TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+export let strings: {[s: string]: any} = {};
+strings['de'] = {"domain":"de","locale_data":{"de":{"":{"domain":"de","plural_forms":"nplurals=2; plural=(n != 1);","lang":""},"show more details\n":[""],"Accepted exchanges:":[""],"Exchanges in the wallet:":[""],"You have insufficient funds of the requested currency in your wallet.":[""],"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.":[""],"Withdrawal fees: %1$s":["Abheben bei %1$s"],"Rounding loss: %1$s":[""],"# Coins":[""],"Value":[""],"Withdraw Fee":["Abheben bei %1$s"],"Refresh Fee":[""],"Deposit Fee":[""],"Withdraw fees:":["Abheben bei %1$s"],"view fee structure / select different exchange provider":[""],"Detailed Fee Structure":[""],"The exchange provider will charge\n %1$s in fees.\n":[""],"Waiting for a response from\n %1$s":[""],"A problem occured, see below.":[""],"Information about fees will be available when an exchange provider is selected.":[""],"You are about to withdraw %1$s from your bank account into your wallet.":[""],"Accept fees and withdraw":[""],"Error: URL is empty":[""],"Error: URL may not be relative":[""],"Oops, something went wrong. The wallet responded with error status (%1$s).":[""],"Checking URL, please wait ...":[""],"Can't parse amount: %1$s":[""],"Can't parse wire_types: %1$s":[""],"Fatal error: \"%1$s\".":[""],"Balance":["Saldo"],"History":["Verlauf"],"Debug":["Debug"],"help":[""],"You have no balance to show. Need some\n %1$s getting started?\n":["Sie haben kein Digitalgeld. Wollen Sie %1$s? abheben?"],"%1$s incoming\n":[""],"%1$s being spent\n":[""],"Error: could not retrieve balance information.":[""],"Bank requested reserve (%1$s) for%2$s.\n":["Bank bestätig anlegen der Reserve (%1$s) bei %2$s"],"Started to withdraw\n %1$s from%2$s(%3$s).\n":["Reserve (%1$s) mit %2$s bei %3$s erzeugt"],"Merchant%1$soffered contract%2$s;\n":[""],"Withdrew%1$sfrom%2$s(%3$s).\n":["Reserve (%1$s) mit %2$s bei %3$s erzeugt"],"Paid%1$sto merchant%2$s. (%3$s)\n":["Reserve (%1$s) mit %2$s bei %3$s erzeugt"],"Unknown event (%1$s)":[""],"Error: could not retrieve event history":[""],"Your wallet has no events recorded.":["Ihre Geldbörse verzeichnet keine Vorkommnisse."],"The merchant%1$swants to enter a contract over%2$s with you.\n":["%1$s\n möchte einen Vertrag über %2$s\n mit Ihnen abschließen."],"You are about to purchase:":["Sie sind dabei, Folgendes zu kaufen:"]}}};
+strings['en-US'] = {"domain":"en-US","locale_data":{"en-US":{"":{"domain":"en-US","plural_forms":"nplurals=2; plural=(n != 1);","lang":""},"show more details\n":[""],"Accepted exchanges:":[""],"Exchanges in the wallet:":[""],"You have insufficient funds of the requested currency in your wallet.":[""],"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.":[""],"Withdrawal fees: %1$s":[""],"Rounding loss: %1$s":[""],"# Coins":[""],"Value":[""],"Withdraw Fee":[""],"Refresh Fee":[""],"Deposit Fee":[""],"Withdraw fees:":[""],"view fee structure / select different exchange provider":[""],"Detailed Fee Structure":[""],"The exchange provider will charge\n %1$s in fees.\n":[""],"Waiting for a response from\n %1$s":[""],"A problem occured, see below.":[""],"Information about fees will be available when an exchange provider is selected.":[""],"You are about to withdraw %1$s from your bank account into your wallet.":[""],"Accept fees and withdraw":[""],"Error: URL is empty":[""],"Error: URL may not be relative":[""],"Oops, something went wrong. The wallet responded with error status (%1$s).":[""],"Checking URL, please wait ...":[""],"Can't parse amount: %1$s":[""],"Can't parse wire_types: %1$s":[""],"Fatal error: \"%1$s\".":[""],"Balance":[""],"History":[""],"Debug":[""],"help":[""],"You have no balance to show. Need some\n %1$s getting started?\n":[""],"%1$s incoming\n":[""],"%1$s being spent\n":[""],"Error: could not retrieve balance information.":[""],"Bank requested reserve (%1$s) for%2$s.\n":[""],"Started to withdraw\n %1$s from%2$s(%3$s).\n":[""],"Merchant%1$soffered contract%2$s;\n":[""],"Withdrew%1$sfrom%2$s(%3$s).\n":[""],"Paid%1$sto merchant%2$s. (%3$s)\n":[""],"Unknown event (%1$s)":[""],"Error: could not retrieve event history":[""],"Your wallet has no events recorded.":[""],"The merchant%1$swants to enter a contract over%2$s with you.\n":[""],"You are about to purchase:":[""]}}};
+strings['fr'] = {"domain":"fr","locale_data":{"fr":{"":{"domain":"fr","plural_forms":"nplurals=2; plural=(n != 1);","lang":""},"show more details\n":[""],"Accepted exchanges:":[""],"Exchanges in the wallet:":[""],"You have insufficient funds of the requested currency in your wallet.":[""],"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.":[""],"Withdrawal fees: %1$s":[""],"Rounding loss: %1$s":[""],"# Coins":[""],"Value":[""],"Withdraw Fee":[""],"Refresh Fee":[""],"Deposit Fee":[""],"Withdraw fees:":[""],"view fee structure / select different exchange provider":[""],"Detailed Fee Structure":[""],"The exchange provider will charge\n %1$s in fees.\n":[""],"Waiting for a response from\n %1$s":[""],"A problem occured, see below.":[""],"Information about fees will be available when an exchange provider is selected.":[""],"You are about to withdraw %1$s from your bank account into your wallet.":[""],"Accept fees and withdraw":[""],"Error: URL is empty":[""],"Error: URL may not be relative":[""],"Oops, something went wrong. The wallet responded with error status (%1$s).":[""],"Checking URL, please wait ...":[""],"Can't parse amount: %1$s":[""],"Can't parse wire_types: %1$s":[""],"Fatal error: \"%1$s\".":[""],"Balance":[""],"History":[""],"Debug":[""],"help":[""],"You have no balance to show. Need some\n %1$s getting started?\n":[""],"%1$s incoming\n":[""],"%1$s being spent\n":[""],"Error: could not retrieve balance information.":[""],"Bank requested reserve (%1$s) for%2$s.\n":[""],"Started to withdraw\n %1$s from%2$s(%3$s).\n":[""],"Merchant%1$soffered contract%2$s;\n":[""],"Withdrew%1$sfrom%2$s(%3$s).\n":[""],"Paid%1$sto merchant%2$s. (%3$s)\n":[""],"Unknown event (%1$s)":[""],"Error: could not retrieve event history":[""],"Your wallet has no events recorded.":[""],"The merchant%1$swants to enter a contract over%2$s with you.\n":[""],"You are about to purchase:":[""]}}};
+strings['it'] = {"domain":"it","locale_data":{"it":{"":{"domain":"it","plural_forms":"nplurals=2; plural=(n != 1);","lang":""},"show more details\n":[""],"Accepted exchanges:":[""],"Exchanges in the wallet:":[""],"You have insufficient funds of the requested currency in your wallet.":[""],"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.":[""],"Withdrawal fees: %1$s":[""],"Rounding loss: %1$s":[""],"# Coins":[""],"Value":[""],"Withdraw Fee":[""],"Refresh Fee":[""],"Deposit Fee":[""],"Withdraw fees:":[""],"view fee structure / select different exchange provider":[""],"Detailed Fee Structure":[""],"The exchange provider will charge\n %1$s in fees.\n":[""],"Waiting for a response from\n %1$s":[""],"A problem occured, see below.":[""],"Information about fees will be available when an exchange provider is selected.":[""],"You are about to withdraw %1$s from your bank account into your wallet.":[""],"Accept fees and withdraw":[""],"Error: URL is empty":[""],"Error: URL may not be relative":[""],"Oops, something went wrong. The wallet responded with error status (%1$s).":[""],"Checking URL, please wait ...":[""],"Can't parse amount: %1$s":[""],"Can't parse wire_types: %1$s":[""],"Fatal error: \"%1$s\".":[""],"Balance":[""],"History":[""],"Debug":[""],"help":[""],"You have no balance to show. Need some\n %1$s getting started?\n":[""],"%1$s incoming\n":[""],"%1$s being spent\n":[""],"Error: could not retrieve balance information.":[""],"Bank requested reserve (%1$s) for%2$s.\n":[""],"Started to withdraw\n %1$s from%2$s(%3$s).\n":[""],"Merchant%1$soffered contract%2$s;\n":[""],"Withdrew%1$sfrom%2$s(%3$s).\n":[""],"Paid%1$sto merchant%2$s. (%3$s)\n":[""],"Unknown event (%1$s)":[""],"Error: could not retrieve event history":[""],"Your wallet has no events recorded.":[""],"The merchant%1$swants to enter a contract over%2$s with you.\n":[""],"You are about to purchase:":[""]}}};
diff --git a/src/i18n/taler-wallet-webex.pot b/src/i18n/taler-wallet-webex.pot
index 8c68a63f1..8bfdf57d0 100644
--- a/src/i18n/taler-wallet-webex.pot
+++ b/src/i18n/taler-wallet-webex.pot
@@ -27,27 +27,27 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/pages/confirm-contract.tsx:61
+#: src/pages/confirm-contract.tsx:62
#, c-format
msgid "show more details\n"
msgstr ""
-#: src/pages/confirm-contract.tsx:75
+#: src/pages/confirm-contract.tsx:76
#, c-format
msgid "Accepted exchanges:"
msgstr ""
-#: src/pages/confirm-contract.tsx:80
+#: src/pages/confirm-contract.tsx:81
#, c-format
msgid "Exchanges in the wallet:"
msgstr ""
-#: src/pages/confirm-contract.tsx:156
+#: src/pages/confirm-contract.tsx:157
#, c-format
msgid "You have insufficient funds of the requested currency in your wallet."
msgstr ""
-#: src/pages/confirm-contract.tsx:157
+#: src/pages/confirm-contract.tsx:158
#, c-format
msgid ""
"You do not have any funds from an exchange that is accepted by this "
@@ -55,194 +55,201 @@ msgid ""
"wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:105
+#: src/pages/confirm-create-reserve.tsx:106
#, c-format
msgid "Withdrawal fees: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:106
+#: src/pages/confirm-create-reserve.tsx:107
#, c-format
msgid "Rounding loss: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:109
+#: src/pages/confirm-create-reserve.tsx:110
#, c-format
msgid "# Coins"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:110
+#: src/pages/confirm-create-reserve.tsx:111
#, c-format
msgid "Value"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:111
+#: src/pages/confirm-create-reserve.tsx:112
#, c-format
msgid "Withdraw Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:112
+#: src/pages/confirm-create-reserve.tsx:113
#, c-format
msgid "Refresh Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:113
+#: src/pages/confirm-create-reserve.tsx:114
#, c-format
msgid "Deposit Fee"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:146
+#: src/pages/confirm-create-reserve.tsx:147
#, c-format
msgid "Withdraw fees:"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:180
+#: src/pages/confirm-create-reserve.tsx:182
#, c-format
msgid "view fee structure / select different exchange provider"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:194
+#: src/pages/confirm-create-reserve.tsx:196
#, c-format
msgid "Detailed Fee Structure"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:210
+#: src/pages/confirm-create-reserve.tsx:212
#, c-format
msgid ""
"The exchange provider will charge\n"
" %1$s in fees.\n"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:222
+#: src/pages/confirm-create-reserve.tsx:224
#, c-format
msgid ""
"Waiting for a response from\n"
" %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:233
+#: src/pages/confirm-create-reserve.tsx:235
#, c-format
msgid "A problem occured, see below."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:239
+#: src/pages/confirm-create-reserve.tsx:241
#, c-format
msgid ""
"Information about fees will be available when an exchange provider is "
"selected."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:247
+#: src/pages/confirm-create-reserve.tsx:249
#, c-format
msgid "You are about to withdraw %1$s from your bank account into your wallet."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:256
+#: src/pages/confirm-create-reserve.tsx:258
#, c-format
msgid "Accept fees and withdraw"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:278
+#: src/pages/confirm-create-reserve.tsx:280
#, c-format
msgid "Error: URL is empty"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:286
+#: src/pages/confirm-create-reserve.tsx:288
#, c-format
msgid "Error: URL may not be relative"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:344
+#: src/pages/confirm-create-reserve.tsx:347
#, c-format
msgid ""
"Oops, something went wrong. The wallet responded with error status (%1$s)."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:371
+#: src/pages/confirm-create-reserve.tsx:374
#, c-format
msgid "Checking URL, please wait ..."
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:385
+#: src/pages/confirm-create-reserve.tsx:388
#, c-format
msgid "Can't parse amount: %1$s"
msgstr ""
-#: src/pages/confirm-create-reserve.tsx:393
+#: src/pages/confirm-create-reserve.tsx:396
#, c-format
msgid "Can't parse wire_types: %1$s"
msgstr ""
#. TODO:generic error reporting function or component.
-#: src/pages/confirm-create-reserve.tsx:410
+#: src/pages/confirm-create-reserve.tsx:413
#, c-format
msgid "Fatal error: \"%1$s\"."
msgstr ""
-#: src/popup/popup.tsx:173
+#: src/popup/popup.tsx:172
#, c-format
msgid "Balance"
msgstr ""
-#: src/popup/popup.tsx:176
+#: src/popup/popup.tsx:175
#, c-format
msgid "History"
msgstr ""
-#: src/popup/popup.tsx:179
+#: src/popup/popup.tsx:178
#, c-format
msgid "Debug"
msgstr ""
-#: src/popup/popup.tsx:239
+#: src/popup/popup.tsx:238
#, c-format
msgid "help"
msgstr ""
-#: src/popup/popup.tsx:244
+#: src/popup/popup.tsx:243
#, c-format
msgid ""
"You have no balance to show. Need some\n"
" %1$s getting started?\n"
msgstr ""
-#: src/popup/popup.tsx:261
+#: src/popup/popup.tsx:260
#, c-format
msgid "%1$s incoming\n"
msgstr ""
-#: src/popup/popup.tsx:274
+#: src/popup/popup.tsx:273
#, c-format
msgid "%1$s being spent\n"
msgstr ""
-#: src/popup/popup.tsx:300
+#: src/popup/popup.tsx:299
#, c-format
msgid "Error: could not retrieve balance information."
msgstr ""
-#: src/popup/popup.tsx:340
+#: src/popup/popup.tsx:337
#, c-format
-msgid "Bank requested reserve (%1$s) for %2$s."
+msgid "Bank requested reserve (%1$s) for%2$s.\n"
msgstr ""
-#: src/popup/popup.tsx:351
+#: src/popup/popup.tsx:346
#, c-format
-msgid "Started to withdraw %1$s from %2$s (%3$s)."
+msgid ""
+"Started to withdraw\n"
+" %1$s from%2$s(%3$s).\n"
msgstr ""
-#: src/popup/popup.tsx:361
+#: src/popup/popup.tsx:358
#, c-format
-msgid "Merchant %1$s offered contract %2$s."
+msgid "Merchant%1$soffered contract%2$s;\n"
msgstr ""
-#: src/popup/popup.tsx:371
+#: src/popup/popup.tsx:368
#, c-format
-msgid "Withdrew %1$s from %2$s (%3$s)."
+msgid "Withdrew%1$sfrom%2$s(%3$s).\n"
msgstr ""
-#: src/popup/popup.tsx:382
+#: src/popup/popup.tsx:379
#, c-format
-msgid "Paid %1$s to merchant %2$s. (%3$s)"
+msgid "Paid%1$sto merchant%2$s. (%3$s)\n"
+msgstr ""
+
+#: src/popup/popup.tsx:386
+#, c-format
+msgid "Unknown event (%1$s)"
msgstr ""
#: src/popup/popup.tsx:429
@@ -255,7 +262,12 @@ msgstr ""
msgid "Your wallet has no events recorded."
msgstr ""
-#: src/renderHtml.tsx:42
+#: src/renderHtml.tsx:38
+#, c-format
+msgid "The merchant%1$swants to enter a contract over%2$s with you.\n"
+msgstr ""
+
+#: src/renderHtml.tsx:43
#, c-format
msgid "You are about to purchase:"
msgstr ""
diff --git a/src/pages/confirm-contract.html b/src/pages/confirm-contract.html
index 261609d1c..c42479c29 100644
--- a/src/pages/confirm-contract.html
+++ b/src/pages/confirm-contract.html
@@ -12,10 +12,8 @@
<script src="/src/vendor/URI.js"></script>
<script src="/src/vendor/react.js"></script>
<script src="/src/vendor/react-dom.js"></script>
+
<script src="/src/vendor/system-csp-production.src.js"></script>
- <!-- <script src="/src/vendor/jed.js"></script> -->
- <script src="/src/i18n.js"></script>
- <script src="/src/i18n/strings.js"></script>
<script src="/src/moduleTrampoline.js"></script>
<style>
diff --git a/src/pages/confirm-contract.tsx b/src/pages/confirm-contract.tsx
index 2ce3b0616..3a0712a8c 100644
--- a/src/pages/confirm-contract.tsx
+++ b/src/pages/confirm-contract.tsx
@@ -28,6 +28,7 @@ import {Contract, AmountJson, ExchangeRecord} from "src/types";
import {OfferRecord} from "src/wallet";
import {renderContract, prettyAmount} from "src/renderHtml";
import {getExchanges} from "src/wxApi";
+import * as i18n from "src/i18n";
interface DetailState {
@@ -72,12 +73,12 @@ class Details extends React.Component<DetailProps, DetailState> {
show less details
</button>
<div>
- {i18n`Accepted exchanges:`}
+ {i18n.str`Accepted exchanges:`}
<ul>
{this.props.contract.exchanges.map(
e => <li>{`${e.url}: ${e.master_pub}`}</li>)}
</ul>
- {i18n`Exchanges in the wallet:`}
+ {i18n.str`Exchanges in the wallet:`}
<ul>
{(this.props.exchanges || []).map(
(e: ExchangeRecord) =>
@@ -153,8 +154,8 @@ class ContractPrompt extends React.Component<ContractPromptProps, ContractPrompt
console.log("check-pay error", JSON.stringify(resp));
switch (resp.error) {
case "coins-insufficient":
- let msgInsufficient = i18n`You have insufficient funds of the requested currency in your wallet.`;
- let msgNoMatch = i18n`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.`;
+ let msgInsufficient = i18n.str`You have insufficient funds of the requested currency in your wallet.`;
+ let msgNoMatch = i18n.str`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.`;
if (this.state.exchanges && this.state.offer) {
let acceptedExchangePubs = this.state.offer.contract.exchanges.map((e) => e.master_pub);
let ex = this.state.exchanges.find((e) => acceptedExchangePubs.indexOf(e.masterPublicKey) >= 0);
diff --git a/src/pages/confirm-create-reserve.html b/src/pages/confirm-create-reserve.html
index b679de9c9..341b786d8 100644
--- a/src/pages/confirm-create-reserve.html
+++ b/src/pages/confirm-create-reserve.html
@@ -10,11 +10,6 @@
<script src="/src/vendor/react.js"></script>
<script src="/src/vendor/react-dom.js"></script>
- <!-- i18n -->
- <script src="/src/vendor/jed.js"></script>
- <script src="/src/i18n.js"></script>
- <script src="/src/i18n/strings.js"></script>
-
<!-- module loading -->
<script src="/src/vendor/system-csp-production.src.js"></script>
<script src="/src/moduleTrampoline.js"></script>
diff --git a/src/pages/confirm-create-reserve.tsx b/src/pages/confirm-create-reserve.tsx
index 1ac56a8d0..da86729d3 100644
--- a/src/pages/confirm-create-reserve.tsx
+++ b/src/pages/confirm-create-reserve.tsx
@@ -30,6 +30,7 @@ import {
} from "src/types";
import {getReserveCreationInfo} from "src/wxApi";
import {ImplicitStateComponent, StateHolder} from "src/components";
+import * as i18n from "src/i18n";
"use strict";
@@ -102,15 +103,15 @@ function renderReserveCreationDetails(rci: ReserveCreationInfo|null) {
return (
<div>
- <p>{i18n`Withdrawal fees: ${withdrawFeeStr}`}</p>
- <p>{i18n`Rounding loss: ${overheadStr}`}</p>
+ <p>{i18n.str`Withdrawal fees: ${withdrawFeeStr}`}</p>
+ <p>{i18n.str`Rounding loss: ${overheadStr}`}</p>
<table>
<thead>
- <th>{i18n`# Coins`}</th>
- <th>{i18n`Value`}</th>
- <th>{i18n`Withdraw Fee`}</th>
- <th>{i18n`Refresh Fee`}</th>
- <th>{i18n`Deposit Fee`}</th>
+ <th>{i18n.str`# Coins`}</th>
+ <th>{i18n.str`Value`}</th>
+ <th>{i18n.str`Withdraw Fee`}</th>
+ <th>{i18n.str`Refresh Fee`}</th>
+ <th>{i18n.str`Deposit Fee`}</th>
</thead>
<tbody>
{uniq.map(row)}
@@ -143,7 +144,7 @@ function WithdrawFee(props: {reserveCreationInfo: ReserveCreationInfo|null}): JS
if (props.reserveCreationInfo) {
let {overhead, withdrawFee} = props.reserveCreationInfo;
let totalCost = Amounts.add(overhead, withdrawFee).amount;
- return <p>{i18n`Withdraw fees:`} {amountToPretty(totalCost)}</p>;
+ return <p>{i18n.str`Withdraw fees:`} {amountToPretty(totalCost)}</p>;
}
return <p />;
}
@@ -178,7 +179,7 @@ class ExchangeSelection extends ImplicitStateComponent<ExchangeSelectionProps> {
return (
<button className="linky"
onClick={() => this.detailCollapsed(false)}>
- {i18n`view fee structure / select different exchange provider`}
+ {i18n.str`view fee structure / select different exchange provider`}
</button>
);
}
@@ -192,7 +193,7 @@ class ExchangeSelection extends ImplicitStateComponent<ExchangeSelectionProps> {
onInput={(e) => this.onUrlChanged((e.target as HTMLInputElement).value)}/>
<br />
{this.renderStatus()}
- <h2>{i18n`Detailed Fee Structure`}</h2>
+ <h2>{i18n.str`Detailed Fee Structure`}</h2>
{renderReserveCreationDetails(this.reserveCreationInfo())}
</div>)
}
@@ -231,13 +232,13 @@ class ExchangeSelection extends ImplicitStateComponent<ExchangeSelectionProps> {
if (this.statusString()) {
return (
<p>
- <strong style={{color: "red"}}>{i18n`A problem occured, see below.`}</strong>
+ <strong style={{color: "red"}}>{i18n.str`A problem occured, see below.`}</strong>
</p>
);
}
return (
<p>
- {i18n`Information about fees will be available when an exchange provider is selected.`}
+ {i18n.str`Information about fees will be available when an exchange provider is selected.`}
</p>
);
}
@@ -254,7 +255,7 @@ class ExchangeSelection extends ImplicitStateComponent<ExchangeSelectionProps> {
<button className="accept"
disabled={this.reserveCreationInfo() == null}
onClick={() => this.confirmReserve()}>
- {i18n`Accept fees and withdraw`}
+ {i18n.str`Accept fees and withdraw`}
</button>
<br/>
{this.renderAdvanced()}
@@ -276,7 +277,7 @@ class ExchangeSelection extends ImplicitStateComponent<ExchangeSelectionProps> {
async forceReserveUpdate() {
this.reserveCreationInfo(null);
if (!this.url()) {
- this.statusString(i18n`Error: URL is empty`);
+ this.statusString(i18n.str`Error: URL is empty`);
this.detailCollapsed(false);
return;
}
@@ -284,7 +285,7 @@ class ExchangeSelection extends ImplicitStateComponent<ExchangeSelectionProps> {
this.statusString(null);
let parsedUrl = URI(this.url()!);
if (parsedUrl.is("relative")) {
- this.statusString(i18n`Error: URL may not be relative`);
+ this.statusString(i18n.str`Error: URL may not be relative`);
this.detailCollapsed(false);
return;
}
@@ -344,7 +345,7 @@ class ExchangeSelection extends ImplicitStateComponent<ExchangeSelectionProps> {
} else {
this.reset();
this.statusString(
- i18n`Oops, something went wrong. The wallet responded with error status (${rawResp.error}).`);
+ i18n.str`Oops, something went wrong. The wallet responded with error status (${rawResp.error}).`);
this.detailCollapsed(false);
}
};
@@ -370,7 +371,7 @@ class ExchangeSelection extends ImplicitStateComponent<ExchangeSelectionProps> {
if (this.statusString()) {
return <p><strong style={{color: "red"}}>{this.statusString()}</strong></p>;
} else if (!this.reserveCreationInfo()) {
- return <p>{i18n`Checking URL, please wait ...`}</p>;
+ return <p>{i18n.str`Checking URL, please wait ...`}</p>;
}
return "";
}
@@ -384,7 +385,7 @@ export async function main() {
try {
amount = AmountJson.checked(JSON.parse(query.amount));
} catch (e) {
- throw Error(i18n`Can't parse amount: ${e.message}`);
+ throw Error(i18n.str`Can't parse amount: ${e.message}`);
}
const callback_url = query.callback_url;
const bank_url = query.bank_url;
@@ -392,7 +393,7 @@ export async function main() {
try {
wt_types = JSON.parse(query.wt_types);
} catch (e) {
- throw Error(i18n`Can't parse wire_types: ${e.message}`);
+ throw Error(i18n.str`Can't parse wire_types: ${e.message}`);
}
const suggestedExchangeUrl = await getSuggestedExchange(amount.currency);
@@ -409,7 +410,7 @@ export async function main() {
} catch (e) {
// TODO: provide more context information, maybe factor it out into a
// TODO:generic error reporting function or component.
- document.body.innerText = i18n`Fatal error: "${e.message}".`;
+ document.body.innerText = i18n.str`Fatal error: "${e.message}".`;
console.error(`got error "${e.message}"`, e);
}
}
diff --git a/src/pages/error.html b/src/pages/error.html
index 8d6b3e153..7e6103c0e 100644
--- a/src/pages/error.html
+++ b/src/pages/error.html
@@ -13,11 +13,6 @@
<script src="/src/vendor/react.js"></script>
<script src="/src/vendor/react-dom.js"></script>
- <!-- i18n -->
- <script src="/src/vendor/jed.js"></script>
- <script src="/src/i18n.js"></script>
- <script src="/src/i18n/strings.js"></script>
-
<script src="/src/vendor/system-csp-production.src.js"></script>
<script src="/src/moduleTrampoline.js"></script>
diff --git a/src/pages/logs.html b/src/pages/logs.html
index 9178298f8..866b434f8 100644
--- a/src/pages/logs.html
+++ b/src/pages/logs.html
@@ -13,11 +13,6 @@
<script src="/src/vendor/react.js"></script>
<script src="/src/vendor/react-dom.js"></script>
- <!-- i18n -->
- <script src="/src/vendor/jed.js"></script>
- <script src="/src/i18n.js"></script>
- <script src="/src/i18n/strings.js"></script>
-
<script src="/src/vendor/system-csp-production.src.js"></script>
<script src="/src/moduleTrampoline.js"></script>
diff --git a/src/pages/tree.html b/src/pages/tree.html
index 4be7a5cdc..7ff4295a0 100644
--- a/src/pages/tree.html
+++ b/src/pages/tree.html
@@ -13,11 +13,6 @@
<script src="/src/vendor/react.js"></script>
<script src="/src/vendor/react-dom.js"></script>
- <!-- i18n -->
- <script src="/src/vendor/jed.js"></script>
- <script src="/src/i18n.js"></script>
- <script src="/src/i18n/strings.js"></script>
-
<script src="/src/vendor/system-csp-production.src.js"></script>
<script src="/src/moduleTrampoline.js"></script>
diff --git a/src/popup/popup.html b/src/popup/popup.html
index 5800519a4..a8b339b05 100644
--- a/src/popup/popup.html
+++ b/src/popup/popup.html
@@ -11,16 +11,12 @@
<script src="/src/vendor/react-dom.js"></script>
<script src="/src/vendor/URI.js"></script>
- <script src="/src/vendor/jed.js"></script>
- <script src="/src/i18n.js"></script>
- <script src="/src/i18n/strings.js"></script>
-
<script src="/src/vendor/system-csp-production.src.js"></script>
<script src="/src/moduleTrampoline.js"></script>
</head>
<body>
-<div id="content" style="margin:0;padding:0"></div>
+ <div id="content" style="margin:0;padding:0"></div>
</body>
</html>
diff --git a/src/popup/popup.tsx b/src/popup/popup.tsx
index bd93f54f2..47dbd0b8f 100644
--- a/src/popup/popup.tsx
+++ b/src/popup/popup.tsx
@@ -33,8 +33,7 @@ import {
WalletBalanceEntry
} from "src/types";
import {abbrev, prettyAmount} from "src/renderHtml";
-
-declare var i18n: any;
+import * as i18n from "src/i18n";
function onUpdateNotification(f: () => void): () => void {
let port = chrome.runtime.connect({name: "notifications"});
@@ -170,13 +169,13 @@ class WalletNavBar extends React.Component<any,any> {
return (
<div className="nav" id="header">
<Tab target="/balance">
- {i18n`Balance`}
+ {i18n.str`Balance`}
</Tab>
<Tab target="/history">
- {i18n`History`}
+ {i18n.str`History`}
</Tab>
<Tab target="/debug">
- {i18n`Debug`}
+ {i18n.str`Debug`}
</Tab>
</div>);
}
@@ -236,7 +235,7 @@ class WalletBalanceView extends React.Component<any, any> {
renderEmpty(): JSX.Element {
let helpLink = (
<ExtensionLink target="/src/pages/help/empty-wallet.html">
- {i18n`help`}
+ {i18n.str`help`}
</ExtensionLink>
);
return (
@@ -297,7 +296,7 @@ class WalletBalanceView extends React.Component<any, any> {
render(): JSX.Element {
let wallet = this.balance;
if (this.gotError) {
- return i18n`Error: could not retrieve balance information.`;
+ return i18n.str`Error: could not retrieve balance information.`;
}
if (!wallet) {
return <span></span>;
@@ -384,7 +383,7 @@ function formatHistoryItem(historyItem: HistoryRecord) {
);
}
default:
- return (<p>{i18n`Unknown event (${historyItem.type})`}</p>);
+ return (<p>{i18n.str`Unknown event (${historyItem.type})`}</p>);
}
}
@@ -427,7 +426,7 @@ class WalletHistory extends React.Component<any, any> {
console.log("rendering history");
let history: HistoryRecord[] = this.myHistory;
if (this.gotError) {
- return i18n`Error: could not retrieve event history`;
+ return i18n.str`Error: could not retrieve event history`;
}
if (!history) {
@@ -461,7 +460,7 @@ class WalletHistory extends React.Component<any, any> {
if (listing.length > 0) {
return <div className="container">{listing}</div>;
}
- return <p>{i18n`Your wallet has no events recorded.`}</p>
+ return <p>{i18n.str`Your wallet has no events recorded.`}</p>
}
}
diff --git a/src/renderHtml.tsx b/src/renderHtml.tsx
index c858a8842..40b48094e 100644
--- a/src/renderHtml.tsx
+++ b/src/renderHtml.tsx
@@ -22,6 +22,7 @@
import {AmountJson, Contract, Amounts} from "./types";
+import * as i18n from "src/i18n";
export function prettyAmount(amount: AmountJson) {
let v = amount.value + amount.fraction / Amounts.fractionalBase;
@@ -34,12 +35,12 @@ export function renderContract(contract: Contract): JSX.Element {
return (
<div>
- <p>
- The merchant {merchantName}
- wants to enter a contract over {amount}{" "}
+ <i18n.Translate wrap="p">
+ The merchant <span>{merchantName}</span>
+ wants to enter a contract over <span>{amount}</span>{" "}
with you.
- </p>
- <p>{i18n`You are about to purchase:`}</p>
+ </i18n.Translate>
+ <p>{i18n.str`You are about to purchase:`}</p>
<ul>
{contract.products.map(
(p: any, i: number) => (<li key={i}>{`${p.description}: ${prettyAmount(p.price)}`}</li>))
diff --git a/src/vendor/jed.d.ts b/src/vendor/jed.d.ts
new file mode 100644
index 000000000..2e64cba08
--- /dev/null
+++ b/src/vendor/jed.d.ts
@@ -0,0 +1,13 @@
+
+interface JedModule {
+ translate: any;
+ ngettext: any;
+}
+
+interface JedConstructor {
+ new(s: any): JedModule;
+}
+
+declare const Jed: JedConstructor;
+
+export default Jed;
diff --git a/tsconfig.json b/tsconfig.json
index e3b17bf9c..1bff3f8fb 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -34,6 +34,7 @@
"src/helpers.ts",
"src/http.ts",
"src/i18n.tsx",
+ "src/i18n/strings.ts",
"src/logging.ts",
"src/moduleTrampoline.ts",
"src/pages/confirm-contract.tsx",
@@ -48,6 +49,7 @@
"src/taler-wallet-lib.ts",
"src/types-test.ts",
"src/types.ts",
+ "src/vendor/jed.d.ts",
"src/wallet-test.ts",
"src/wallet.ts",
"src/wxApi.ts",
diff --git a/yarn.lock b/yarn.lock
index 77d9a9696..bc25bcb63 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1,5 +1,7 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
+
+
abbrev@1, abbrev@1.0.x:
version "1.0.9"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
@@ -120,7 +122,7 @@ async, async@^2.0.0:
dependencies:
lodash "^4.14.0"
-async@^1.4.0, async@1.x:
+async@1.x, async@^1.4.0:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
@@ -237,10 +239,6 @@ buffer-crc32@^0.2.1, buffer-crc32@~0.2.3:
version "0.2.5"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.5.tgz#db003ac2671e62ebd6ece78ea2c2e1b405736e91"
-buffer-shims@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
-
builtin-modules@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@@ -415,13 +413,7 @@ dateformat@^1.0.11, dateformat@^1.0.7-1.2.3:
get-stdin "^4.0.1"
meow "^3.3.0"
-debug@^2.2.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.2.tgz#94cb466ef7d6d2c7e5245cdd6e4104f2d0d70d30"
- dependencies:
- ms "0.7.2"
-
-debug@~2.2.0, debug@2.2.0:
+debug@2.2.0, debug@^2.2.0, debug@~2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
dependencies:
@@ -510,9 +502,9 @@ encoding@^0.1.11:
dependencies:
iconv-lite "~0.4.13"
-end-of-stream@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.1.0.tgz#e9353258baa9108965efc41cb0ef8ade2f3cfb07"
+end-of-stream@1.0.0, end-of-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e"
dependencies:
once "~1.3.0"
@@ -522,12 +514,6 @@ end-of-stream@~0.1.5:
dependencies:
once "~1.3.0"
-end-of-stream@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e"
- dependencies:
- once "~1.3.0"
-
error-ex@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
@@ -538,11 +524,7 @@ escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
-escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-
-escape-string-regexp@1.0.2:
+escape-string-regexp@1.0.2, escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1"
@@ -557,7 +539,7 @@ escodegen@1.8.x:
optionalDependencies:
source-map "~0.2.0"
-esprima@^2.6.0, esprima@^2.7.1, esprima@2.7.x:
+esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1:
version "2.7.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
@@ -770,6 +752,19 @@ glob-watcher@^0.0.6:
dependencies:
gaze "^0.5.1"
+glob2base@^0.0.12:
+ version "0.0.12"
+ resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56"
+ dependencies:
+ find-index "^0.1.1"
+
+glob@3.2.11:
+ version "3.2.11"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
+ dependencies:
+ inherits "2"
+ minimatch "0.3"
+
glob@^4.3.1:
version "4.5.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f"
@@ -808,19 +803,6 @@ glob@~3.1.21:
inherits "1"
minimatch "~0.2.11"
-glob@3.2.11:
- version "3.2.11"
- resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
- dependencies:
- inherits "2"
- minimatch "0.3"
-
-glob2base@^0.0.12:
- version "0.0.12"
- resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56"
- dependencies:
- find-index "^0.1.1"
-
global-modules@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d"
@@ -1103,14 +1085,14 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@^2.0.1, inherits@~2.0.1, inherits@2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-
inherits@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"
+inherits@2, inherits@^2.0.1, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+
inherits@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
@@ -1260,14 +1242,14 @@ is-windows@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
-isarray@~1.0.0, isarray@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+isarray@1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+
isexe@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0"
@@ -1680,18 +1662,25 @@ mime@1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
-minimatch@^2.0.1:
- version "2.0.10"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7"
+minimatch@0.3:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
dependencies:
- brace-expansion "^1.0.0"
+ lru-cache "2"
+ sigmund "~1.0.0"
-minimatch@^3.0.2, "minimatch@2 || 3":
+"minimatch@2 || 3", minimatch@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
dependencies:
brace-expansion "^1.0.0"
+minimatch@^2.0.1:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7"
+ dependencies:
+ brace-expansion "^1.0.0"
+
minimatch@~0.2.11:
version "0.2.14"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a"
@@ -1699,12 +1688,9 @@ minimatch@~0.2.11:
lru-cache "2"
sigmund "~1.0.0"
-minimatch@0.3:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
- dependencies:
- lru-cache "2"
- sigmund "~1.0.0"
+minimist@0.0.8, minimist@~0.0.1:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
minimist@^0.2.0:
version "0.2.0"
@@ -1714,24 +1700,16 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-minimist@~0.0.1:
- version "0.0.10"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
-
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+mkdirp@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
-mkdirp@^0.5.0, mkdirp@0.5.1, mkdirp@0.5.x:
+mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
dependencies:
minimist "0.0.8"
-mkdirp@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
-
mocha@^2.4.5:
version "2.5.3"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58"
@@ -1751,10 +1729,6 @@ ms@0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
-ms@0.7.2:
- version "0.7.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
-
multipipe@^0.1.0, multipipe@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
@@ -1820,7 +1794,7 @@ on-finished@~2.3.0:
dependencies:
ee-first "1.1.1"
-once@^1.3.0, once@1.x:
+once@1.x, once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
@@ -2022,18 +1996,6 @@ read-pkg@^1.0.0:
normalize-package-data "^2.3.2"
path-type "^1.0.0"
-readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.4, readable-stream@^2.0.5:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
- dependencies:
- buffer-shims "^1.0.0"
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- string_decoder "~0.10.x"
- util-deprecate "~1.0.1"
-
"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17:
version "1.0.34"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
@@ -2043,16 +2005,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.4, readable
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@~1.1.9:
- version "1.1.14"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "0.0.1"
- string_decoder "~0.10.x"
-
-readable-stream@~2.0.0, readable-stream@~2.0.5:
+readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@~2.0.0, readable-stream@~2.0.5:
version "2.0.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
dependencies:
@@ -2063,6 +2016,15 @@ readable-stream@~2.0.0, readable-stream@~2.0.5:
string_decoder "~0.10.x"
util-deprecate "~1.0.1"
+readable-stream@~1.1.9:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
@@ -2105,14 +2067,14 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
-replace-ext@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
-
replace-ext@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
+replace-ext@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
+
resolve-dir@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e"
@@ -2120,7 +2082,7 @@ resolve-dir@^0.1.0:
expand-tilde "^1.2.2"
global-modules "^0.2.3"
-resolve@^1.1.6, resolve@^1.1.7, resolve@1.1.x:
+resolve@1.1.x, resolve@^1.1.6, resolve@^1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
@@ -2149,14 +2111,14 @@ selenium-webdriver:
tmp "0.0.30"
xml2js "^0.4.17"
+"semver@2 || 3 || 4 || 5", semver@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+
semver@^4.1.0:
version "4.3.6"
resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
-semver@^5.3.0, "semver@2 || 3 || 4 || 5":
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
-
send@0.14.1:
version "0.14.1"
resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a"
@@ -2307,6 +2269,10 @@ strip-indent@^1.0.1:
dependencies:
get-stdin "^4.0.1"
+supports-color@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e"
+
supports-color@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
@@ -2321,10 +2287,6 @@ supports-color@^3.1.0:
dependencies:
has-flag "^1.0.0"
-supports-color@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e"
-
systemjs@^0.19.14:
version "0.19.41"
resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.19.41.tgz#835d2c0f10bf403b551fedc875f84bb44a02c4eb"
@@ -2419,9 +2381,9 @@ typedarray@~0.0.5:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-typescript@^2.2.0-dev:
- version "2.2.0-dev.20161115"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.0-dev.20161115.tgz#62a9ff8878ac32d8029c3959b33fbae900ee7173"
+typescript@next:
+ version "2.2.0-dev.20161127"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.0-dev.20161127.tgz#3da590d1a0f15da9c39d2ebeab2006fb6b4d8949"
typhonjs-istanbul-instrument-jspm@^0.1.0:
version "0.1.0"
@@ -2582,6 +2544,10 @@ window-size@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+wordwrap@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+
wordwrap@^1.0.0, wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
@@ -2590,10 +2556,6 @@ wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-wordwrap@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -2611,7 +2573,7 @@ xmlbuilder@^4.1.0:
dependencies:
lodash "^4.0.0"
-xtend@^4.0.0, "xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0:
+"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
@@ -2648,4 +2610,3 @@ zip-stream@^1.1.0:
compress-commons "^1.1.0"
lodash "^4.8.0"
readable-stream "^2.0.0"
-