From 3a105c8ac8b102a7efff51638f16359f653406c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fra=C3=9F?= Date: Tue, 30 Apr 2024 14:46:10 +0200 Subject: [PATCH] [add] loc:eng [mod] page:register:localization --- source/data/localization/deu.loc.json | 16 +++- source/data/localization/eng.loc.json | 28 +++++++ source/logic/main.ts | 3 +- source/pages/register/logic.ts | 103 +++++++++++++++----------- source/pages/register/structure.html | 4 +- 5 files changed, 108 insertions(+), 46 deletions(-) create mode 100644 source/data/localization/eng.loc.json diff --git a/source/data/localization/deu.loc.json b/source/data/localization/deu.loc.json index fdd1496..11cb6e1 100644 --- a/source/data/localization/deu.loc.json +++ b/source/data/localization/deu.loc.json @@ -3,12 +3,26 @@ "identifier": "deu" }, "tree": { + "page.register.title": "Registrieren", + "page.register.form.field.email_address.label": "Partei-E-Mail-Adresse einrichten", + "page.register.form.field.email_address.help": "Für Partei-Angelegenheiten möchten wir dir anbieten gesonderte E-Mail-Adressen zu verwenden.\n\nDeine namentliche E-Mail-Adresse würde lauten »{{email_address_nominal}}« und die pseudonymisierte »{{email_address_veiled}}«\n\nDie Partei-E-Mail-Adressen können zum Empfangen von E-Mails verwendet werden. Falls es nötig werden sollte, dass du auch E-Mails mit über die Partei-Adresse verschicken kannst, wende dich bitte an den/die Mitgliederbeauftragte:n!", + "page.register.form.field.email_address.option.none": "keine", + "page.register.form.field.email_address.option.only_veiled": "nur pseudonymisiert", + "page.register.form.field.email_address.option.both": "pseudonymisiert und namentlich", + "page.register.form.field.email_redirect.label": "eingehende E-Mails an private Adresse leiten", + "page.register.form.field.email_redirect.help": "", + "page.register.form.field.password_value.label": "Passwort für Netz-Dienste", + "page.register.form.field.password_value.help": "Das Passwort für die Anmeldung bei den Netz-Diensten.\n\nDu solltest dir merken oder geeignet abspeichern, was du hier einträgst.\n\nSolltest du dieses Passwort mal vergessen oder verlieren, hast du die Möglichkeit ein neues zu setzen.", + "page.register.form.field.password_confirmation.label": "Passwort wiederholen", + "page.register.form.field.password_confirmation.help": "", + "page.register.form.submit": "Abschicken", "page.register.flaw.password_mismatch": "Die Passwörter stimmen nicht überein", "page.register.flaw.password_too_short": "das Passwort muss mindestens {{minimum_length}} Zeichen haben", "page.register.flaw.password_too_long": "das Passwort darf höchstens {{maximum_length}} Zeichen haben", "page.register.flaw.password_lacks_letter": "das Passwort muss einen Buchstaben beinhalten", "page.register.flaw.password_lacks_number": "das Passwort muss ein Zahl beinhalten", "page.register.flaw.password_lacks_special_character": "das Passwort muss ein Sonderzeichen beinhalten", - "page.register.flaw.unhandled_error": "da ist etwas schief gelaufen :/" + "page.register.flaw.unhandled_error": "da ist etwas schief gelaufen :/", + "page.register.success": "Danke!" } } diff --git a/source/data/localization/eng.loc.json b/source/data/localization/eng.loc.json new file mode 100644 index 0000000..8e16f85 --- /dev/null +++ b/source/data/localization/eng.loc.json @@ -0,0 +1,28 @@ +{ + "meta": { + "identifier": "eng" + }, + "tree": { + "page.register.title": "Register", + "page.register.form.field.email_address.label": "Set up party e-mail address", + "page.register.form.field.email_address.help": "We offer you to use a special e-mail address for any party concerns.\n\nYour namely e-mail address would be »{{email_address_nominal}}« and the veiled one »{{email_address_veiled}}«\n\nThe party e-mail address may be used for the reception of e-mails. In case it becomes necessary for you to submit e-mails via a party address, please get in contact with your membership authority!", + "page.register.form.field.email_address.option.none": "none", + "page.register.form.field.email_address.option.only_veiled": "only veiled", + "page.register.form.field.email_address.option.both": "both, veiled and namely", + "page.register.form.field.email_redirect.label": "redirect incoming e-mails to private address", + + "page.register.form.field.password_value.label": "password for online services", + + "page.register.form.field.password_confirmation.label": "confirm password", + + "page.register.form.submit": "submit", + "page.register.flaw.password_mismatch": "passwords do not match", + "page.register.flaw.password_too_short": "the password must have at least {{minimum_length}} characters", + "page.register.flaw.password_too_long": "the password must not have more than {{maximum_length}} characters", + "page.register.flaw.password_lacks_letter": "the password must contain a letter", + "page.register.flaw.password_lacks_number": "the password must contain a number", + "page.register.flaw.password_lacks_special_character": "the password must contain a special character", + "page.register.flaw.unhandled_error": "something went wrong :/", + "page.register.success": "Thanks!" + } +} diff --git a/source/logic/main.ts b/source/logic/main.ts index b3561c1..7db8108 100644 --- a/source/logic/main.ts +++ b/source/logic/main.ts @@ -93,8 +93,9 @@ async function main( "verbosity": 1, "packages": [ JSON.parse(await lib_plankton.file.read("data/localization/deu.loc.json")), + JSON.parse(await lib_plankton.file.read("data/localization/eng.loc.json")), ], - "order": ["deu"], + "order": ["deu", "eng"], "autopromote": false, } ); diff --git a/source/pages/register/logic.ts b/source/pages/register/logic.ts index 0a8ae70..beb69ef 100644 --- a/source/pages/register/logic.ts +++ b/source/pages/register/logic.ts @@ -35,8 +35,16 @@ lib_plankton.zoo_page.register( target_element.appendChild(template_request("register")); - set_state("load"); + set_state( + "load", + [ + ] + ); + // title + { + target_element.querySelector(".register-title").textContent = lib_plankton.translate.get("page.register.title"); + } // info { } @@ -58,45 +66,47 @@ lib_plankton.zoo_page.register( "name": "email_address", "input": new lib_plankton.zoo_input.class_input_enumeration( [ - {"value": "none", "label": "keine"}, - {"value": "only_veiled", "label": "nur pseudonymisiert"}, - {"value": "both", "label": "pseudonymisiert und namentlich"}, + { + "value": "none", + "label": lib_plankton.translate.get("page.register.form.field.email_address.option.none"), + }, + { + "value": "only_veiled", + "label": lib_plankton.translate.get("page.register.form.field.email_address.option.only_veiled"), + }, + { + "value": "both", + "label": lib_plankton.translate.get("page.register.form.field.email_address.option.both"), + }, ] ), - "label": "Partei-E-Mail-Adresse einrichten", - "help": ( - [ - "Für Partei-Angelegenheiten möchten wir dir anbieten gesonderte E-Mail-Adressen zu verwenden.", - lib_plankton.string.coin( - "Deine namentliche E-Mail-Adresse würde lauten »{{email_address_nominal}}« und die pseudonymisierte »{{email_address_veiled}}«.", - { - "email_address_veiled": member_data.email_address_veiled, - "email_address_nominal": member_data.email_address_nominal, - } - ), - "Die Partei-E-Mail-Adressen können zum Empfangen von E-Mails verwendet werden. Falls es nötig werden sollte, dass du auch E-Mails mit über die Partei-Adresse verschicken kannst, wende dich bitte an den/die Mitgliederbeauftragte:n!", - ] - .join("\n\n") - ) + "label": lib_plankton.translate.get("page.register.form.field.email_address.label"), + "help": lib_plankton.translate.get( + "page.register.form.field.email_address.help", + { + "email_address_veiled": member_data.email_address_veiled, + "email_address_nominal": member_data.email_address_nominal, + } + ), }, { "name": "email_redirect", "input": new lib_plankton.zoo_input.class_input_checkbox( ), - "label": "eingehende E-Mails an private Adresse leiten", + "label": lib_plankton.translate.get("page.register.form.field.email_redirect.label"), }, { "name": "password_value", "input": new lib_plankton.zoo_input.class_input_password( ), - "label": "Passwort für Netz-Dienste", - "help": "Das Passwort für die Anmeldung bei den Netz-Diensten.\n\nDu solltest dir merken oder geeignet abspeichern, was du hier einträgst.\n\nSolltest du dieses Passwort mal vergessen oder verlieren, hast du die Möglichkeit ein neues zu setzen.", + "label": lib_plankton.translate.get("page.register.form.field.password_value.label"), + "help": lib_plankton.translate.get("page.register.form.field.password_value.help"), }, { "name": "password_confirmation", "input": new lib_plankton.zoo_input.class_input_password( ), - "label": "Passwort wiederholen", + "label": lib_plankton.translate.get("page.register.form.field.password_confirmation.label"), }, ] ); @@ -112,6 +122,7 @@ lib_plankton.zoo_page.register( } // actions { + target_element.querySelector(".register-form-action-send").textContent = lib_plankton.translate.get("page.register.form.submit"); target_element.querySelector(".register-form-action-send").addEventListener( "click", async (event) => { @@ -121,12 +132,18 @@ lib_plankton.zoo_page.register( password_value : string; password_confirmation : string; } = await input.read(); + let flaws : Array<{incident : string; details : Record;}>; if (value.password_value !== value.password_confirmation) { - set_state("fill", ["Die Passwörter stimmen nicht überein"]); + flaws = [ + {"incident": "password_mismatch", "details": {}}, + ]; } else { - set_state("wait"); - let flaws : Array<{incident : string; details : Record;}>; + set_state( + "wait", + [ + ] + ); try { flaws = await _espe.backend.member_register( id, @@ -144,23 +161,25 @@ lib_plankton.zoo_page.register( {"incident": "unhandled_error", "details": {}}, ]; } - if (flaws.length > 0) { - set_state( - "fill", - flaws.map( - flaw => lib_plankton.string.coin( - "{{incident}} | {{details}}", - { - "incident": flaw.incident, - "details": JSON.stringify(flaw.details), - } - ) + } + if (flaws.length > 0) { + set_state( + "fill", + flaws.map( + flaw => lib_plankton.string.coin( + lib_plankton.translate.get("page.register.flaw." + flaw.incident), + flaw.details ) - ); - } - else { - set_state("done", ["Danke!"]); - } + ) + ); + } + else { + set_state( + "done", + [ + lib_plankton.translate.get("page.register.success") + ] + ); } } ); diff --git a/source/pages/register/structure.html b/source/pages/register/structure.html index c9d07f9..e785aa3 100644 --- a/source/pages/register/structure.html +++ b/source/pages/register/structure.html @@ -1,6 +1,6 @@