[add] loc:eng [mod] page:register:localization

This commit is contained in:
roydfalk 2024-04-30 14:46:10 +02:00
parent 0231057e04
commit 3a105c8ac8
5 changed files with 108 additions and 46 deletions

View file

@ -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!"
}
}

View file

@ -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!"
}
}

View file

@ -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,
}
);

View file

@ -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}}«.",
"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,
}
),
"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")
)
},
{
"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<string, any>;}>;
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<string, any>;}>;
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),
}
lib_plankton.translate.get("page.register.flaw." + flaw.incident),
flaw.details
)
)
);
}
else {
set_state("done", ["Danke!"]);
}
set_state(
"done",
[
lib_plankton.translate.get("page.register.success")
]
);
}
}
);

View file

@ -1,6 +1,6 @@
<template id="register">
<section class="register">
<h2>Registrieren</h2>
<h2 class="register-title"></h2>
<div class="register-info">
</div>
<div class="register-message">
@ -9,7 +9,7 @@
<div class="register-form-input">
</div>
<div class="register-form-actions">
<button class="register-form-action-send">Abschicken</button>
<button class="register-form-action-send"></button>
</div>
</div>
</section>