merchant-backoffice

ZZZ: Inactive/Deprecated
Log | Files | Refs | Submodules | README

commit 96950208e39fd6a891fa79894de0098db5f80c30
parent d786453c6b4e6ce67f41ff3b25d4e51059333491
Author: ms <ms@taler.net>
Date:   Thu,  6 Jan 2022 20:16:27 +0100

employ language switch

Diffstat:
Apackages/bank/build-bank-translations.sh | 29+++++++++++++++++++++++++++++
Apackages/bank/contrib/po2ts | 42++++++++++++++++++++++++++++++++++++++++++
Mpackages/bank/src/components/app.tsx | 2++
Apackages/bank/src/i18n/bank.pot | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Apackages/bank/src/i18n/de.po | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Apackages/bank/src/i18n/en.po | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Mpackages/bank/src/i18n/strings.ts | 73++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------
Dpackages/bank/src/i18n/taler-anastasis.pot | 26--------------------------
Mpackages/bank/src/pages/home/index.tsx | 4+++-
9 files changed, 276 insertions(+), 48 deletions(-)

diff --git a/packages/bank/build-bank-translations.sh b/packages/bank/build-bank-translations.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -eu + +function build { + POTGEN=node_modules/@gnu-taler/pogen/bin/pogen + PACKAGE_NAME=$1 + + find \( -name "*.ts" -or -name "*.tsx" \) ! -name "*.d.ts" \ + | xargs node $POTGEN \ + | msguniq \ + | msgmerge src/i18n/poheader - \ + > src/i18n/$PACKAGE_NAME.pot + + # merge existing translations: fails when NO .po-files were found. + for pofile in $(ls src/i18n/*.po 2> /dev/null || true); do + echo merging $pofile; + msgmerge -o $pofile $pofile src/i18n/$PACKAGE_NAME.pot; + done; + + # generate .ts file containing all translations + cat src/i18n/strings-prelude > src/i18n/strings.ts + for pofile in $(ls src/i18n/*.po 2> /dev/null || true); do \ + echo appending $pofile; \ + ./contrib/po2ts $pofile >> src/i18n/strings.ts; \ + done; +} + +build bank diff --git a/packages/bank/contrib/po2ts b/packages/bank/contrib/po2ts @@ -0,0 +1,42 @@ +#!/usr/bin/env node +/* + This file is part of GNU Taler + (C) 2020 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +/** + * Convert a <lang>.po file into a JavaScript / TypeScript expression. + */ + +const po2json = require("po2json"); + +const filename = process.argv[2]; + +if (!filename) { + console.error("error: missing filename"); + process.exit(1); +} + +const m = filename.match(/([a-zA-Z0-9-_]+).po/); + +if (!m) { + console.error("error: unexpected filename (expected <lang>.po)"); + process.exit(1); +} + +const lang = m[1]; +const pojson = po2json.parseFileSync(filename, { format: "jed1.x", fuzzy: true }); +const s = + "strings['" + lang + "'] = " + JSON.stringify(pojson, null, " ") + ";\n"; +console.log(s); diff --git a/packages/bank/src/components/app.tsx b/packages/bank/src/components/app.tsx @@ -2,10 +2,12 @@ import { FunctionalComponent, h } from "preact"; import { TranslationProvider } from "../context/translation"; import { BankHome } from "../pages/home/index"; import { Menu } from "./menu"; +import { LangSelector } from "./menu/LangSelector"; const App: FunctionalComponent = () => { return ( <TranslationProvider> + <LangSelector /> <BankHome /> </TranslationProvider> ); diff --git a/packages/bank/src/i18n/bank.pot b/packages/bank/src/i18n/bank.pot @@ -0,0 +1,50 @@ +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:55 +#, c-format +msgid "days" +msgstr "" + +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:65 +#, c-format +msgid "hours" +msgstr "" + +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:76 +#, c-format +msgid "minutes" +msgstr "" + +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:87 +#, c-format +msgid "seconds" +msgstr "" + +#: /home/job/merchant-backoffice/packages/bank/src/pages/home/index.tsx:549 +#, c-format +msgid "Page has a problem:" +msgstr "" + +# This file is part of GNU Taler +# (C) 2021 Taler Systems S.A. +# GNU Taler is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3, or (at your option) any later version. +# GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# You should have received a copy of the GNU General Public License along with +# GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Taler Wallet\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-23 00:00+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" diff --git a/packages/bank/src/i18n/de.po b/packages/bank/src/i18n/de.po @@ -0,0 +1,49 @@ +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:55 +#, c-format +msgid "days" +msgstr "" + +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:65 +#, c-format +msgid "hours" +msgstr "" + +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:76 +#, c-format +msgid "minutes" +msgstr "" + +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:87 +#, c-format +msgid "seconds" +msgstr "" + +#: /home/job/merchant-backoffice/packages/bank/src/pages/home/index.tsx:549 +#, c-format +msgid "Page has a problem:" +msgstr "Es gibt ein Problem:" + +# This file is part of GNU Taler +# (C) 2021 Taler Systems S.A. +# GNU Taler is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3, or (at your option) any later version. +# GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# You should have received a copy of the GNU General Public License along with +# GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +# +msgid "" +msgstr "" +"Project-Id-Version: Taler Wallet\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-23 00:00+0100\n" +"PO-Revision-Date: 2022-01-06 19:44+0100\n" +"Last-Translator: <translations@taler.net>\n" +"Language-Team: German\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" diff --git a/packages/bank/src/i18n/en.po b/packages/bank/src/i18n/en.po @@ -0,0 +1,49 @@ +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:55 +#, c-format +msgid "days" +msgstr "days" + +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:65 +#, c-format +msgid "hours" +msgstr "hours" + +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:76 +#, c-format +msgid "minutes" +msgstr "minutes" + +#: /home/job/merchant-backoffice/packages/bank/src/components/picker/DurationPicker.tsx:87 +#, c-format +msgid "seconds" +msgstr "seconds" + +#: /home/job/merchant-backoffice/packages/bank/src/pages/home/index.tsx:549 +#, c-format +msgid "Page has a problem:" +msgstr "" + +# This file is part of GNU Taler +# (C) 2021 Taler Systems S.A. +# GNU Taler is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3, or (at your option) any later version. +# GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# You should have received a copy of the GNU General Public License along with +# GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +# +msgid "" +msgstr "" +"Project-Id-Version: Taler Wallet\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-23 00:00+0100\n" +"PO-Revision-Date: 2022-01-06 19:43+0100\n" +"Last-Translator: <translations@taler.net>\n" +"Language-Team: English\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" diff --git a/packages/bank/src/i18n/strings.ts b/packages/bank/src/i18n/strings.ts @@ -15,30 +15,61 @@ */ /*eslint quote-props: ["error", "consistent"]*/ -export const strings: { [s: string]: any } = {}; +export const strings: {[s: string]: any} = {}; -strings["de"] = { - domain: "messages", - locale_data: { - messages: { +strings['de'] = { + "domain": "messages", + "locale_data": { + "messages": { + "days": [ + "" + ], + "hours": [ + "" + ], + "minutes": [ + "" + ], + "seconds": [ + "" + ], + "Page has a problem:": [ + "Es gibt ein Problem:" + ], "": { - domain: "messages", - plural_forms: "nplurals=2; plural=(n != 1);", - lang: "", - }, - }, - }, + "domain": "messages", + "plural_forms": "nplurals=2; plural=(n != 1);", + "lang": "de" + } + } + } }; -strings["en"] = { - domain: "messages", - locale_data: { - messages: { +strings['en'] = { + "domain": "messages", + "locale_data": { + "messages": { + "days": [ + "days" + ], + "hours": [ + "hours" + ], + "minutes": [ + "minutes" + ], + "seconds": [ + "seconds" + ], + "Page has a problem:": [ + "" + ], "": { - domain: "messages", - plural_forms: "nplurals=2; plural=(n != 1);", - lang: "", - }, - }, - }, + "domain": "messages", + "plural_forms": "nplurals=2; plural=(n != 1);", + "lang": "en" + } + } + } }; + diff --git a/packages/bank/src/i18n/taler-anastasis.pot b/packages/bank/src/i18n/taler-anastasis.pot @@ -1,26 +0,0 @@ -# This file is part of GNU Taler -# (C) 2021 Taler Systems S.A. -# GNU Taler is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 3, or (at your option) any later version. -# GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. -# You should have received a copy of the GNU General Public License along with -# GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: Taler Bank\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-23 00:00+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - diff --git a/packages/bank/src/pages/home/index.tsx b/packages/bank/src/pages/home/index.tsx @@ -543,8 +543,10 @@ export function BankHome(): VNode { var [pageState, pageStateSetter] = usePageState(); var [accountState, accountStateSetter] = useAccountState(); + var i18n = useTranslator(); + if (pageState.hasError) { - return <p>Page has a problem: {pageState.error}</p>; + return <p>{i18n`Page has a problem:`} {pageState.error}</p>; } /**