diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-11-27 22:13:24 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-11-27 22:13:24 +0100 |
commit | d57b6a4bcc595aee990b8e1c63e786e7796b737b (patch) | |
tree | 9d5341a94d5b6f4c337b55617d534f9d0301e9a8 | |
parent | f72af162a00d1d0eb9dced873fd1fbdf4d0975a2 (diff) |
modularize i18n
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 17 | ||||
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | src/i18n.tsx | 120 | ||||
-rw-r--r-- | src/i18n/de.po | 118 | ||||
-rw-r--r-- | src/i18n/en-US.po | 106 | ||||
-rw-r--r-- | src/i18n/fr.po | 106 | ||||
-rw-r--r-- | src/i18n/it.po | 106 | ||||
-rw-r--r-- | src/i18n/strings-prelude | 17 | ||||
-rw-r--r-- | src/i18n/strings-prelude.js | 3 | ||||
-rw-r--r-- | src/i18n/strings.ts | 21 | ||||
-rw-r--r-- | src/i18n/taler-wallet-webex.pot | 106 | ||||
-rw-r--r-- | src/pages/confirm-contract.html | 4 | ||||
-rw-r--r-- | src/pages/confirm-contract.tsx | 9 | ||||
-rw-r--r-- | src/pages/confirm-create-reserve.html | 5 | ||||
-rw-r--r-- | src/pages/confirm-create-reserve.tsx | 41 | ||||
-rw-r--r-- | src/pages/error.html | 5 | ||||
-rw-r--r-- | src/pages/logs.html | 5 | ||||
-rw-r--r-- | src/pages/tree.html | 5 | ||||
-rw-r--r-- | src/popup/popup.html | 6 | ||||
-rw-r--r-- | src/popup/popup.tsx | 19 | ||||
-rw-r--r-- | src/renderHtml.tsx | 11 | ||||
-rw-r--r-- | src/vendor/jed.d.ts | 13 | ||||
-rw-r--r-- | tsconfig.json | 2 | ||||
-rw-r--r-- | yarn.lock | 201 |
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 @@ -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", @@ -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" - |