From 0361f8ad6991e04bc621c3201bd14d6ace9adc76 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 9 Feb 2021 16:31:37 +0100 Subject: [PATCH 001/359] =?UTF-8?q?=E2=9C=A8=20basic=20UserGroup=20compone?= =?UTF-8?q?nts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #48 --- src/App.svelte | 10 + src/components/AddGroupModal.svelte | 312 ++++++++++++++++++++++++++++ src/components/Dashboard.svelte | 9 + src/components/GroupDetail.svelte | 264 +++++++++++++++++++++++ src/components/Groups.svelte | 29 +++ 5 files changed, 624 insertions(+) create mode 100644 src/components/AddGroupModal.svelte create mode 100644 src/components/GroupDetail.svelte create mode 100644 src/components/Groups.svelte diff --git a/src/App.svelte b/src/App.svelte index e88cfdea..5a992616 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -53,6 +53,8 @@ import Imprint from "./components/Imprint.svelte"; import Privacy from "./components/Privacy.svelte"; import ResetPassword from "./components/ResetPassword.svelte"; +import Groups from "./components/Groups.svelte"; +import GroupDetail from "./components/GroupDetail.svelte"; store.init(); registerSW(); @@ -111,6 +113,14 @@ import ResetPassword from "./components/ResetPassword.svelte"; + + + + + + + + diff --git a/src/components/AddGroupModal.svelte b/src/components/AddGroupModal.svelte new file mode 100644 index 00000000..32c0da99 --- /dev/null +++ b/src/components/AddGroupModal.svelte @@ -0,0 +1,312 @@ + + +{#if modal_open} +
{ + modal_open = false; + }}> +
+ +
+{/if} diff --git a/src/components/Dashboard.svelte b/src/components/Dashboard.svelte index 23de2d92..1e77bf0a 100644 --- a/src/components/Dashboard.svelte +++ b/src/components/Dashboard.svelte @@ -122,6 +122,15 @@ {$_('tracks')} {/if} + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:GET')} + + + UserGroups + + {/if} + import { _ } from "svelte-i18n"; + import lodashIsEqual from "lodash.isequal"; + import store from "../store"; + import { + RunnerService, + RunnerTeamService, + RunnerOrganizationService, + } from "@odit/lfk-client-js"; + import Toastify from "toastify-js"; + import PromiseError from "./PromiseError.svelte"; + import isEmail from "validator/es/lib/isEmail"; + let data_loaded = false; + export let params; + const runner_promise = RunnerService.runnerControllerGetOne(params.groupid); + $: delete_triggered = false; + $: original_data = {}; + $: editable = {}; + $: changes_performed = !lodashIsEqual(original_data, editable); + $: isEmailValid = + (editable.email || "") === "" || + (editable.email && isEmail(editable.email || "")); + $: isFirstnameValid = editable.firstname !== ""; + $: isLastnameValid = editable.lastname !== ""; + $: save_enabled = + changes_performed && isFirstnameValid && isLastnameValid && isEmailValid; + runner_promise.then((data) => { + data_loaded = true; + original_data = Object.assign(original_data, data); + original_data.group = original_data.group.id; + editable = Object.assign(editable, original_data); + }); + let orgs = []; + RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { + orgs = val; + }); + let teams = []; + RunnerTeamService.runnerTeamControllerGetAll().then((val) => { + teams = val; + }); + function submit() { + if (data_loaded === true && save_enabled) { + Toastify({ + text: $_("updating-runner"), + duration: 2500, + }).showToast(); + RunnerService.runnerControllerPut(original_data.id, editable) + .then((resp) => { + Object.assign(original_data, editable); + original_data = editable; + Object.assign(original_data, editable); + Toastify({ + text: $_("runner-updated"), + duration: 2500, + backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", + }).showToast(); + }) + .catch((err) => {}); + } else { + } + } + function deleteRunner() { + RunnerService.runnerControllerRemove(original_data.id, true) + .then((resp) => { + location.replace("./"); + }) + .catch((err) => {}); + } + + +{#await runner_promise} + {$_('loading-runners')} +{:then} +
+
+
+ +
+
+
+ {original_data.firstname} + {original_data.middlename || ''} + {original_data.lastname} + + {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:DELETE')} + {#if delete_triggered} + + + {/if} + {#if !delete_triggered} + + {/if} + {/if} + {#if !delete_triggered} + + {/if} + +
+ +
+ + + {#if !isFirstnameValid} + + {$_('first-name-is-required')} + + {/if} +
+
+ + +
+
+ + + {#if !isLastnameValid} + + {$_('last-name-is-required')} + + {/if} +
+
+ + + {#if !isEmailValid} + + {$_('valid-email-is-required')} + + {/if} +
+
+ + +
+
+ {$_('group')} + +
+
+ {$_('distance')} +
+ {original_data.distance} km +
+
+{:catch error} + +{/await} diff --git a/src/components/Groups.svelte b/src/components/Groups.svelte new file mode 100644 index 00000000..37203e68 --- /dev/null +++ b/src/components/Groups.svelte @@ -0,0 +1,29 @@ + + +
+ + User Groups + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:CREATE')} + + {/if} + + +
+ +{#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:CREATE')} + +{/if} From eddfeb10a55cbf276f29e406ad262d46ac3d1786 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 9 Feb 2021 17:37:38 +0100 Subject: [PATCH 002/359] =?UTF-8?q?=E2=9C=A8=20UserGroupsEmptyState,=20Use?= =?UTF-8?q?rGroupsOverview,=20basic=20GroupDetail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #48 --- src/components/GroupDetail.svelte | 194 +++++---------------- src/components/Groups.svelte | 8 +- src/components/UserGroupsEmptyState.svelte | 12 ++ src/components/UserGroupsOverview.svelte | 125 +++++++++++++ src/components/groups_empty.svg | 1 + src/locales/en.json | 6 + 6 files changed, 196 insertions(+), 150 deletions(-) create mode 100644 src/components/UserGroupsEmptyState.svelte create mode 100644 src/components/UserGroupsOverview.svelte create mode 100644 src/components/groups_empty.svg diff --git a/src/components/GroupDetail.svelte b/src/components/GroupDetail.svelte index 5f76c6c8..5c434392 100644 --- a/src/components/GroupDetail.svelte +++ b/src/components/GroupDetail.svelte @@ -3,54 +3,39 @@ import lodashIsEqual from "lodash.isequal"; import store from "../store"; import { - RunnerService, - RunnerTeamService, - RunnerOrganizationService, + UserGroupService } from "@odit/lfk-client-js"; import Toastify from "toastify-js"; import PromiseError from "./PromiseError.svelte"; - import isEmail from "validator/es/lib/isEmail"; let data_loaded = false; export let params; - const runner_promise = RunnerService.runnerControllerGetOne(params.groupid); + const promise = UserGroupService.userGroupControllerGetOne(params.groupid); $: delete_triggered = false; $: original_data = {}; $: editable = {}; $: changes_performed = !lodashIsEqual(original_data, editable); - $: isEmailValid = - (editable.email || "") === "" || - (editable.email && isEmail(editable.email || "")); - $: isFirstnameValid = editable.firstname !== ""; - $: isLastnameValid = editable.lastname !== ""; + $: isGroupnameValid = editable.name !== ""; $: save_enabled = - changes_performed && isFirstnameValid && isLastnameValid && isEmailValid; - runner_promise.then((data) => { + changes_performed && isGroupnameValid + promise.then((data) => { + console.log(data); data_loaded = true; original_data = Object.assign(original_data, data); - original_data.group = original_data.group.id; editable = Object.assign(editable, original_data); }); - let orgs = []; - RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { - orgs = val; - }); - let teams = []; - RunnerTeamService.runnerTeamControllerGetAll().then((val) => { - teams = val; - }); function submit() { if (data_loaded === true && save_enabled) { Toastify({ - text: $_("updating-runner"), + text: $_('updating-group'), duration: 2500, }).showToast(); - RunnerService.runnerControllerPut(original_data.id, editable) + UserGroupService.userGroupControllerPut(original_data.id, editable) .then((resp) => { Object.assign(original_data, editable); original_data = editable; Object.assign(original_data, editable); Toastify({ - text: $_("runner-updated"), + text: $_('group-updated'), duration: 2500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); @@ -59,8 +44,8 @@ } else { } } - function deleteRunner() { - RunnerService.runnerControllerRemove(original_data.id, true) + function deleteGroup() { + UserGroupService.userGroupControllerRemove(original_data.id, true) .then((resp) => { location.replace("./"); }) @@ -68,8 +53,8 @@ } -{#await runner_promise} - {$_('loading-runners')} +{#await promise} + {$_('loading-group-detail')} {:then}
@@ -77,18 +62,10 @@
- {original_data.firstname} - {original_data.middlename || ''} - {original_data.lastname} - - {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:DELETE')} + {original_data.name} + + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:DELETE')} {#if delete_triggered} + class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm">{$_('delete-group')} {/if} {/if} {#if !delete_triggered} @@ -152,111 +125,40 @@
+ for="title" + class="font-medium text-gray-700">{$_('name')} + {#if !isGroupnameValid} + + Group name is required + + {/if} +
+
+ + - {#if !isFirstnameValid} - - {$_('first-name-is-required')} - - {/if}
- - -
-
- - - {#if !isLastnameValid} - - {$_('last-name-is-required')} - - {/if} -
-
- - - {#if !isEmailValid} - - {$_('valid-email-is-required')} - - {/if} -
-
- - -
-
- {$_('group')} - -
-
- {$_('distance')} -
- {original_data.distance} km + {$_('permissions')}
{:catch error} diff --git a/src/components/Groups.svelte b/src/components/Groups.svelte index 37203e68..d56e0925 100644 --- a/src/components/Groups.svelte +++ b/src/components/Groups.svelte @@ -2,8 +2,8 @@ import { _ } from "svelte-i18n"; import store from "../store"; import AddGroupModal from "./AddGroupModal.svelte"; - import RunnersOverview from "./RunnersOverview.svelte"; - $: current_runners = []; + import UserGroupsOverview from "./UserGroupsOverview.svelte"; + $: current_groups = []; export let modal_open = false; @@ -21,9 +21,9 @@ {/if}
- + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:CREATE')} - + {/if} diff --git a/src/components/UserGroupsEmptyState.svelte b/src/components/UserGroupsEmptyState.svelte new file mode 100644 index 00000000..271e62ae --- /dev/null +++ b/src/components/UserGroupsEmptyState.svelte @@ -0,0 +1,12 @@ + + +
+

+ + There are no group added yet.
+ Add your first group +

+
\ No newline at end of file diff --git a/src/components/UserGroupsOverview.svelte b/src/components/UserGroupsOverview.svelte new file mode 100644 index 00000000..21270b98 --- /dev/null +++ b/src/components/UserGroupsOverview.svelte @@ -0,0 +1,125 @@ + + +{#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:GET')} + {#await groups_promise} + + {:then} + {#if current_groups.length === 0} + + {:else} + +
+ + + + + + + + + + {#each current_groups as group} + {#if Object.values(group) + .toString() + .toLowerCase() + .includes(searchvalue)} + + + + {#if active_deletes[group.id] === true} + + {:else} + + {/if} + + {/if} + {/each} + +
+ {$_('name')} + + {$_('description')} + + {$_('action')} +
+
+
+
+ {group.name} +
+
+
+
+ {group.description} + + + + + Edit + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:DELETE')} + + {/if} +
+
+ {/if} + {:catch error} +
+ + {$_('general_promise_error')} + {error} + +
+ {/await} +{/if} diff --git a/src/components/groups_empty.svg b/src/components/groups_empty.svg new file mode 100644 index 00000000..32053770 --- /dev/null +++ b/src/components/groups_empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/locales/en.json b/src/locales/en.json index dd9ccd3e..471509b8 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -49,11 +49,13 @@ "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" }, "delete": "Delete", + "delete-group": "Delete Group", "delete-organization": "Delete Organization", "delete-runner": "Delete Runner", "delete-team": "Delete Team", "delete-user": "Delete User", "dependency_name": "Name", + "description": "Description", "distance": "Distance", "distance-in-km": "Distance in km", "dont-have-your-email-connected": "Don't have your email connected?", @@ -92,7 +94,9 @@ "go-to-login": "Go To Login", "goback": "Go Home", "group": "Group", + "group-updated": "Group updated!", "groups": "Groups", + "groups-are-being-loaded": "Groups are being loaded...", "hallo": "hello", "icon-image-credits": "We also want to thank these projects for illustrations and icons:", "import-runners": "Import runners", @@ -106,6 +110,7 @@ "lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", "license": "License", "licenses-are-being-loaded": "Licenses are being loaded...", + "loading-group-detail": "Loading group detail...", "loading-runners": "loading runners...", "log_in": "Log in", "log_in_to_your_account": "Log in to your account", @@ -168,6 +173,7 @@ "track-length-in-m": "Track Length in m", "track-name": "Track name", "tracks": "Tracks", + "updating-group": "Updating group...", "updating-runner": "Updating runner...", "updating-user": "updating user...", "user-updated": "User updated", From 505ca6a58effae334f35ae99de798d85bd8fa1a2 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Thu, 18 Feb 2021 17:24:53 +0100 Subject: [PATCH 003/359] =?UTF-8?q?=E2=9C=A8=20ForgotPassword=20demo=20for?= =?UTF-8?q?=20translation=20with=20interpolation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #69 --- src/components/auth/ForgotPassword.svelte | 7 ++----- src/locales/de.json | 1 + src/locales/en.json | 1 + 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/auth/ForgotPassword.svelte b/src/components/auth/ForgotPassword.svelte index 9d6f3936..42a05d63 100644 --- a/src/components/auth/ForgotPassword.svelte +++ b/src/components/auth/ForgotPassword.svelte @@ -17,8 +17,7 @@ }).showToast(); reset_mail_sent = true; }) - .catch((err) => { - }); + .catch((err) => {}); } else { Toastify({ text: $_("invalid-mail-reset"), @@ -36,9 +35,7 @@ {$_('application_name')}

- Passwort-Reset Mail wurde an - {usersEmail} - geschickt + {$_('password-reset-mail-sent', { values: { usersEmail: usersEmail } })}

diff --git a/src/locales/de.json b/src/locales/de.json index b0479a59..97cad1e1 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -127,6 +127,7 @@ "password-is-required": "Passwort muss angegeben werden", "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", "password-reset-in-progress": "Passwort wird zurückgesetzt...", + "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", "permissions": "Berechtigungen", "phone": "Telefon", diff --git a/src/locales/en.json b/src/locales/en.json index 3eee95c6..b46f3958 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -142,6 +142,7 @@ "password-is-required": "Password is required", "password-reset-failed": "Password reset failed!", "password-reset-in-progress": "Password Reset in Progress...", + "password-reset-mail-sent": "Password reset mail was sent to \"{usersEmail}\".", "password-reset-successful": "Password Reset successful!", "permissions": "Permissions", "phone": "Phone", From 4be87a64b9df5a722b3a03893eff64f140f2dc28 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Feb 2021 17:35:46 +0100 Subject: [PATCH 004/359] Removed unused locales ref #69 --- src/components/auth/ForgotPassword.svelte | 2 +- src/components/auth/Login.svelte | 2 +- src/locales/de.json | 28 +---------------------- src/locales/en.json | 28 +---------------------- 4 files changed, 4 insertions(+), 56 deletions(-) diff --git a/src/components/auth/ForgotPassword.svelte b/src/components/auth/ForgotPassword.svelte index 42a05d63..986e4fdd 100644 --- a/src/components/auth/ForgotPassword.svelte +++ b/src/components/auth/ForgotPassword.svelte @@ -56,7 +56,7 @@ {$_('application_name')}

- {$_('forgot_password?')} + {$_('forgot_password')}

{$_('dont-panic-were-resetting-it')} diff --git a/src/components/auth/Login.svelte b/src/components/auth/Login.svelte index b6d21c73..a8476b20 100644 --- a/src/components/auth/Login.svelte +++ b/src/components/auth/Login.svelte @@ -136,7 +136,7 @@ - {$_('forgot_password?')} + {$_('forgot_password')}

diff --git a/src/locales/de.json b/src/locales/de.json index 97cad1e1..2a36c454 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -8,11 +8,9 @@ "application_name": "Lauf für Kaya! - Admin", "author": "Autor:in", "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", - "browse": "Durchsuchen", "by": "von", "cancel": "Abbrechen", "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", - "changelog": "Änderungsprotokoll", "close": "Schließen", "confirm-delete": "Löschung Bestätigen", "confirm-deletion": "Löschung Bestätigen", @@ -58,42 +56,20 @@ "distance-in-km": "Distanz (in KM)", "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", - "drag-and-drop-your-files-or__legacy": "Legacy", "e-mail-adress": "E-Mail-Adresse", "edit-permissions": "Berechtigungen bearbeiten", "email_address_or_username": "E-Mail-Adresse/ Benutzername", "error_on_login": "😢Fehler beim Login", "faq": "FAQ", - "filepond__abort": "Abbrechen", - "filepond__cancel": "Abbrechen", - "filepond__error-during-load": "Fehler beim Laden", - "filepond__error-during-remove": "Fehler beim Löschen", - "filepond__error-during-revert": "Fehler beim Rückgängig machen", - "filepond__error-during-upload": "Fehler beim Hochladen", - "filepond__field-contains-invalid-files": "Invalide Dateien erkannt", - "filepond__loading": "Lade", - "filepond__remove": "Löschen", - "filepond__retry": "Erneut versuchen", - "filepond__size-not-available": "Größe ist nicht verfügbar", - "filepond__tap-to-cancel": "Zum Abbrechen hier tippen.", - "filepond__tap-to-retry": "Zum erneut versuchen hier tippen.", - "filepond__tap-to-undo": "Zum Rückgängig machen hier tippen.", - "filepond__undo": "Rückgängig", - "filepond__upload": "Hochladen", - "filepond__upload-cancelled": "Hochladen abgebrochen", - "filepond__upload-complete": "Hochladen abgeschlossen", - "filepond__uploading": "Wird hochgeladen", - "filepond__waiting-for-size": "Warte auf Dateigröße", "first-name": "Vorname", "first-name-is-required": "Vorname muss angegeben werden", - "forgot_password?": "Passwort vergessen?", + "forgot_password": "Passwort vergessen?", "general-stats": "Allgemeine Statistiken", "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", "go-to-login": "Zum Login", "goback": "Zur Startseite", "group": "Gruppe", "groups": "Gruppen", - "hallo": "hallo", "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", "import-runners": "Läufer:innen importieren", "import__target-organization": "Ziel Organisation", @@ -140,7 +116,6 @@ "privacy-loading": "Datenschutzerklärung lädt...", "profile-picture": "Profilbild", "read-license": "Lizenz-Text lesen", - "register": "Registrieren", "repo_link": "Link", "request-a-new-reset-mail": "Neue Reset-Mail anfordern", "reset-my-password": "Passwort zurücksetzen", @@ -152,7 +127,6 @@ "save-changes": "Änderungen speichern", "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", "settings": "Einstellungen", - "signout": "Abmelden", "stats-are-being-loaded": "Die Statistiken werden geladen...", "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", "team": "Team", diff --git a/src/locales/en.json b/src/locales/en.json index b46f3958..0de0ffe7 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -12,13 +12,11 @@ "attention": "Attention!", "author": "Author", "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.", - "browse": "Browse", "by": "by", "cancel": "Cancel", "cancel-delete": "Cancel Delete", "cancel-keep-team": "Cancel, keep team", "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", - "changelog": "Changelog", "city": "City", "close": "Close", "confirm-delete": "Confirm Delete", @@ -71,43 +69,21 @@ "distance-in-km": "Distance in km", "dont-have-your-email-connected": "Don't have your email connected?", "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", - "drag-and-drop-your-files-or__legacy": "Drag & Drop your files or", "e-mail-adress": "E-Mail Adress", "edit": "Edit", "edit-permissions": "edit permissions", "email_address_or_username": "Email / username", "error_on_login": "Error on login", "faq": "FAQ", - "filepond__abort": "Abort", - "filepond__cancel": "Cancel", - "filepond__error-during-load": "Error during load", - "filepond__error-during-remove": "Error during remove", - "filepond__error-during-revert": "Error during revert", - "filepond__error-during-upload": "Error during upload", - "filepond__field-contains-invalid-files": "Field contains invalid files", - "filepond__loading": "Loading", - "filepond__remove": "Remove", - "filepond__retry": "Retry", - "filepond__size-not-available": "Size not available", - "filepond__tap-to-cancel": "tap to cancel", - "filepond__tap-to-retry": "tap to retry", - "filepond__tap-to-undo": "tap to undo", - "filepond__undo": "Undo", - "filepond__upload": "Upload", - "filepond__upload-cancelled": "Upload cancelled", - "filepond__upload-complete": "Upload complete", - "filepond__uploading": "Uploading", - "filepond__waiting-for-size": "Waiting for size", "first-name": "First name", "first-name-is-required": "First Name is required", - "forgot_password?": "Forgot your password?", + "forgot_password": "Forgot your password?", "general-stats": "General Stats", "general_promise_error": "😢 Error", "go-to-login": "Go To Login", "goback": "Go Home", "group": "Group", "groups": "Groups", - "hallo": "hello", "icon-image-credits": "We also want to thank these projects for illustrations and icons:", "import-runners": "Import runners", "import__target-organization": "Target Organization", @@ -155,7 +131,6 @@ "privacy-loading": "Privacy loading...", "profile-picture": "Profile Picture", "read-license": "Read License", - "register": "Register", "repo_link": "Link", "request-a-new-reset-mail": "Request a new reset mail", "reset-my-password": "Reset my password", @@ -167,7 +142,6 @@ "save-changes": "Save Changes", "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", "settings": "Settings", - "signout": "Sign out", "stats-are-being-loaded": "stats are being loaded...", "successful-password-reset": "Successful password reset!", "team": "Team", From 722feac8bd0a4be5214268c0bdb321243a4d602d Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Feb 2021 17:35:46 +0100 Subject: [PATCH 005/359] Removed unused locales ref #69 --- src/components/auth/ForgotPassword.svelte | 2 +- src/components/auth/Login.svelte | 2 +- src/locales/de.json | 31 ++--------------------- src/locales/en.json | 29 +-------------------- 4 files changed, 5 insertions(+), 59 deletions(-) diff --git a/src/components/auth/ForgotPassword.svelte b/src/components/auth/ForgotPassword.svelte index 42a05d63..986e4fdd 100644 --- a/src/components/auth/ForgotPassword.svelte +++ b/src/components/auth/ForgotPassword.svelte @@ -56,7 +56,7 @@ {$_('application_name')}

- {$_('forgot_password?')} + {$_('forgot_password')}

{$_('dont-panic-were-resetting-it')} diff --git a/src/components/auth/Login.svelte b/src/components/auth/Login.svelte index b6d21c73..a8476b20 100644 --- a/src/components/auth/Login.svelte +++ b/src/components/auth/Login.svelte @@ -136,7 +136,7 @@ - {$_('forgot_password?')} + {$_('forgot_password')}

diff --git a/src/locales/de.json b/src/locales/de.json index 97cad1e1..61753402 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -8,11 +8,9 @@ "application_name": "Lauf für Kaya! - Admin", "author": "Autor:in", "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", - "browse": "Durchsuchen", "by": "von", "cancel": "Abbrechen", "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", - "changelog": "Änderungsprotokoll", "close": "Schließen", "confirm-delete": "Löschung Bestätigen", "confirm-deletion": "Löschung Bestätigen", @@ -58,42 +56,20 @@ "distance-in-km": "Distanz (in KM)", "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", - "drag-and-drop-your-files-or__legacy": "Legacy", "e-mail-adress": "E-Mail-Adresse", "edit-permissions": "Berechtigungen bearbeiten", "email_address_or_username": "E-Mail-Adresse/ Benutzername", "error_on_login": "😢Fehler beim Login", "faq": "FAQ", - "filepond__abort": "Abbrechen", - "filepond__cancel": "Abbrechen", - "filepond__error-during-load": "Fehler beim Laden", - "filepond__error-during-remove": "Fehler beim Löschen", - "filepond__error-during-revert": "Fehler beim Rückgängig machen", - "filepond__error-during-upload": "Fehler beim Hochladen", - "filepond__field-contains-invalid-files": "Invalide Dateien erkannt", - "filepond__loading": "Lade", - "filepond__remove": "Löschen", - "filepond__retry": "Erneut versuchen", - "filepond__size-not-available": "Größe ist nicht verfügbar", - "filepond__tap-to-cancel": "Zum Abbrechen hier tippen.", - "filepond__tap-to-retry": "Zum erneut versuchen hier tippen.", - "filepond__tap-to-undo": "Zum Rückgängig machen hier tippen.", - "filepond__undo": "Rückgängig", - "filepond__upload": "Hochladen", - "filepond__upload-cancelled": "Hochladen abgebrochen", - "filepond__upload-complete": "Hochladen abgeschlossen", - "filepond__uploading": "Wird hochgeladen", - "filepond__waiting-for-size": "Warte auf Dateigröße", "first-name": "Vorname", "first-name-is-required": "Vorname muss angegeben werden", - "forgot_password?": "Passwort vergessen?", + "forgot_password": "Passwort vergessen?", "general-stats": "Allgemeine Statistiken", "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", "go-to-login": "Zum Login", "goback": "Zur Startseite", "group": "Gruppe", "groups": "Gruppen", - "hallo": "hallo", "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", "import-runners": "Läufer:innen importieren", "import__target-organization": "Ziel Organisation", @@ -140,7 +116,6 @@ "privacy-loading": "Datenschutzerklärung lädt...", "profile-picture": "Profilbild", "read-license": "Lizenz-Text lesen", - "register": "Registrieren", "repo_link": "Link", "request-a-new-reset-mail": "Neue Reset-Mail anfordern", "reset-my-password": "Passwort zurücksetzen", @@ -152,7 +127,6 @@ "save-changes": "Änderungen speichern", "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", "settings": "Einstellungen", - "signout": "Abmelden", "stats-are-being-loaded": "Die Statistiken werden geladen...", "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", "team": "Team", @@ -176,6 +150,5 @@ "users": "Benutzer", "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", "welcome_wavinghand": "Willkommen 👋", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", - "your_profile": "Dein Profil" + "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉" } \ No newline at end of file diff --git a/src/locales/en.json b/src/locales/en.json index b46f3958..0cd63974 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -12,13 +12,11 @@ "attention": "Attention!", "author": "Author", "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.", - "browse": "Browse", "by": "by", "cancel": "Cancel", "cancel-delete": "Cancel Delete", "cancel-keep-team": "Cancel, keep team", "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", - "changelog": "Changelog", "city": "City", "close": "Close", "confirm-delete": "Confirm Delete", @@ -71,43 +69,21 @@ "distance-in-km": "Distance in km", "dont-have-your-email-connected": "Don't have your email connected?", "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", - "drag-and-drop-your-files-or__legacy": "Drag & Drop your files or", "e-mail-adress": "E-Mail Adress", "edit": "Edit", "edit-permissions": "edit permissions", "email_address_or_username": "Email / username", "error_on_login": "Error on login", "faq": "FAQ", - "filepond__abort": "Abort", - "filepond__cancel": "Cancel", - "filepond__error-during-load": "Error during load", - "filepond__error-during-remove": "Error during remove", - "filepond__error-during-revert": "Error during revert", - "filepond__error-during-upload": "Error during upload", - "filepond__field-contains-invalid-files": "Field contains invalid files", - "filepond__loading": "Loading", - "filepond__remove": "Remove", - "filepond__retry": "Retry", - "filepond__size-not-available": "Size not available", - "filepond__tap-to-cancel": "tap to cancel", - "filepond__tap-to-retry": "tap to retry", - "filepond__tap-to-undo": "tap to undo", - "filepond__undo": "Undo", - "filepond__upload": "Upload", - "filepond__upload-cancelled": "Upload cancelled", - "filepond__upload-complete": "Upload complete", - "filepond__uploading": "Uploading", - "filepond__waiting-for-size": "Waiting for size", "first-name": "First name", "first-name-is-required": "First Name is required", - "forgot_password?": "Forgot your password?", + "forgot_password": "Forgot your password?", "general-stats": "General Stats", "general_promise_error": "😢 Error", "go-to-login": "Go To Login", "goback": "Go Home", "group": "Group", "groups": "Groups", - "hallo": "hello", "icon-image-credits": "We also want to thank these projects for illustrations and icons:", "import-runners": "Import runners", "import__target-organization": "Target Organization", @@ -155,7 +131,6 @@ "privacy-loading": "Privacy loading...", "profile-picture": "Profile Picture", "read-license": "Read License", - "register": "Register", "repo_link": "Link", "request-a-new-reset-mail": "Request a new reset mail", "reset-my-password": "Reset my password", @@ -167,7 +142,6 @@ "save-changes": "Save Changes", "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", "settings": "Settings", - "signout": "Sign out", "stats-are-being-loaded": "stats are being loaded...", "successful-password-reset": "Successful password reset!", "team": "Team", @@ -198,6 +172,5 @@ "valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required", "welcome_wavinghand": "Welcome 👋", "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", - "your_profile": "Your Profile", "zip-postal-code": "ZIP/ postal code" } \ No newline at end of file From 25ac84e5fddd0927dc4283836a36e0f15615609f Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Feb 2021 17:45:27 +0100 Subject: [PATCH 006/359] Formatting ref #69 --- src/App.svelte | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/App.svelte b/src/App.svelte index cec35a20..0757a02b 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -52,9 +52,9 @@ import RunnerDetail from "./components/runners/RunnerDetail.svelte"; import Imprint from "./components/general/Imprint.svelte"; import Privacy from "./components/general/Privacy.svelte"; -import ResetPassword from "./components/auth/ResetPassword.svelte"; -import Contacts from "./components/contacts/Contacts.svelte"; -import ContactDetail from "./components/contacts/ContactDetail.svelte"; + import ResetPassword from "./components/auth/ResetPassword.svelte"; + import Contacts from "./components/contacts/Contacts.svelte"; + import ContactDetail from "./components/contacts/ContactDetail.svelte"; store.init(); registerSW(); From b195c707b05ffa415b50afdf4a532e03340e1ebf Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Feb 2021 17:49:26 +0100 Subject: [PATCH 007/359] Fixed privacy/imprint fallback bug ref #69 --- src/components/general/Imprint.svelte | 3 +++ src/components/general/Privacy.svelte | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/components/general/Imprint.svelte b/src/components/general/Imprint.svelte index d050c3fe..33c878e6 100644 --- a/src/components/general/Imprint.svelte +++ b/src/components/general/Imprint.svelte @@ -6,6 +6,9 @@ let html = ""; async function load() { let md = await fetch("/imprint_" + getLocaleFromNavigator() + ".md"); + if((await md.text()).includes(" Date: Thu, 18 Feb 2021 18:09:57 +0100 Subject: [PATCH 008/359] =?UTF-8?q?=E2=9C=A8=20translation=20keys?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #69 --- src/components/base/NoComponentLoaded.svelte | 4 +- .../contacts/AddContactModal.svelte | 26 +-- .../contacts/ContactsOverview.svelte | 12 +- src/components/dashboard/Dashboard.svelte | 1 - .../dashboard/MainDashContent.svelte | 4 +- src/components/general/Settings.svelte | 4 +- src/components/orgs/AddOrgModal.svelte | 21 +- src/components/orgs/ConfirmOrgDeletion.svelte | 20 +- src/components/orgs/OrgDetail.svelte | 23 +- src/components/orgs/OrgOverview.svelte | 20 +- src/components/orgs/Orgs.svelte | 1 - src/components/orgs/OrgsEmptyState.svelte | 5 +- src/components/runners/AddRunnerModal.svelte | 20 +- .../runners/ImportRunnerModal.svelte | 10 +- src/components/runners/Runners.svelte | 4 +- .../runners/RunnersEmptyState.svelte | 8 +- src/components/runners/RunnersOverview.svelte | 207 ++++++++++-------- src/components/teams/AddTeamModal.svelte | 6 +- .../teams/ConfirmTeamDeletion.svelte | 16 +- src/components/teams/Teams.svelte | 8 +- src/components/teams/TeamsEmptyState.svelte | 4 +- src/components/teams/TeamsOverview.svelte | 19 +- src/components/tracks/AddTrackModal.svelte | 14 +- src/components/tracks/TracksOverview.svelte | 4 +- src/components/users/AddUserModal.svelte | 13 +- src/components/users/UserPermissions.svelte | 21 +- src/components/users/UsersEmptyState.svelte | 4 +- src/components/users/UsersOverview.svelte | 37 ++-- src/locales/en.json | 62 +++++- 29 files changed, 334 insertions(+), 264 deletions(-) diff --git a/src/components/base/NoComponentLoaded.svelte b/src/components/base/NoComponentLoaded.svelte index a5f96fc2..58efa45d 100644 --- a/src/components/base/NoComponentLoaded.svelte +++ b/src/components/base/NoComponentLoaded.svelte @@ -7,12 +7,12 @@
- Internal Error + {$_('internal-error')}
diff --git a/src/components/contacts/ContactsOverview.svelte b/src/components/contacts/ContactsOverview.svelte index 4a4a1c25..2e0727b9 100644 --- a/src/components/contacts/ContactsOverview.svelte +++ b/src/components/contacts/ContactsOverview.svelte @@ -19,7 +19,7 @@ {:then} @@ -40,20 +40,20 @@ - Name + {$_('name')} - Groups + {$_('groups')} - Address + {$_('address')} - Action + {$_('action')} @@ -132,7 +132,7 @@ (obj) => obj.id !== t.id ); Toastify({ - text: 'Contact deleted', + text: $_('contact-deleted'), duration: 500, backgroundColor: 'linear-gradient(to right, #00b09b, #96c93d)', diff --git a/src/components/dashboard/Dashboard.svelte b/src/components/dashboard/Dashboard.svelte index 40401798..fc89308c 100644 --- a/src/components/dashboard/Dashboard.svelte +++ b/src/components/dashboard/Dashboard.svelte @@ -5,7 +5,6 @@ import { router } from "tinro"; import NoComponentLoaded from "../base/NoComponentLoaded.svelte"; import { AuthService } from "@odit/lfk-client-js"; - let dropdown1 = false; $: navOpen = false; function logout() { localForage.clear(); diff --git a/src/components/dashboard/MainDashContent.svelte b/src/components/dashboard/MainDashContent.svelte index 4d3efd2a..fa0e2594 100644 --- a/src/components/dashboard/MainDashContent.svelte +++ b/src/components/dashboard/MainDashContent.svelte @@ -10,9 +10,9 @@ on:click={() => { navOpen = false; }}> -

- {$_('dashboard-title')} + {$_('dashboard-title')} + - {$_('dashboard-greeting')}, import { _ } from "svelte-i18n"; -import FormLayout from "../base/FormLayout.svelte"; + import FormLayout from "../base/FormLayout.svelte";
@@ -32,4 +32,4 @@ import FormLayout from "../base/FormLayout.svelte";

-
\ No newline at end of file + diff --git a/src/components/orgs/AddOrgModal.svelte b/src/components/orgs/AddOrgModal.svelte index 8419cdf8..c4458ad2 100644 --- a/src/components/orgs/AddOrgModal.svelte +++ b/src/components/orgs/AddOrgModal.svelte @@ -32,7 +32,7 @@ if (processed_last_submit === true) { processed_last_submit = false; const toast = Toastify({ - text: "Organization is being added...", + text: $_("organization-is-being-added"), duration: -1, }).showToast(); RunnerOrganizationService.runnerOrganizationControllerPost({ @@ -43,20 +43,16 @@ .then((result) => { name = ""; modal_open = false; - // Toastify({ - text: "Organization added", + text: $_("organization-added"), duration: 500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); current_organizations = current_organizations.concat([result]); }) - .catch((err) => { - // - }) + .catch((err) => {}) .finally(() => { processed_last_submit = true; - // toast.hideToast(); }); } @@ -101,23 +97,22 @@

- Create a new Organization + {$_('create-a-new-organization')}

- Please provide the required information to add a new - organization. + {$_('please-provide-the-required-information-to-add-a-new-organization')}

+ class="block text-sm font-medium text-gray-700">{$_('name')} - Organization name is required + {$_('organization-name-is-required')} {/if}
diff --git a/src/components/orgs/ConfirmOrgDeletion.svelte b/src/components/orgs/ConfirmOrgDeletion.svelte index 926dc5ba..7fb936d8 100644 --- a/src/components/orgs/ConfirmOrgDeletion.svelte +++ b/src/components/orgs/ConfirmOrgDeletion.svelte @@ -25,9 +25,7 @@ }).showToast(); location.replace("./"); }) - .catch((err) => { - // - }); + .catch((err) => {}); } @@ -68,13 +66,17 @@

- Attention! + {$_('attention')}

- Do you want to delete the organization - {delete_org.name}?
All associated teams and runners will - be deleted too! + {$_( + 'do-you-want-to-delete-the-organization-delete_org-name', + { + values: { orgname: delete_org.name }, + } + )}
+ {$_('all-associated-teams-and-runners-will-be-deleted-too')}

@@ -85,13 +87,13 @@ on:click={deleteOrg} type="button" class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm"> - Confirm, delete organization and associated teams+runners. + {$_('confirm-delete-organization-and-associated-teams-runners')}
diff --git a/src/components/orgs/OrgDetail.svelte b/src/components/orgs/OrgDetail.svelte index 43df726a..7aaf12a9 100644 --- a/src/components/orgs/OrgDetail.svelte +++ b/src/components/orgs/OrgDetail.svelte @@ -41,21 +41,21 @@ ) .then((resp) => { Toastify({ - text: "Organization deleted", + text: $_("organization-deleted"), duration: 500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); location.replace("./"); }) .catch((err) => { - modal_open = true; - delete_org = original; - }); + modal_open = true; + delete_org = original; + }); } function submit() { if (data_loaded === true && save_enabled) { Toastify({ - text: "updating organization", + text: $_("updating-organization"), duration: 2500, }).showToast(); let postdata = orgdata; @@ -68,9 +68,8 @@ Object.assign(original, orgdata); original = orgdata; Object.assign(original, orgdata); - // Toastify({ - text: "updated organization", + text: $_("updated-organization"), duration: 2500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); @@ -158,7 +157,7 @@
  • - Home{$_('home')}
  • - Orgs{$_('organizations')}
    - + {:else} {#await promise} - organization detail is being loaded... + {$_('organization-detail-is-being-loaded')} {:catch error} {/await} diff --git a/src/components/orgs/OrgOverview.svelte b/src/components/orgs/OrgOverview.svelte index 7d4cd967..3843d31f 100644 --- a/src/components/orgs/OrgOverview.svelte +++ b/src/components/orgs/OrgOverview.svelte @@ -30,7 +30,7 @@ {:then} @@ -51,20 +51,20 @@ - Name + {$_('name')} - Address + {$_('address')} - Contact + {$_('contact')} - Action + {$_('action')} @@ -105,7 +105,7 @@ class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800">{o.contact.firstname} {o.contact.middlename || ''} {o.contact.lastname} - {:else}no contact specified{/if} + {:else}{$_('no-contact-specified')}{/if}
    @@ -118,8 +118,7 @@ active_deletes[o.id] = false; }} tabindex="0" - class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer">Cancel - Delete + class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer">{$_('cancel-delete')} + class="ml-4 text-red-600 hover:text-red-900 cursor-pointer">{$_('confirm-delete')} {:else} Delete + class="ml-4 text-red-600 hover:text-red-900 cursor-pointer">{$_('delete')} {/if} {/if} diff --git a/src/components/orgs/Orgs.svelte b/src/components/orgs/Orgs.svelte index 43e9bbfd..469553da 100644 --- a/src/components/orgs/Orgs.svelte +++ b/src/components/orgs/Orgs.svelte @@ -33,7 +33,6 @@ {/if} -

    manage runner organizations

    diff --git a/src/components/orgs/OrgsEmptyState.svelte b/src/components/orgs/OrgsEmptyState.svelte index 1cc912f0..f6a61205 100644 --- a/src/components/orgs/OrgsEmptyState.svelte +++ b/src/components/orgs/OrgsEmptyState.svelte @@ -9,8 +9,9 @@

    - There are no organizations added yet.
    - Add your first organization + {$_('there-are-no-organizations-added-yet')}
    + {$_('add-your-first-organization')}

    diff --git a/src/components/runners/AddRunnerModal.svelte b/src/components/runners/AddRunnerModal.svelte index d2017d27..d590e410 100644 --- a/src/components/runners/AddRunnerModal.svelte +++ b/src/components/runners/AddRunnerModal.svelte @@ -36,13 +36,15 @@ $: firstname_input_value = ""; $: processed_last_submit = true; $: isPhoneValidOrEmpty = - phone_input_value.includes("+")&&isMobilePhone( - phone_input_value - .replaceAll("(", "") - .replaceAll(")", "") - .replaceAll("-", "") - .replaceAll(" ", "") - ) || phone_input_value === ""; + (phone_input_value.includes("+") && + isMobilePhone( + phone_input_value + .replaceAll("(", "") + .replaceAll(")", "") + .replaceAll("-", "") + .replaceAll(" ", "") + )) || + phone_input_value === ""; $: isEmailValidOrEmpty = isEmail(email_input_value) || email_input_value === ""; $: isLastnameValid = lastname_input_value.trim().length !== 0; @@ -70,7 +72,7 @@ if (processed_last_submit === true) { processed_last_submit = false; const toast = Toastify({ - text: "Runner is being added...", + text: $_("runner-is-being-added"), duration: -1, }).showToast(); let postdata = { @@ -96,7 +98,7 @@ modal_open = false; // Toastify({ - text: "Runner added", + text: $_("runner-added"), duration: 500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); diff --git a/src/components/runners/ImportRunnerModal.svelte b/src/components/runners/ImportRunnerModal.svelte index 1fcd35af..3a147368 100644 --- a/src/components/runners/ImportRunnerModal.svelte +++ b/src/components/runners/ImportRunnerModal.svelte @@ -77,7 +77,7 @@ function importAction() { if (recent_processed === true) { const toast = Toastify({ - text: "Runners are being imported...", + text: $_("runners-are-being-imported"), duration: -1, }).showToast(); recent_processed = false; @@ -104,7 +104,7 @@ toast.hideToast(); recent_processed = true; Toastify({ - text: "Import finished", + text: $_("import-finished"), duration: 500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); @@ -121,7 +121,7 @@ toast.hideToast(); recent_processed = true; Toastify({ - text: "Import finished", + text: $_("import-finished"), duration: 500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); @@ -144,7 +144,7 @@ toast.hideToast(); recent_processed = true; Toastify({ - text: "Import finished", + text: $_("import-finished"), duration: 500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); @@ -253,7 +253,7 @@

    {$_('bitte-bestaetige-diese-laeufer-fuer-den-import')}

    {/if} {#if opened_from === 'RunnerOverview'} -

    Group

    +

    {$_('group')}

    { - selectedFilter=event.detail - }} selectedValue={selectedFilter} placeholder="Filter by Organization/ Team" containerClasses="mt-1 py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" items={selectgroups} isMulti={true}> + + + +
    +
    + +
    +
    + +
    + {#if orgdata.address_checked === true} +
    + + + {#if !isAddress1Valid} + + {$_('address-is-required')} + + {/if} +
    +
    + + +
    +
    + + + {#if !iszipcodevalid} + + {$_('valid-zipcode-postal-code-is-required')} + + {/if} +
    +
    + + + {#if !iscityvalid} + + {$_('valid-city-is-required')} + + {/if} +
    + {/if} {:else} {#await promise} From 616990b930cafe4eac57cf771b8b5d722b281218 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Fri, 19 Feb 2021 17:24:22 +0100 Subject: [PATCH 024/359] =?UTF-8?q?=F0=9F=90=9E=20fixed=20bug=20in=20OrgDe?= =?UTF-8?q?tail=20address=20reactivity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #72 --- src/components/orgs/OrgDetail.svelte | 75 +++++++++++++--------------- 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/src/components/orgs/OrgDetail.svelte b/src/components/orgs/OrgDetail.svelte index 9ed83185..8c3da191 100644 --- a/src/components/orgs/OrgDetail.svelte +++ b/src/components/orgs/OrgDetail.svelte @@ -10,17 +10,20 @@ import ImportRunnerModal from "../runners/ImportRunnerModal.svelte"; import PromiseError from "../base/PromiseError.svelte"; $: delete_triggered = false; - $: save_enabled = (data_changed && ((isAddress1Valid && iszipcodevalid && iscityvalid) || - orgdata.address_checked === false)); - export let params; - $: orgdata = {}; - $: original = {}; + $: address_valid_or_none = + (isAddress1Valid && iszipcodevalid && iscityvalid) || + editable.address_checked === false; + $: save_enabled = data_changed && address_valid_or_none; + let original = ""; + let original_object = {}; let contacts = []; + export let params; + $: editable = {}; $: data_loaded = false; - $: data_changed = !(JSON.stringify(orgdata) === JSON.stringify(original)); - $: isAddress1Valid = orgdata.address?.address1?.trim().length !== 0; - $: iszipcodevalid = orgdata.address?.postalcode?.trim().length !== 0; - $: iscityvalid = orgdata.address?.city?.trim().length !== 0; + $: data_changed = !(JSON.stringify(editable) === original); + $: isAddress1Valid = editable.address?.address1?.trim().length !== 0; + $: iszipcodevalid = editable.address?.postalcode?.trim().length !== 0; + $: iscityvalid = editable.address?.city?.trim().length !== 0; const promise = RunnerOrganizationService.runnerOrganizationControllerGetOne( params.orgid @@ -31,10 +34,11 @@ value.contact = value.contact.id; } } - orgdata = Object.assign(orgdata, value); - original = Object.assign(original, value); - orgdata.address_checked = orgdata.address.address1 !== null; - original.address_checked = orgdata.address.address1 !== null; + value.address_checked = value.address.address1 !== null; + editable = Object.assign(editable, value); + editable = editable; + original_object = Object.assign(editable, value); + original = JSON.stringify(value); }); GroupContactService.groupContactControllerGetAll().then((val) => { contacts = val; @@ -43,7 +47,7 @@ let delete_org = {}; function deleteOrganization() { RunnerOrganizationService.runnerOrganizationControllerRemove( - original.id, + original_object.id, false ) .then((resp) => { @@ -55,9 +59,9 @@ location.replace("./"); }) .catch((err) => { - modal_open = true; - delete_org = original; - }); + modal_open = true; + delete_org = original_object; + }); } function submit() { if (data_loaded === true && save_enabled) { @@ -65,20 +69,17 @@ text: "updating organization", duration: 2500, }).showToast(); - let postdata = orgdata; + let postdata = Object.assign({}, editable); if (postdata.address_checked === false) { - postdata.address = {}; + postdata.address = null; } postdata.contact = postdata.contact === "null" ? null : postdata.contact; RunnerOrganizationService.runnerOrganizationControllerPut( - original.id, + original_object.id, postdata ) .then((resp) => { - Object.assign(original, orgdata); - original = orgdata; - Object.assign(original, orgdata); - // + original = JSON.stringify(editable); Toastify({ text: "updated organization", duration: 2500, @@ -99,15 +100,15 @@ current_runners={[]} passed_team={{}} passed_orgs={[]} - passed_org={orgdata} + passed_org={editable} opened_from="OrgDetail" bind:import_modal_open /> {#if data_loaded}
    - {original.name} - + {original_object.name} + {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:IMPORT')}
    -

    Displayed: {data_changed}

    -

    Target: {!(JSON.stringify(orgdata.address) === JSON.stringify(original.address))}

    -

    Edit: {JSON.stringify(orgdata.address)}

    -

    Original: {JSON.stringify(original.address)}

    @@ -239,7 +236,7 @@ class="font-medium text-gray-700">{$_('contact')} {$_('address')}
    - {#if orgdata.address_checked === true} + {#if editable.address_checked === true}
    {#if store.state.jwtinfo.userdetails.permissions.includes('SCAN:CREATE')} - + {/if} diff --git a/src/components/scans/ScansOverview.svelte b/src/components/scans/ScansOverview.svelte index 49a1fca3..9c218aca 100644 --- a/src/components/scans/ScansOverview.svelte +++ b/src/components/scans/ScansOverview.svelte @@ -1,15 +1,15 @@ -{#if store.state.jwtinfo.userdetails.permissions.includes('DONATION:GET')} - {#await donations_promise} +{#if store.state.jwtinfo.userdetails.permissions.includes('SCAN:GET')} + {#await scans_promise} {:then} - {#if current_donations.length === 0} + {#if current_scans.length === 0} {:else} - - {$_('donor')} - @@ -56,12 +51,22 @@ - {$_('amount-per-kilometer')} + Distance - {$_('donation-amount')} + Status + + + Track + + + Station {$_('action')} @@ -69,95 +74,108 @@ - {#each current_donations as donation} - {#if donation.donor.firstname + {#each current_scans as scan} + + {#if scan.donor.firstname .toLowerCase() .includes( searchvalue.toLowerCase() - ) || donation.donor.middlename + ) || scan.donor.middlename .toLowerCase() .includes( searchvalue.toLowerCase() - ) || donation.donor.lastname + ) || scan.donor.lastname .toLowerCase() .includes( searchvalue.toLowerCase() - ) || donation.runner?.firstname + ) || scan.runner?.firstname .toLowerCase() .includes( searchvalue.toLowerCase() - ) || donation.runner?.middlename + ) || scan.runner?.middlename .toLowerCase() .includes( searchvalue.toLowerCase() - ) || donation.runner?.lastname + ) || scan.runner?.lastname .toLowerCase() .includes( searchvalue.toLowerCase() - ) || should_display_based_on_id(donation.id)} - + ) || should_display_based_on_id(scan.id)} +
    {donation.donor.firstname} - {donation.donor.middlename || ''} - {donation.donor.lastname} + href="../runners/{scan.runner.id}" + class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800">{scan.runner.firstname} + {scan.runner.middlename || ''} + {scan.runner.lastname}
    - - {#if donation.runner} - - {:else} -
    - {$_('fixed-donation')} -
    - {/if} - - - {#if donation.amountPerDistance} -
    - {(donation.amountPerDistance / 100) - .toFixed(2) - .toLocaleString('de-DE', { valute: 'EUR' })}€ -
    - {:else} -
    - {$_('fixed-donation')} -
    - {/if} -
    - {(donation.amount / 100) - .toFixed(2) - .toLocaleString('de-DE', { valute: 'EUR' })}€ + {#if scan.distance < 1000} + {scan.distance}m + {:else} + {(scan.distance / 1000)}km + {/if}
    - {#if active_deletes[donation.id] === true} + +
    + {#if scan.valid} + Valid + {:else} + Invalid + {/if} +
    + + + {#if scan.track} + + {:else} +
    + Scan with fixed distance +
    + {/if} + + + {#if scan.station} +
    + {:else} +
    + Scan with fixed distance +
    + {/if} + + + {#if active_deletes[scan.id] === true}
    From 1ada5d9c2c4d78868ca87b5cb05c0b6d770c7e9c Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Wed, 17 Mar 2021 13:58:31 +0100 Subject: [PATCH 215/359] Implemented basic scan creation ref #92 --- src/components/scans/AddScanModal.svelte | 199 +++++++++++++++++++++++ src/components/scans/Scans.svelte | 4 +- 2 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 src/components/scans/AddScanModal.svelte diff --git a/src/components/scans/AddScanModal.svelte b/src/components/scans/AddScanModal.svelte new file mode 100644 index 00000000..8f9c7cc2 --- /dev/null +++ b/src/components/scans/AddScanModal.svelte @@ -0,0 +1,199 @@ + + +{#if modal_open} +
    { + modal_open = false; + }}> +
    + +
    +
    +{/if} diff --git a/src/components/scans/Scans.svelte b/src/components/scans/Scans.svelte index 27263eaf..b817ab57 100644 --- a/src/components/scans/Scans.svelte +++ b/src/components/scans/Scans.svelte @@ -1,7 +1,7 @@ {#if store.state.jwtinfo.userdetails.permissions.includes('SCAN:GET')} @@ -54,23 +59,18 @@ - Distance + Distance (+Track) + + + Laptime Status - - Track - - - Station - {$_('action')} @@ -110,8 +110,25 @@ {#if scan.distance < 1000} {scan.distance}m {:else}{scan.distance / 1000}km{/if} + {#if scan.track} + {scan.track.name} + + {/if} + + {#if scan.laptime} +
    + {format_laptime(scan.laptime)} +
    + {:else} +
    + Scan with fixed distance +
    + {/if} +
    {#if scan.valid} @@ -123,34 +140,6 @@ {/if}
    - - {#if scan.track} - - {:else} -
    - Scan with fixed distance -
    - {/if} - - - {#if scan.station} - - {:else} -
    - Scan with fixed distance -
    - {/if} - {#if active_deletes[scan.id] === true} Date: Wed, 17 Mar 2021 17:01:09 +0100 Subject: [PATCH 220/359] Small bugfixes ref #91 --- src/components/donations/AddDonationModal.svelte | 2 +- src/components/runners/AddRunnerModal.svelte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/donations/AddDonationModal.svelte b/src/components/donations/AddDonationModal.svelte index ae3f0a14..ab9dd2a2 100644 --- a/src/components/donations/AddDonationModal.svelte +++ b/src/components/donations/AddDonationModal.svelte @@ -164,7 +164,7 @@ class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​
    - {original_data.runner.firstname} - {original_data.runner.middlename || ''} - {original_data.runner.lastname} + {runner.value?.firstname} + {runner.value?.middlename || ''} + {runner.value?.lastname} #{original_data.id} {#if store.state.jwtinfo.userdetails.permissions.includes('SCAN:DELETE')} @@ -235,7 +235,7 @@ noOptionsMessage={$_('no-runners-found')} bind:selectedValue={runner} on:select={(selectedValue) => { - editable.runner = selectedValue.detail.value; + editable.runner = selectedValue.detail.value.id; }} on:clear={() => (editable.runner = null)} />
    From d28a0e1dbb877b3e369b106a103a3bfc52dd1e6a Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Mar 2021 18:32:08 +0100 Subject: [PATCH 251/359] Fix for bug discovered by @philipp ref #92 --- src/components/scans/ScanDetail.svelte | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/components/scans/ScanDetail.svelte b/src/components/scans/ScanDetail.svelte index d6553d58..f054dad5 100644 --- a/src/components/scans/ScanDetail.svelte +++ b/src/components/scans/ScanDetail.svelte @@ -29,13 +29,14 @@ (data) => { data_loaded = true; original_data = Object.assign(original_data, data); + original_data.runner = original_data.runner.id; editable = Object.assign(editable, original_data); RunnerService.runnerControllerGetAll().then( (val) => { current_runners = val.map((r) => { return { label: getRunnerLabel(r), value: r }; }); - runner = current_runners.find(r => r.value.id == editable.runner.id); + runner = current_runners.find(r => r.value.id == editable.runner); } ); } @@ -55,7 +56,6 @@ let postdata = {}; if (original_data.responseType === "TRACKSCAN") { postdata = Object.assign(postdata, editable); - postdata.runner = postdata.runner.id; postdata.track = postdata.track.id; ScanService.scanControllerPutTrackScan(original_data.id, postdata) .then((resp) => { @@ -70,7 +70,6 @@ .catch((err) => {}); } else { postdata = Object.assign(postdata, editable); - postdata.runner = postdata.runner.id; ScanService.scanControllerPut(original_data.id, postdata) .then((resp) => { Object.assign(original_data, editable); @@ -153,9 +152,9 @@
    - {original_data.runner.firstname} - {original_data.runner.middlename || ''} - {original_data.runner.lastname} + {runner.value?.firstname} + {runner.value?.middlename || ''} + {runner.value?.lastname} #{original_data.id} {#if store.state.jwtinfo.userdetails.permissions.includes('SCAN:DELETE')} @@ -235,7 +234,7 @@ noOptionsMessage={$_('no-runners-found')} bind:selectedValue={runner} on:select={(selectedValue) => { - editable.runner = selectedValue.detail.value; + editable.runner = selectedValue.detail.value.id; }} on:clear={() => (editable.runner = null)} />
    From 7521ad8bbbb094bbe9ba723d03b3e9eb7f6a3243 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Mar 2021 17:53:53 +0000 Subject: [PATCH 252/359] new license file version [CI SKIP] --- public/licenses.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/licenses.json b/public/licenses.json index 936e445c..5a63e467 100644 --- a/public/licenses.json +++ b/public/licenses.json @@ -1 +1 @@ -[{"author":"ODIT.Services","repo":{"type":"git","url":"git+https://git.odit.services/lfk/lfk-client-js"},"description":"A lib to interact with https://git.odit.services/lfk/backend. Use this version for native JS applications.","name":"@odit/lfk-client-js","license":"CC-BY-NC-SA-4.0","version":"0.4.5","licensetext":"Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Creative\r\nCommons Corporation (\"Creative Commons\") is not a law firm and does not provide\r\nlegal services or legal advice. Distribution of Creative Commons public licenses\r\ndoes not create a lawyer-client or other relationship. Creative Commons makes\r\nits licenses and related information available on an \"as-is\" basis. Creative\r\nCommons gives no warranties regarding its licenses, any material licensed\r\nunder their terms and conditions, or any related information. Creative Commons\r\ndisclaims all liability for damages resulting from their use to the fullest\r\nextent possible.\r\n\r\nUsing Creative Commons Public Licenses\r\n\r\nCreative Commons public licenses provide a standard set of terms and conditions\r\nthat creators and other rights holders may use to share original works of\r\nauthorship and other material subject to copyright and certain other rights\r\nspecified in the public license below. The following considerations are for\r\ninformational purposes only, are not exhaustive, and do not form part of our\r\nlicenses.\r\n\r\nConsiderations for licensors: Our public licenses are intended for use by\r\nthose authorized to give the public permission to use material in ways otherwise\r\nrestricted by copyright and certain other rights. Our licenses are irrevocable.\r\nLicensors should read and understand the terms and conditions of the license\r\nthey choose before applying it. Licensors should also secure all rights necessary\r\nbefore applying our licenses so that the public can reuse the material as\r\nexpected. Licensors should clearly mark any material not subject to the license.\r\nThis includes other CC-licensed material, or material used under an exception\r\nor limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors\r\n\r\nConsiderations for the public: By using one of our public licenses, a licensor\r\ngrants the public permission to use the licensed material under specified\r\nterms and conditions. If the licensor's permission is not necessary for any\r\nreason–for example, because of any applicable exception or limitation to copyright–then\r\nthat use is not regulated by the license. Our licenses grant only permissions\r\nunder copyright and certain other rights that a licensor has authority to\r\ngrant. Use of the licensed material may still be restricted for other reasons,\r\nincluding because others have copyright or other rights in the material. A\r\nlicensor may make special requests, such as asking that all changes be marked\r\nor described. Although not required by our licenses, you are encouraged to\r\nrespect those requests where reasonable. More considerations for the public\r\n: wiki.creativecommons.org/Considerations_for_licensees\r\n\r\nCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public\r\nLicense\r\n\r\nBy exercising the Licensed Rights (defined below), You accept and agree to\r\nbe bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike\r\n4.0 International Public License (\"Public License\"). To the extent this Public\r\nLicense may be interpreted as a contract, You are granted the Licensed Rights\r\nin consideration of Your acceptance of these terms and conditions, and the\r\nLicensor grants You such rights in consideration of benefits the Licensor\r\nreceives from making the Licensed Material available under these terms and\r\nconditions.\r\n\r\nSection 1 – Definitions.\r\n\r\na. Adapted Material means material subject to Copyright and Similar Rights\r\nthat is derived from or based upon the Licensed Material and in which the\r\nLicensed Material is translated, altered, arranged, transformed, or otherwise\r\nmodified in a manner requiring permission under the Copyright and Similar\r\nRights held by the Licensor. For purposes of this Public License, where the\r\nLicensed Material is a musical work, performance, or sound recording, Adapted\r\nMaterial is always produced where the Licensed Material is synched in timed\r\nrelation with a moving image.\r\n\r\nb. Adapter's License means the license You apply to Your Copyright and Similar\r\nRights in Your contributions to Adapted Material in accordance with the terms\r\nand conditions of this Public License.\r\n\r\nc. BY-NC-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses,\r\napproved by Creative Commons as essentially the equivalent of this Public\r\nLicense.\r\n\r\nd. Copyright and Similar Rights means copyright and/or similar rights closely\r\nrelated to copyright including, without limitation, performance, broadcast,\r\nsound recording, and Sui Generis Database Rights, without regard to how the\r\nrights are labeled or categorized. For purposes of this Public License, the\r\nrights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.\r\n\r\ne. Effective Technological Measures means those measures that, in the absence\r\nof proper authority, may not be circumvented under laws fulfilling obligations\r\nunder Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996,\r\nand/or similar international agreements.\r\n\r\nf. Exceptions and Limitations means fair use, fair dealing, and/or any other\r\nexception or limitation to Copyright and Similar Rights that applies to Your\r\nuse of the Licensed Material.\r\n\r\ng. License Elements means the license attributes listed in the name of a Creative\r\nCommons Public License. The License Elements of this Public License are Attribution,\r\nNonCommercial, and ShareAlike.\r\n\r\nh. Licensed Material means the artistic or literary work, database, or other\r\nmaterial to which the Licensor applied this Public License.\r\n\r\ni. Licensed Rights means the rights granted to You subject to the terms and\r\nconditions of this Public License, which are limited to all Copyright and\r\nSimilar Rights that apply to Your use of the Licensed Material and that the\r\nLicensor has authority to license.\r\n\r\nj. Licensor means the individual(s) or entity(ies) granting rights under this\r\nPublic License.\r\n\r\nk. NonCommercial means not primarily intended for or directed towards commercial\r\nadvantage or monetary compensation. For purposes of this Public License, the\r\nexchange of the Licensed Material for other material subject to Copyright\r\nand Similar Rights by digital file-sharing or similar means is NonCommercial\r\nprovided there is no payment of monetary compensation in connection with the\r\nexchange.\r\n\r\nl. Share means to provide material to the public by any means or process that\r\nrequires permission under the Licensed Rights, such as reproduction, public\r\ndisplay, public performance, distribution, dissemination, communication, or\r\nimportation, and to make material available to the public including in ways\r\nthat members of the public may access the material from a place and at a time\r\nindividually chosen by them.\r\n\r\nm. Sui Generis Database Rights means rights other than copyright resulting\r\nfrom Directive 96/9/EC of the European Parliament and of the Council of 11\r\nMarch 1996 on the legal protection of databases, as amended and/or succeeded,\r\nas well as other essentially equivalent rights anywhere in the world.\r\n\r\nn. You means the individual or entity exercising the Licensed Rights under\r\nthis Public License. Your has a corresponding meaning.\r\n\r\nSection 2 – Scope.\r\n\r\n a. License grant.\r\n\r\n1. Subject to the terms and conditions of this Public License, the Licensor\r\nhereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive,\r\nirrevocable license to exercise the Licensed Rights in the Licensed Material\r\nto:\r\n\r\nA. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial\r\npurposes only; and\r\n\r\nB. produce, reproduce, and Share Adapted Material for NonCommercial purposes\r\nonly.\r\n\r\n2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions\r\nand Limitations apply to Your use, this Public License does not apply, and\r\nYou do not need to comply with its terms and conditions.\r\n\r\n 3. Term. The term of this Public License is specified in Section 6(a).\r\n\r\n4. Media and formats; technical modifications allowed. The Licensor authorizes\r\nYou to exercise the Licensed Rights in all media and formats whether now known\r\nor hereafter created, and to make technical modifications necessary to do\r\nso. The Licensor waives and/or agrees not to assert any right or authority\r\nto forbid You from making technical modifications necessary to exercise the\r\nLicensed Rights, including technical modifications necessary to circumvent\r\nEffective Technological Measures. For purposes of this Public License, simply\r\nmaking modifications authorized by this Section 2(a)(4) never produces Adapted\r\nMaterial.\r\n\r\n 5. Downstream recipients.\r\n\r\nA. Offer from the Licensor – Licensed Material. Every recipient of the Licensed\r\nMaterial automatically receives an offer from the Licensor to exercise the\r\nLicensed Rights under the terms and conditions of this Public License.\r\n\r\nB. Additional offer from the Licensor – Adapted Material. Every recipient\r\nof Adapted Material from You automatically receives an offer from the Licensor\r\nto exercise the Licensed Rights in the Adapted Material under the conditions\r\nof the Adapter's License You apply.\r\n\r\nC. No downstream restrictions. You may not offer or impose any additional\r\nor different terms or conditions on, or apply any Effective Technological\r\nMeasures to, the Licensed Material if doing so restricts exercise of the Licensed\r\nRights by any recipient of the Licensed Material.\r\n\r\n6. No endorsement. Nothing in this Public License constitutes or may be construed\r\nas permission to assert or imply that You are, or that Your use of the Licensed\r\nMaterial is, connected with, or sponsored, endorsed, or granted official status\r\nby, the Licensor or others designated to receive attribution as provided in\r\nSection 3(a)(1)(A)(i).\r\n\r\n b. Other rights.\r\n\r\n1. Moral rights, such as the right of integrity, are not licensed under this\r\nPublic License, nor are publicity, privacy, and/or other similar personality\r\nrights; however, to the extent possible, the Licensor waives and/or agrees\r\nnot to assert any such rights held by the Licensor to the limited extent necessary\r\nto allow You to exercise the Licensed Rights, but not otherwise.\r\n\r\n2. Patent and trademark rights are not licensed under this Public License.\r\n\r\n3. To the extent possible, the Licensor waives any right to collect royalties\r\nfrom You for the exercise of the Licensed Rights, whether directly or through\r\na collecting society under any voluntary or waivable statutory or compulsory\r\nlicensing scheme. In all other cases the Licensor expressly reserves any right\r\nto collect such royalties, including when the Licensed Material is used other\r\nthan for NonCommercial purposes.\r\n\r\nSection 3 – License Conditions.\r\n\r\nYour exercise of the Licensed Rights is expressly made subject to the following\r\nconditions.\r\n\r\n a. Attribution.\r\n\r\n1. If You Share the Licensed Material (including in modified form), You must:\r\n\r\nA. retain the following if it is supplied by the Licensor with the Licensed\r\nMaterial:\r\n\r\ni. identification of the creator(s) of the Licensed Material and any others\r\ndesignated to receive attribution, in any reasonable manner requested by the\r\nLicensor (including by pseudonym if designated);\r\n\r\n ii. a copyright notice;\r\n\r\n iii. a notice that refers to this Public License;\r\n\r\n iv. a notice that refers to the disclaimer of warranties;\r\n\r\n \r\n\r\nv. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;\r\n\r\nB. indicate if You modified the Licensed Material and retain an indication\r\nof any previous modifications; and\r\n\r\nC. indicate the Licensed Material is licensed under this Public License, and\r\ninclude the text of, or the URI or hyperlink to, this Public License.\r\n\r\n2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner\r\nbased on the medium, means, and context in which You Share the Licensed Material.\r\nFor example, it may be reasonable to satisfy the conditions by providing a\r\nURI or hyperlink to a resource that includes the required information.\r\n\r\n3. If requested by the Licensor, You must remove any of the information required\r\nby Section 3(a)(1)(A) to the extent reasonably practicable.\r\n\r\nb. ShareAlike.In addition to the conditions in Section 3(a), if You Share\r\nAdapted Material You produce, the following conditions also apply.\r\n\r\n1. The Adapter's License You apply must be a Creative Commons license with\r\nthe same License Elements, this version or later, or a BY-NC-SA Compatible\r\nLicense.\r\n\r\n2. You must include the text of, or the URI or hyperlink to, the Adapter's\r\nLicense You apply. You may satisfy this condition in any reasonable manner\r\nbased on the medium, means, and context in which You Share Adapted Material.\r\n\r\n3. You may not offer or impose any additional or different terms or conditions\r\non, or apply any Effective Technological Measures to, Adapted Material that\r\nrestrict exercise of the rights granted under the Adapter's License You apply.\r\n\r\nSection 4 – Sui Generis Database Rights.\r\n\r\nWhere the Licensed Rights include Sui Generis Database Rights that apply to\r\nYour use of the Licensed Material:\r\n\r\na. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract,\r\nreuse, reproduce, and Share all or a substantial portion of the contents of\r\nthe database for NonCommercial purposes only;\r\n\r\nb. if You include all or a substantial portion of the database contents in\r\na database in which You have Sui Generis Database Rights, then the database\r\nin which You have Sui Generis Database Rights (but not its individual contents)\r\nis Adapted Material, including for purposes of Section 3(b); and\r\n\r\nc. You must comply with the conditions in Section 3(a) if You Share all or\r\na substantial portion of the contents of the database.\r\n\r\nFor the avoidance of doubt, this Section 4 supplements and does not replace\r\nYour obligations under this Public License where the Licensed Rights include\r\nother Copyright and Similar Rights.\r\n\r\nSection 5 – Disclaimer of Warranties and Limitation of Liability.\r\n\r\na. Unless otherwise separately undertaken by the Licensor, to the extent possible,\r\nthe Licensor offers the Licensed Material as-is and as-available, and makes\r\nno representations or warranties of any kind concerning the Licensed Material,\r\nwhether express, implied, statutory, or other. This includes, without limitation,\r\nwarranties of title, merchantability, fitness for a particular purpose, non-infringement,\r\nabsence of latent or other defects, accuracy, or the presence or absence of\r\nerrors, whether or not known or discoverable. Where disclaimers of warranties\r\nare not allowed in full or in part, this disclaimer may not apply to You.\r\n\r\nb. To the extent possible, in no event will the Licensor be liable to You\r\non any legal theory (including, without limitation, negligence) or otherwise\r\nfor any direct, special, indirect, incidental, consequential, punitive, exemplary,\r\nor other losses, costs, expenses, or damages arising out of this Public License\r\nor use of the Licensed Material, even if the Licensor has been advised of\r\nthe possibility of such losses, costs, expenses, or damages. Where a limitation\r\nof liability is not allowed in full or in part, this limitation may not apply\r\nto You.\r\n\r\nc. The disclaimer of warranties and limitation of liability provided above\r\nshall be interpreted in a manner that, to the extent possible, most closely\r\napproximates an absolute disclaimer and waiver of all liability.\r\n\r\nSection 6 – Term and Termination.\r\n\r\na. This Public License applies for the term of the Copyright and Similar Rights\r\nlicensed here. However, if You fail to comply with this Public License, then\r\nYour rights under this Public License terminate automatically.\r\n\r\nb. Where Your right to use the Licensed Material has terminated under Section\r\n6(a), it reinstates:\r\n\r\n1. automatically as of the date the violation is cured, provided it is cured\r\nwithin 30 days of Your discovery of the violation; or\r\n\r\n 2. upon express reinstatement by the Licensor.\r\n\r\nFor the avoidance of doubt, this Section 6(b) does not affect any right the\r\nLicensor may have to seek remedies for Your violations of this Public License.\r\n\r\nc. For the avoidance of doubt, the Licensor may also offer the Licensed Material\r\nunder separate terms or conditions or stop distributing the Licensed Material\r\nat any time; however, doing so will not terminate this Public License.\r\n\r\n d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.\r\n\r\nSection 7 – Other Terms and Conditions.\r\n\r\na. The Licensor shall not be bound by any additional or different terms or\r\nconditions communicated by You unless expressly agreed.\r\n\r\nb. Any arrangements, understandings, or agreements regarding the Licensed\r\nMaterial not stated herein are separate from and independent of the terms\r\nand conditions of this Public License.\r\n\r\nSection 8 – Interpretation.\r\n\r\na. For the avoidance of doubt, this Public License does not, and shall not\r\nbe interpreted to, reduce, limit, restrict, or impose conditions on any use\r\nof the Licensed Material that could lawfully be made without permission under\r\nthis Public License.\r\n\r\nb. To the extent possible, if any provision of this Public License is deemed\r\nunenforceable, it shall be automatically reformed to the minimum extent necessary\r\nto make it enforceable. If the provision cannot be reformed, it shall be severed\r\nfrom this Public License without affecting the enforceability of the remaining\r\nterms and conditions.\r\n\r\nc. No term or condition of this Public License will be waived and no failure\r\nto comply consented to unless expressly agreed to by the Licensor.\r\n\r\nd. Nothing in this Public License constitutes or may be interpreted as a limitation\r\nupon, or waiver of, any privileges and immunities that apply to the Licensor\r\nor You, including from the legal processes of any jurisdiction or authority.\r\n\r\nCreative Commons is not a party to its public licenses. Notwithstanding, Creative\r\nCommons may elect to apply one of its public licenses to material it publishes\r\nand in those instances will be considered the \"Licensor.\" The text of the\r\nCreative Commons public licenses is dedicated to the public domain under the\r\nCC0 Public Domain Dedication. Except for the limited purpose of indicating\r\nthat material is shared under a Creative Commons public license or as otherwise\r\npermitted by the Creative Commons policies published at creativecommons.org/policies,\r\nCreative Commons does not authorize the use of the trademark \"Creative Commons\"\r\nor any other trademark or logo of Creative Commons without its prior written\r\nconsent including, without limitation, in connection with any unauthorized\r\nmodifications to any of its public licenses or any other arrangements, understandings,\r\nor agreements concerning use of licensed material. For the avoidance of doubt,\r\nthis paragraph does not form part of the public licenses.\r\n\r\nCreative Commons may be contacted at creativecommons.org.\r\n"},{"author":"Keyang Xiang ","repo":{"type":"git","url":"https://github.com/Keyang/node-csvtojson.git"},"description":"A tool concentrating on converting csv data to JSON with customised parser supporting","name":"csvtojson","license":"MIT","version":"2.0.10","licensetext":"Copyright (C) 2013 Keyang Xiang\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"author":"Afshin Mehrabani ","repo":"https://github.com/grid-js/gridjs","description":"Advanced table plugin","name":"gridjs","license":"MIT","version":"3.3.0","licensetext":""},{"author":"Mozilla","repo":{"type":"git","url":"git://github.com/localForage/localForage.git"},"description":"Offline storage, improved.","name":"localforage","license":"Apache-2.0","version":"1.9.0","licensetext":" Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2014 Mozilla\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n"},{"author":"John-David Dalton (http://allyoucanleet.com/)","repo":"lodash/lodash","description":"The Lodash method `_.isEqual` exported as a module.","name":"lodash.isequal","license":"MIT","version":"4.5.0","licensetext":"Copyright JS Foundation and other contributors \n\nBased on Underscore.js, copyright Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors \n\nThis software consists of voluntary contributions made by many\nindividuals. For exact contribution history, see the revision history\navailable at https://github.com/lodash/lodash\n\nThe following license applies to all parts of this software except as\ndocumented below:\n\n====\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n====\n\nCopyright and related rights for sample code are waived via CC0. Sample\ncode is defined as all source code displayed within the prose of the\ndocumentation.\n\nCC0: http://creativecommons.org/publicdomain/zero/1.0/\n\n====\n\nFiles located in the node_modules and vendor directories are externally\nmaintained libraries used by this software which have their own\nlicenses; we recommend you read them, as their terms may differ from the\nterms above.\n"},{"author":"Christopher Jeffrey","repo":"git://github.com/markedjs/marked.git","description":"A markdown parser built for speed","name":"marked","license":"MIT","version":"2.0.1","licensetext":"# License information\n\n## Contribution License Agreement\n\nIf you contribute code to this project, you are implicitly allowing your code\nto be distributed under the MIT license. You are also implicitly verifying that\nall code is your original work. ``\n\n## Marked\n\nCopyright (c) 2018+, MarkedJS (https://github.com/markedjs/)\nCopyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n## Markdown\n\nCopyright © 2004, John Gruber\nhttp://daringfireball.net/\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n* Neither the name “Markdown” nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n\nThis software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.\n"},{"author":{"name":"Greg Larrenaga","url":"https://github.com/Duder-onomy"},"repo":"github:Duder-onomy/svelte-focus-trap","description":"A svelte directive that will trap and wrap focus within an element.","name":"svelte-focus-trap","license":"MIT","version":"1.0.1","licensetext":"The MIT License (MIT)\n\nCopyright (c) 2020\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"author":"Christian Kaisermann ","repo":"https://github.com/kaisermann/svelte-i18n","description":"Internationalization library for Svelte","name":"svelte-i18n","license":"MIT","version":"3.3.2","licensetext":"Copyright 2017 Christian Kaisermann \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"author":"rob-balfre","repo":"https://rob-balfre@github.com/rob-balfre/svelte-select.git","description":"A component for Svelte apps","name":"svelte-select","license":"LIL","version":"3.17.0","licensetext":"Copyright (c) 2019 Robert Balfre\n\nPermission is hereby granted by the authors of this software, to any person, to use the software for any purpose, free of charge, including the rights to run, read, copy, change, distribute and sell it, and including usage rights to any patents the authors may hold on it, subject to the following conditions:\n\nThis license, or a link to its text, must be included with all copies of the software and any derivative works.\n\nAny modification to the software submitted to the authors may be incorporated into the software under the terms of this license.\n\nThe software is provided \"as is\", without warranty of any kind, including but not limited to the warranties of title, fitness, merchantability and non-infringement. The authors have no obligation to provide support or updates for the software, and may not be held liable for any damages, claims or other liability arising from its use.\n"},{"repo":"https://github.com/tailwindlabs/tailwindcss.git","description":"A utility-first CSS framework for rapidly building custom user interfaces.","name":"tailwindcss","license":"MIT","version":"2.0.3","licensetext":"MIT License\n\nCopyright (c) Adam Wathan \nCopyright (c) Jonathan Reinink \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"author":"Alexey Schebelev","repo":{"type":"git","url":"git+https://github.com/AlexxNB/tinro.git"},"description":"tinro is a tiny declarative router for Svelte","name":"tinro","license":"MIT","version":"0.5.12","licensetext":"MIT License\n\nCopyright (c) 2020 Alexey Schebelev\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"author":"Varun A P","repo":{"type":"git","url":"git+https://github.com/apvarun/toastify-js.git"},"description":"Toastify is a lightweight, vanilla JS toast notification library.","name":"toastify-js","license":"MIT","version":"1.9.3","licensetext":"MIT License\n\nCopyright (c) 2018 apvarun\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"author":"Chris O'Hara ","repo":{"type":"git","url":"https://github.com/chriso/validator.js.git"},"description":"String validation and sanitization","name":"validator","license":"MIT","version":"13.5.2","licensetext":"Copyright (c) 2018 Chris O'Hara \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"author":"sheetjs","repo":{"type":"git","url":"git://github.com/SheetJS/sheetjs.git"},"description":"SheetJS Spreadsheet data parser and writer","name":"xlsx","license":"Apache-2.0","version":"0.16.9","licensetext":" Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright (C) 2012-present SheetJS LLC\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n"},{"author":"ODIT.Services","repo":{"type":"git","url":"https://git.odit.services/odit/license-exporter"},"description":"A simple license crawler for crediting open source work","name":"@odit/license-exporter","license":"MIT","version":"0.0.10","licensetext":"MIT License Copyright (c) 2020 ODIT.Services (info@odit.services)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished\nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice (including the next\nparagraph) shall be included in all copies or substantial portions of the\nSoftware.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\nOR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF\nOR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"repo":{"type":"git","url":"https://github.com/snowpackjs/snowpack.git","directory":"plugins/plugin-svelte"},"name":"@snowpack/plugin-svelte","license":"MIT","version":"3.5.2","licensetext":""},{"author":"Pete Cook (https://github.com/cookpete)","repo":{"type":"git","url":"https://github.com/CookPete/auto-changelog.git"},"description":"Command line tool for generating a changelog from git tags and commit history","name":"auto-changelog","license":"MIT","version":"2.2.1","licensetext":"The MIT License\n\nCopyright (c) 2017 Pete Cook https://cookpete.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"},{"author":"Andrey Sitnik ","repo":"postcss/autoprefixer","description":"Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website","name":"autoprefixer","license":"MIT","version":"10.2.4","licensetext":"The MIT License (MIT)\n\nCopyright 2013 Andrey Sitnik \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"author":"Kent C. Dodds (https://kentcdodds.com)","repo":{"type":"git","url":"https://github.com/kentcdodds/cross-env.git"},"description":"Run scripts that set and use environment variables across platforms","name":"cross-env","license":"MIT","version":"7.0.3","licensetext":"The MIT License (MIT)\nCopyright (c) 2017 Kent C. Dodds\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"author":"Andrey Sitnik ","repo":"postcss/postcss","description":"Tool for transforming styles with JS plugins","name":"postcss","license":"MIT","version":"8.2.6","licensetext":"The MIT License (MIT)\n\nCopyright 2013 Andrey Sitnik \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"author":"Michael Ciniawky ","repo":"postcss/postcss-load-config","description":"Autoload Config for PostCSS","name":"postcss-load-config","license":"MIT","version":"3.0.1","licensetext":"The MIT License (MIT)\n\nCopyright Michael Ciniawsky \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"author":{"email":"lars@webpro.nl","name":"Lars Kappert"},"repo":{"type":"git","url":"https://github.com/release-it/release-it.git"},"description":"Generic CLI tool to automate versioning and package publishing related tasks.","name":"release-it","license":"MIT","version":"14.4.1","licensetext":"MIT License\n\nCopyright (c) 2018 Lars Kappert\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"author":"Fred K. Schott ","repo":{"type":"git","url":"https://github.com/snowpackjs/snowpack.git"},"description":"The ESM-powered frontend build tool. Fast, lightweight, unbundled.","name":"snowpack","license":"MIT","version":"3.0.11","licensetext":"MIT License\n\nCopyright (c) 2019 Fred K. Schott\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"},{"author":"Rich Harris","repo":{"type":"git","url":"https://github.com/sveltejs/svelte.git"},"description":"Cybernetically enhanced web apps","name":"svelte","license":"MIT","version":"3.32.3","licensetext":"Copyright (c) 2016-21 [these people](https://github.com/sveltejs/svelte/graphs/contributors)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"author":"Christian Kaisermann ","repo":"https://github.com/sveltejs/svelte-preprocess","description":"A Svelte preprocessor wrapper with baked-in support for commonly used preprocessors","name":"svelte-preprocess","license":"MIT","version":"4.6.8","licensetext":"Copyright (c) 2016-20 [these people](https://github.com/sveltejs/svelte-preprocess/graphs/contributors)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"},{"author":"Google's Web DevRel Team","repo":"googlechrome/workbox","description":"workbox-cli is the command line interface for Workbox.","name":"workbox-cli","license":"MIT","version":"6.1.0","licensetext":"Copyright 2018 Google LLC\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"}] \ No newline at end of file From e4b80c9ab34d31ec31df55904eacfac2c8728b10 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Mar 2021 19:52:54 +0100 Subject: [PATCH 253/359] =?UTF-8?q?Translated=20missing=20german=20stuff?= =?UTF-8?q?=20=F0=9F=8C=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #99 --- src/locales/de.json | 663 +++++++++++++++++++++++--------------------- 1 file changed, 342 insertions(+), 321 deletions(-) diff --git a/src/locales/de.json b/src/locales/de.json index 2ce5a0b8..19d1f5da 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1,322 +1,343 @@ { - "404message": "Die gesuchte Seite wurde leider nicht gefunden.", - "404title": "Fehler 404", - "about": "Über", - "action": "Aktionen", - "active": "Aktiv", - "add-donation": "Sponsoring erstellen", - "add-donor": "Sponsor:in erstellen", - "add-user-group": "Neue Gruppe erstellen", - "add-your-first-contact": "Erstelle den ersten Kontakt", - "add-your-first-donor": "Erstelle die erste Sponsor:in", - "add-your-first-group": "Erstelle die erste Gruppe", - "add-your-first-organization": "Erstelle die erste Organisation", - "add-your-first-runner": "Erstelle die erste Läufer:in", - "add-your-first-team": "Erstelle das erste Team", - "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", - "add-your-first-user": "Erstelle die erste Benutzer:in", - "address": "Adresse", - "address-is-required": "Du musst eine Adresse angeben", - "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", - "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", - "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", - "amount-per-kilometer": "Betrag pro Kilometer", - "apartment-suite-etc": "Apartment, Wohnung, etc.", - "application_name": "Lauf für Kaya! - Admin", - "applying-changes": "Änderungen anwenden", - "attention": "Achtung!", - "author": "Autor:in", - "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", - "by": "von", - "cancel": "Abbrechen", - "cancel-delete": "Löschen abbrechen", - "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", - "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", - "cancel-keep-team": "Abbrechen, Team behalten", - "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", - "city": "Stadt", - "close": "Schließen", - "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", - "confirm": "Bestätigen", - "confirm-delete": "Löschung Bestätigen", - "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", - "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", - "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", - "confirm-deletion": "Löschung Bestätigen", - "contact": "Kontakt", - "contact-deleted": "Kontakt gelöscht", - "contact-information": "Kontaktinformation", - "contact-is-being-updated": "Kontakt wird aktualisiert ...", - "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", - "contacts": "Kontakte", - "contacts-are-being-loaded": "Kontakte werden geladen ...", - "count_organizations": "Organisationen (Anzahl)", - "count_teams": "Teams (Anzahl)", - "create": "Erstellen", - "create-a-new": "Erstelle eine neue", - "create-a-new-contact": "Kontakt erstellen", - "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", - "create-a-new-donor": "Neue Sponsor:in erstellen", - "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", - "create-a-new-organization": "Neue Organisation anlegen", - "create-a-new-runner": "Neue Läufer:in erstellen", - "create-a-new-team": "Erstelle ein neues Team", - "create-a-new-track": "Neuen Track erstellen", - "create-a-new-user": "Neue Benutzer:in anlegen", - "create-a-new-user-group": "Erstelle eine neue Gruppe", - "create-organization": "Organisation erstellen", - "create-team": "Team erstellen", - "create-track": "Track erstellen", - "create-user": "Benutzer anlegen", - "credits": "Credits", - "csv_import__class": "Klasse", - "csv_import__firstname": "Vorname", - "csv_import__lastname": "Nachname", - "csv_import__middlename": "Mittelname", - "csv_import__team": "Team", - "dashboard-greeting": "Moin", - "dashboard-title": "Dashboard", - "datatable": { - "search": "🔍 Suche ...", - "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", - "loading": "Wird geladen...", - "next": "Nächste", - "of": "von", - "previous": "Vorherige", - "to": "bis", - "showing": "Zeige", - "no_matching_records_found": "Keine passenden Einträge gefunden", - "page": "Seite", - "records": "Einträge", - "sort_column_ascending": "Spalte aufsteigend sortieren", - "sort_column_descending": "Spalte absteigend sortieren" - }, - "delete": "Löschen", - "delete-contact": "Kontakt löschen", - "delete-donation": "Sponsporing löschen", - "delete-donor": "Sponsor:in löschen", - "delete-group": "Gruppe löschen", - "delete-organization": "Organisation löschen", - "delete-runner": "Läufer:in löschen", - "delete-team": "Team Löschen", - "delete-user": "Benutzer:in löschen", - "dependency_name": "Name", - "description": "Beschreibung", - "description-optional": "Beschreibung (optional)", - "deselect-all": "Alle abwählen", - "details": "Details", - "distance": "Distanz", - "distance-donation": "Sponsoring", - "distance-in-km": "Distanz (in KM)", - "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", - "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", - "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", - "donation-amount": "Sponsoringbetrag", - "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", - "donations": "Sponsorings", - "donor": "Sponsor:in", - "donor-added": "Sponsor:in hinzugefügt", - "donor-deleted": "Sponsor:in gelöscht", - "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", - "donor-is-being-added": "Sponsor:in wird hinzugefügt...", - "donor-is-being-updated": "Sponsor:in wird aktualisiert", - "donors": "Sponsor:innen", - "donors-are-being-loaded": "Sponsor:innen werden geladen", - "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", - "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", - "e-mail-adress": "E-Mail-Adresse", - "edit": "Bearbeiten", - "edit-permissions": "Berechtigungen bearbeiten", - "email_address_or_username": "E-Mail-Adresse/ Benutzername", - "english": "Englisch", - "error_on_login": "😢Fehler beim Login", - "erteilte": "Direkt erteilte", - "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", - "faq": "FAQ", - "filter-by-organization-team": "Filtern nach Organisation / Team", - "first-name": "Vorname", - "first-name-is-required": "Vorname muss angegeben werden", - "fixed-donation": "Festbetragsspende", - "forgot_password": "Passwort vergessen?", - "geerbte": "geerbte", - "general-stats": "Allgemeine Statistiken", - "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", - "generate-sponsoring-contract": "Sponsoringvertrag generieren", - "generate-sponsoring-contracts": "Sponsoringverträge generieren", - "generating-pdf": "Pdf wird generiert...", - "generating-pdfs": "PDFs werden generiert...", - "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", - "german": "Deutsch", - "go-to-login": "Zum Login", - "goback": "Zur Startseite", - "granted": "Gewährt", - "group": "Gruppe", - "group-added": "Gruppe hinzugefügt", - "group-is-being-added": "Gruppe wird erstellt", - "group-name-is-required": "Der Gruppenname muss angegeben werden.", - "group-updated": "Gruppe aktualisiert", - "groups": "Gruppen", - "home": "Start", - "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", - "import-finished": "Import abgeschlossen", - "import-runners": "Läufer:innen importieren", - "import__target-organization": "Ziel Organisation", - "imprint": "Impressum ", - "imprint-loading": "Impressum lädt...", - "inactive": "Inaktiv", - "installed-version": "Installierte Version", - "internal-error": "Interner Fehler", - "invalid-mail-reset": "Das ist keine gültige E-Mail", - "laeufer-hinzufuegen": "Läufer:in hinzufügen", - "laeufer-importieren": "Läufer:innen importieren", - "last-name": "Nachname", - "last-name-is-required": "Nachname muss angegeben werden", - "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", - "license": "Lizenz", - "licenses-are-being-loaded": "Lizenzen werden geladen...", - "loading-contact-details": "Kontaktdaten werden geladen ...", - "loading-donation-details": "Lade Sponsoringdetails", - "loading-donor-details": "Lade Details", - "loading-runners": "Läufer:innen werden geladen...", - "log_in": "Anmelden", - "log_in_to_your_account": "Bitte melde dich an", - "login_is_checked": "Login wird überprüft", - "logout": "Abmelden", - "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", - "manage-admin-users": "Nutzer verwalten", - "middle-name": "Mittelname", - "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", - "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", - "name": "Name", - "name-is-required": "Der Gruppenname muss angegeben werden", - "new-password": "Neues Passwort", - "no-contact-found": "Keine Kontakte gefunden", - "no-contact-selected": "Kein Kontakt ausgewählt", - "no-contact-specified": "Kein Kontakt angegeben", - "no-donors-found": "Keine Spender:innen gefunden", - "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", - "no-organization-or-team-found": "Keine Organisationen oder Teams gefunden", - "no-organization-specified": "Keine Organisation angegeben", - "no-organizations-found": "Keine Organisationen gefunden", - "no-runners-found": "Keine Läufer:innen gefunden", - "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", - "organization": "Organisation", - "organization-added": "Organisation hinzugefügt", - "organization-deleted": "Organisation gelöscht", - "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", - "organization-is-being-added": "Organisation wird hinzugefügt ...", - "organization-name-is-required": "Der Name muss angegeben werden", - "organizations": "Organisationen", - "organizations-are-being-loaded": "Organisationen werden geladen ...", - "orgs": "Organisationen", - "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", - "password": "Passwort", - "password-is-required": "Passwort muss angegeben werden", - "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", - "password-reset-in-progress": "Passwort wird zurückgesetzt...", - "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", - "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", - "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", - "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", - "pdfs-successfully-generated": "Alle PDFs wurden generiert!", - "per-kilometer": "pro Kilometer", - "permissions": "Berechtigungen", - "permissions-updated": "Berechtigungen aktualisiert!", - "phone": "Telefon", - "please-provide-a-password": "Bitte gebe ein Passwort an...", - "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", - "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", - "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", - "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", - "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", - "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", - "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", - "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", - "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", - "privacy": "Datenschutz", - "privacy-loading": "Datenschutzerklärung lädt...", - "profile-picture": "Profilbild", - "read-license": "Lizenz-Text lesen", - "receipt-needed": "Spendenquittung benötigt", - "repo_link": "Link", - "request-a-new-reset-mail": "Neue Reset-Mail anfordern", - "reset-my-password": "Passwort zurücksetzen", - "reset-password": "Passwort zurücksetzen", - "runner": "Läufer:in", - "runner-added": "Läufer:in hinzugefügt", - "runner-import": "Läufer:innen Import", - "runner-is-being-added": "Läufer:in wird hinzugefügt...", - "runner-updated": "Läufer:in aktualisiert!", - "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", - "runners": "Läufer", - "runners-are-being-imported": "Läufer:innen werden importiert ...", - "runners-are-being-loaded": "Läufer:innen werden geladen ...", - "save": "Speichern", - "save-changes": "Änderungen speichern", - "search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)", - "search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)", - "search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)", - "search-for-permission": "Berechtigungen durchsuchen", - "search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)", - "select-all": "Alle auswählen", - "select-language": "Sprache auswählen", - "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", - "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", - "settings": "Einstellungen", - "something-about-the-group": "Infos zur Gruppe", - "stats-are-being-loaded": "Die Statistiken werden geladen...", - "status": "Status", - "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", - "team": "Team", - "team-detail-is-being-loaded": "Team wird geladen...", - "team-name": "Teamname", - "team-name-is-required": "Teamname ist erforderlich", - "teams": "Teams", - "teams-are-being-loaded": "Teams werden geladen ...", - "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", - "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", - "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", - "there-are-no-groups-yet": "Es gibt noch keine Gruppen", - "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", - "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", - "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", - "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", - "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", - "total-distance": "gelaufene Strecke", - "total-donation-amount": "Gesamtbetrag", - "total-donations": "Spendensumme", - "total-scans": "gesamte Scans", - "track-added": "Track hinzugefügt", - "track-data-is-being-loaded": "Trackdaten werden geladen", - "track-is-being-added": "Track wird hinzugefügt...", - "track-length-in-m": "Tracklänge (in Metern)", - "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", - "track-name": "Trackname", - "track-name-must-not-be-empty": "Der Name muss angegeben werden", - "tracks": "Tracks", - "updated-contact": "Kontakt aktualisiert!", - "updated-donor": "Sponsor:in wurde aktualisiert", - "updated-organization": "Organisation wurde aktualisiert", - "updateing-group": "Gruppe wird aktualisiert...", - "updating-organization": "Organisation wird aktualisiert", - "updating-permissions": "Berechtigungen werden aktualisiert...", - "updating-runner": "Läufer:in wird aktualisiert.", - "updating-user": "Benutzer:in wird aktualisiert...", - "user-added": "Benutzer hinzugefügt", - "user-groups": "Benutzergruppen", - "user-is-being-added": "Benutzer wird hinzugefügt ...", - "user-updated": "Benutzer:in wurde aktualisiert", - "username": "Benutzername", - "users": "Benutzer", - "valid-city-is-required": "Du musst eine Stadt angeben", - "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", - "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", - "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", - "verfuegbare": "Verfügbar", - "welcome_wavinghand": "Willkommen 👋", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", - "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", - "zip-postal-code": "Postleitzahl" -} \ No newline at end of file + "404message": "Die gesuchte Seite wurde leider nicht gefunden.", + "404title": "Fehler 404", + "about": "Über", + "action": "Aktionen", + "active": "Aktiv", + "add-donation": "Sponsoring erstellen", + "add-donor": "Sponsor:in erstellen", + "add-user-group": "Neue Gruppe erstellen", + "add-your-first-contact": "Erstelle den ersten Kontakt", + "add-your-first-donor": "Erstelle die erste Sponsor:in", + "add-your-first-group": "Erstelle die erste Gruppe", + "add-your-first-organization": "Erstelle die erste Organisation", + "add-your-first-runner": "Erstelle die erste Läufer:in", + "add-your-first-team": "Erstelle das erste Team", + "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", + "add-your-first-user": "Erstelle die erste Benutzer:in", + "address": "Adresse", + "address-is-required": "Du musst eine Adresse angeben", + "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", + "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", + "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", + "amount-per-kilometer": "Betrag pro Kilometer", + "apartment-suite-etc": "Apartment, Wohnung, etc.", + "application_name": "Lauf für Kaya! - Admin", + "applying-changes": "Änderungen anwenden", + "attention": "Achtung!", + "author": "Autor:in", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", + "by": "von", + "cancel": "Abbrechen", + "cancel-delete": "Löschen abbrechen", + "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", + "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", + "cancel-keep-team": "Abbrechen, Team behalten", + "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", + "city": "Stadt", + "close": "Schließen", + "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", + "confirm": "Bestätigen", + "confirm-delete": "Löschung Bestätigen", + "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", + "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", + "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", + "confirm-deletion": "Löschung Bestätigen", + "contact": "Kontakt", + "contact-deleted": "Kontakt gelöscht", + "contact-information": "Kontaktinformation", + "contact-is-being-updated": "Kontakt wird aktualisiert ...", + "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", + "contacts": "Kontakte", + "contacts-are-being-loaded": "Kontakte werden geladen ...", + "count_organizations": "Organisationen (Anzahl)", + "count_teams": "Teams (Anzahl)", + "create": "Erstellen", + "create-a-new": "Erstelle eine neue", + "create-a-new-contact": "Kontakt erstellen", + "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", + "create-a-new-donor": "Neue Sponsor:in erstellen", + "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", + "create-a-new-organization": "Neue Organisation anlegen", + "create-a-new-runner": "Neue Läufer:in erstellen", + "create-a-new-team": "Erstelle ein neues Team", + "create-a-new-track": "Neuen Track erstellen", + "create-a-new-user": "Neue Benutzer:in anlegen", + "create-a-new-user-group": "Erstelle eine neue Gruppe", + "create-organization": "Organisation erstellen", + "create-team": "Team erstellen", + "create-track": "Track erstellen", + "create-user": "Benutzer anlegen", + "credits": "Credits", + "csv_import__class": "Klasse", + "csv_import__firstname": "Vorname", + "csv_import__lastname": "Nachname", + "csv_import__middlename": "Mittelname", + "csv_import__team": "Team", + "dashboard-greeting": "Moin", + "dashboard-title": "Dashboard", + "datatable": { + "search": "🔍 Suche ...", + "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", + "loading": "Wird geladen...", + "next": "Nächste", + "of": "von", + "previous": "Vorherige", + "to": "bis", + "showing": "Zeige", + "no_matching_records_found": "Keine passenden Einträge gefunden", + "page": "Seite", + "records": "Einträge", + "sort_column_ascending": "Spalte aufsteigend sortieren", + "sort_column_descending": "Spalte absteigend sortieren" + }, + "delete": "Löschen", + "delete-contact": "Kontakt löschen", + "delete-donation": "Sponsporing löschen", + "delete-donor": "Sponsor:in löschen", + "delete-group": "Gruppe löschen", + "delete-organization": "Organisation löschen", + "delete-runner": "Läufer:in löschen", + "delete-team": "Team Löschen", + "delete-user": "Benutzer:in löschen", + "dependency_name": "Name", + "description": "Beschreibung", + "description-optional": "Beschreibung (optional)", + "deselect-all": "Alle abwählen", + "details": "Details", + "distance": "Distanz", + "distance-donation": "Sponsoring", + "distance-in-km": "Distanz (in KM)", + "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", + "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", + "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", + "donation-amount": "Sponsoringbetrag", + "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", + "donations": "Sponsorings", + "donor": "Sponsor:in", + "donor-added": "Sponsor:in hinzugefügt", + "donor-deleted": "Sponsor:in gelöscht", + "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", + "donor-is-being-added": "Sponsor:in wird hinzugefügt...", + "donor-is-being-updated": "Sponsor:in wird aktualisiert", + "donors": "Sponsor:innen", + "donors-are-being-loaded": "Sponsor:innen werden geladen", + "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", + "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", + "e-mail-adress": "E-Mail-Adresse", + "edit": "Bearbeiten", + "edit-permissions": "Berechtigungen bearbeiten", + "email_address_or_username": "E-Mail-Adresse/ Benutzername", + "english": "Englisch", + "error_on_login": "😢Fehler beim Login", + "erteilte": "Direkt erteilte", + "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", + "faq": "FAQ", + "filter-by-organization-team": "Filtern nach Organisation / Team", + "first-name": "Vorname", + "first-name-is-required": "Vorname muss angegeben werden", + "fixed-donation": "Festbetragsspende", + "forgot_password": "Passwort vergessen?", + "geerbte": "geerbte", + "general-stats": "Allgemeine Statistiken", + "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", + "generate-sponsoring-contract": "Sponsoringvertrag generieren", + "generate-sponsoring-contracts": "Sponsoringverträge generieren", + "generating-pdf": "Pdf wird generiert...", + "generating-pdfs": "PDFs werden generiert...", + "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", + "german": "Deutsch", + "go-to-login": "Zum Login", + "goback": "Zur Startseite", + "granted": "Gewährt", + "group": "Gruppe", + "group-added": "Gruppe hinzugefügt", + "group-is-being-added": "Gruppe wird erstellt", + "group-name-is-required": "Der Gruppenname muss angegeben werden.", + "group-updated": "Gruppe aktualisiert", + "groups": "Gruppen", + "home": "Start", + "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", + "import-finished": "Import abgeschlossen", + "import-runners": "Läufer:innen importieren", + "import__target-organization": "Ziel Organisation", + "imprint": "Impressum ", + "imprint-loading": "Impressum lädt...", + "inactive": "Inaktiv", + "installed-version": "Installierte Version", + "internal-error": "Interner Fehler", + "invalid-mail-reset": "Das ist keine gültige E-Mail", + "laeufer-hinzufuegen": "Läufer:in hinzufügen", + "laeufer-importieren": "Läufer:innen importieren", + "last-name": "Nachname", + "last-name-is-required": "Nachname muss angegeben werden", + "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", + "license": "Lizenz", + "licenses-are-being-loaded": "Lizenzen werden geladen...", + "loading-contact-details": "Kontaktdaten werden geladen ...", + "loading-donation-details": "Lade Sponsoringdetails", + "loading-donor-details": "Lade Details", + "loading-runners": "Läufer:innen werden geladen...", + "log_in": "Anmelden", + "log_in_to_your_account": "Bitte melde dich an", + "login_is_checked": "Login wird überprüft", + "logout": "Abmelden", + "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", + "manage-admin-users": "Nutzer verwalten", + "middle-name": "Mittelname", + "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", + "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", + "name": "Name", + "name-is-required": "Der Gruppenname muss angegeben werden", + "new-password": "Neues Passwort", + "no-contact-found": "Keine Kontakte gefunden", + "no-contact-selected": "Kein Kontakt ausgewählt", + "no-contact-specified": "Kein Kontakt angegeben", + "no-donors-found": "Keine Spender:innen gefunden", + "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", + "no-organization-or-team-found": "Keine Organisationen oder Teams gefunden", + "no-organization-specified": "Keine Organisation angegeben", + "no-organizations-found": "Keine Organisationen gefunden", + "no-runners-found": "Keine Läufer:innen gefunden", + "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", + "organization": "Organisation", + "organization-added": "Organisation hinzugefügt", + "organization-deleted": "Organisation gelöscht", + "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", + "organization-is-being-added": "Organisation wird hinzugefügt ...", + "organization-name-is-required": "Der Name muss angegeben werden", + "organizations": "Organisationen", + "organizations-are-being-loaded": "Organisationen werden geladen ...", + "orgs": "Organisationen", + "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", + "password": "Passwort", + "password-is-required": "Passwort muss angegeben werden", + "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", + "password-reset-in-progress": "Passwort wird zurückgesetzt...", + "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", + "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", + "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", + "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", + "pdfs-successfully-generated": "Alle PDFs wurden generiert!", + "per-kilometer": "pro Kilometer", + "permissions": "Berechtigungen", + "permissions-updated": "Berechtigungen aktualisiert!", + "phone": "Telefon", + "please-provide-a-password": "Bitte gebe ein Passwort an...", + "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", + "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", + "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", + "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", + "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", + "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", + "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", + "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", + "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", + "privacy": "Datenschutz", + "privacy-loading": "Datenschutzerklärung lädt...", + "profile-picture": "Profilbild", + "read-license": "Lizenz-Text lesen", + "receipt-needed": "Spendenquittung benötigt", + "repo_link": "Link", + "request-a-new-reset-mail": "Neue Reset-Mail anfordern", + "reset-my-password": "Passwort zurücksetzen", + "reset-password": "Passwort zurücksetzen", + "runner": "Läufer:in", + "runner-added": "Läufer:in hinzugefügt", + "runner-import": "Läufer:innen Import", + "runner-is-being-added": "Läufer:in wird hinzugefügt...", + "runner-updated": "Läufer:in aktualisiert!", + "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", + "runners": "Läufer", + "runners-are-being-imported": "Läufer:innen werden importiert ...", + "runners-are-being-loaded": "Läufer:innen werden geladen ...", + "save": "Speichern", + "save-changes": "Änderungen speichern", + "search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)", + "search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)", + "search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)", + "search-for-permission": "Berechtigungen durchsuchen", + "search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)", + "select-all": "Alle auswählen", + "select-language": "Sprache auswählen", + "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", + "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", + "settings": "Einstellungen", + "something-about-the-group": "Infos zur Gruppe", + "stats-are-being-loaded": "Die Statistiken werden geladen...", + "status": "Status", + "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", + "team": "Team", + "team-detail-is-being-loaded": "Team wird geladen...", + "team-name": "Teamname", + "team-name-is-required": "Teamname ist erforderlich", + "teams": "Teams", + "teams-are-being-loaded": "Teams werden geladen ...", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", + "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", + "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", + "there-are-no-groups-yet": "Es gibt noch keine Gruppen", + "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", + "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", + "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", + "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", + "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", + "total-distance": "gelaufene Strecke", + "total-donation-amount": "Gesamtbetrag", + "total-donations": "Spendensumme", + "total-scans": "gesamte Scans", + "track-added": "Track hinzugefügt", + "track-data-is-being-loaded": "Trackdaten werden geladen", + "track-is-being-added": "Track wird hinzugefügt...", + "track-length-in-m": "Tracklänge (in Metern)", + "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", + "track-name": "Trackname", + "track-name-must-not-be-empty": "Der Name muss angegeben werden", + "tracks": "Tracks", + "updated-contact": "Kontakt aktualisiert!", + "updated-donor": "Sponsor:in wurde aktualisiert", + "updated-organization": "Organisation wurde aktualisiert", + "updateing-group": "Gruppe wird aktualisiert...", + "updating-organization": "Organisation wird aktualisiert", + "updating-permissions": "Berechtigungen werden aktualisiert...", + "updating-runner": "Läufer:in wird aktualisiert.", + "updating-user": "Benutzer:in wird aktualisiert...", + "user-added": "Benutzer hinzugefügt", + "user-groups": "Benutzergruppen", + "user-is-being-added": "Benutzer wird hinzugefügt ...", + "user-updated": "Benutzer:in wurde aktualisiert", + "username": "Benutzername", + "users": "Benutzer", + "valid-city-is-required": "Du musst eine Stadt angeben", + "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", + "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", + "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", + "verfuegbare": "Verfügbar", + "welcome_wavinghand": "Willkommen 👋", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", + "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", + "zip-postal-code": "Postleitzahl", + "add-scan": "Scan erstellen", + "add-your-fist-scan": "Füge deinene ersten Scan hinzu", + "adding-scan": "Scan wird hinzugefügt", + "create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)", + "delete-scan": "Scan löschen", + "deleted-scan": "Scan wurde gelöscht", + "distance-track": "Distanz (+Track)", + "first-scan-of-the-day": "Erster Scan des Tages", + "invalid": "Ungültig", + "laptime": "Rundenzeit", + "please-provide-the-nessecary-information-to-create-a-new-scan": "Bitte gebe alle notwendigen Informationen an, um einen neuen Scan zu erstellen.", + "scan-added": "Scan hinzugefügt", + "scan-is-being-updated": "Scan wird aktualisiert", + "scan-with-fixed-distance": "Scan mit Festdistanz", + "scans": "Scans", + "scans-are-being-loaded": "Scans werden geladen", + "the-scans-distance-must-be-greater-than-0m": "Die Distanz muss größer als 0m sein.", + "there-are-no-scans-yet": "Es gibt noch keine scans", + "track": "Track", + "updated-scan": "Scan wurde aktualisiert", + "valid": "Gültig" +} From 6109996adeec808847a72691a9cc3f174285612e Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Mar 2021 20:04:54 +0100 Subject: [PATCH 254/359] Added missing language keys ref #99 --- src/components/scans/AddScanModal.svelte | 2 +- src/locales/en.json | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/scans/AddScanModal.svelte b/src/components/scans/AddScanModal.svelte index 58b45df7..bebf05c2 100644 --- a/src/components/scans/AddScanModal.svelte +++ b/src/components/scans/AddScanModal.svelte @@ -144,7 +144,7 @@ + {$_('distance')}
    Date: Thu, 18 Mar 2021 20:07:06 +0100 Subject: [PATCH 255/359] Added german translations for the new keys ref #99 --- src/locales/de.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/locales/de.json b/src/locales/de.json index 19d1f5da..f5d074d9 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -339,5 +339,15 @@ "there-are-no-scans-yet": "Es gibt noch keine scans", "track": "Track", "updated-scan": "Scan wurde aktualisiert", - "valid": "Gültig" + "valid": "Gültig", + "create-a-new-scanstation": "Neue Station erstellen", + "delete-station": "Station löschen", + "enabled": "aktiviert", + "groups-are-being-loaded": "Gruppen werden geladen", + "loading-group-detail": "Lade Gruppendetails...", + "loading-station-details": "Lade Scanstation-Details ...", + "scanstation": "Scanner Station", + "scanstations": "Scanner Stationen", + "scanstations-are-being-loaded": "Scannerstationen werden geladen...", + "this-scanstation-is": "Diese Station ist" } From 5f6ee33e2bcabc007bba340ef51bc28f707aa58d Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Mar 2021 20:07:35 +0100 Subject: [PATCH 256/359] =?UTF-8?q?Sorted=20translations=20=F0=9F=8C=8E?= =?UTF-8?q?=F0=9F=8C=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #99 --- src/locales/de.json | 704 ++++++++++++++++++++++---------------------- src/locales/en.json | 22 +- 2 files changed, 363 insertions(+), 363 deletions(-) diff --git a/src/locales/de.json b/src/locales/de.json index f5d074d9..6f81c3a3 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1,353 +1,353 @@ { - "404message": "Die gesuchte Seite wurde leider nicht gefunden.", - "404title": "Fehler 404", - "about": "Über", - "action": "Aktionen", - "active": "Aktiv", - "add-donation": "Sponsoring erstellen", - "add-donor": "Sponsor:in erstellen", - "add-user-group": "Neue Gruppe erstellen", - "add-your-first-contact": "Erstelle den ersten Kontakt", - "add-your-first-donor": "Erstelle die erste Sponsor:in", - "add-your-first-group": "Erstelle die erste Gruppe", - "add-your-first-organization": "Erstelle die erste Organisation", - "add-your-first-runner": "Erstelle die erste Läufer:in", - "add-your-first-team": "Erstelle das erste Team", - "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", - "add-your-first-user": "Erstelle die erste Benutzer:in", - "address": "Adresse", - "address-is-required": "Du musst eine Adresse angeben", - "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", - "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", - "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", - "amount-per-kilometer": "Betrag pro Kilometer", - "apartment-suite-etc": "Apartment, Wohnung, etc.", - "application_name": "Lauf für Kaya! - Admin", - "applying-changes": "Änderungen anwenden", - "attention": "Achtung!", - "author": "Autor:in", - "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", - "by": "von", - "cancel": "Abbrechen", - "cancel-delete": "Löschen abbrechen", - "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", - "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", - "cancel-keep-team": "Abbrechen, Team behalten", - "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", - "city": "Stadt", - "close": "Schließen", - "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", - "confirm": "Bestätigen", - "confirm-delete": "Löschung Bestätigen", - "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", - "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", - "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", - "confirm-deletion": "Löschung Bestätigen", - "contact": "Kontakt", - "contact-deleted": "Kontakt gelöscht", - "contact-information": "Kontaktinformation", - "contact-is-being-updated": "Kontakt wird aktualisiert ...", - "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", - "contacts": "Kontakte", - "contacts-are-being-loaded": "Kontakte werden geladen ...", - "count_organizations": "Organisationen (Anzahl)", - "count_teams": "Teams (Anzahl)", - "create": "Erstellen", - "create-a-new": "Erstelle eine neue", - "create-a-new-contact": "Kontakt erstellen", - "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", - "create-a-new-donor": "Neue Sponsor:in erstellen", - "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", - "create-a-new-organization": "Neue Organisation anlegen", - "create-a-new-runner": "Neue Läufer:in erstellen", - "create-a-new-team": "Erstelle ein neues Team", - "create-a-new-track": "Neuen Track erstellen", - "create-a-new-user": "Neue Benutzer:in anlegen", - "create-a-new-user-group": "Erstelle eine neue Gruppe", - "create-organization": "Organisation erstellen", - "create-team": "Team erstellen", - "create-track": "Track erstellen", - "create-user": "Benutzer anlegen", - "credits": "Credits", - "csv_import__class": "Klasse", - "csv_import__firstname": "Vorname", - "csv_import__lastname": "Nachname", - "csv_import__middlename": "Mittelname", - "csv_import__team": "Team", - "dashboard-greeting": "Moin", - "dashboard-title": "Dashboard", - "datatable": { - "search": "🔍 Suche ...", - "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", - "loading": "Wird geladen...", - "next": "Nächste", - "of": "von", - "previous": "Vorherige", - "to": "bis", - "showing": "Zeige", - "no_matching_records_found": "Keine passenden Einträge gefunden", - "page": "Seite", - "records": "Einträge", - "sort_column_ascending": "Spalte aufsteigend sortieren", - "sort_column_descending": "Spalte absteigend sortieren" - }, - "delete": "Löschen", - "delete-contact": "Kontakt löschen", - "delete-donation": "Sponsporing löschen", - "delete-donor": "Sponsor:in löschen", - "delete-group": "Gruppe löschen", - "delete-organization": "Organisation löschen", - "delete-runner": "Läufer:in löschen", - "delete-team": "Team Löschen", - "delete-user": "Benutzer:in löschen", - "dependency_name": "Name", - "description": "Beschreibung", - "description-optional": "Beschreibung (optional)", - "deselect-all": "Alle abwählen", - "details": "Details", - "distance": "Distanz", - "distance-donation": "Sponsoring", - "distance-in-km": "Distanz (in KM)", - "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", - "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", - "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", - "donation-amount": "Sponsoringbetrag", - "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", - "donations": "Sponsorings", - "donor": "Sponsor:in", - "donor-added": "Sponsor:in hinzugefügt", - "donor-deleted": "Sponsor:in gelöscht", - "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", - "donor-is-being-added": "Sponsor:in wird hinzugefügt...", - "donor-is-being-updated": "Sponsor:in wird aktualisiert", - "donors": "Sponsor:innen", - "donors-are-being-loaded": "Sponsor:innen werden geladen", - "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", - "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", - "e-mail-adress": "E-Mail-Adresse", - "edit": "Bearbeiten", - "edit-permissions": "Berechtigungen bearbeiten", - "email_address_or_username": "E-Mail-Adresse/ Benutzername", - "english": "Englisch", - "error_on_login": "😢Fehler beim Login", - "erteilte": "Direkt erteilte", - "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", - "faq": "FAQ", - "filter-by-organization-team": "Filtern nach Organisation / Team", - "first-name": "Vorname", - "first-name-is-required": "Vorname muss angegeben werden", - "fixed-donation": "Festbetragsspende", - "forgot_password": "Passwort vergessen?", - "geerbte": "geerbte", - "general-stats": "Allgemeine Statistiken", - "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", - "generate-sponsoring-contract": "Sponsoringvertrag generieren", - "generate-sponsoring-contracts": "Sponsoringverträge generieren", - "generating-pdf": "Pdf wird generiert...", - "generating-pdfs": "PDFs werden generiert...", - "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", - "german": "Deutsch", - "go-to-login": "Zum Login", - "goback": "Zur Startseite", - "granted": "Gewährt", - "group": "Gruppe", - "group-added": "Gruppe hinzugefügt", - "group-is-being-added": "Gruppe wird erstellt", - "group-name-is-required": "Der Gruppenname muss angegeben werden.", - "group-updated": "Gruppe aktualisiert", - "groups": "Gruppen", - "home": "Start", - "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", - "import-finished": "Import abgeschlossen", - "import-runners": "Läufer:innen importieren", - "import__target-organization": "Ziel Organisation", - "imprint": "Impressum ", - "imprint-loading": "Impressum lädt...", - "inactive": "Inaktiv", - "installed-version": "Installierte Version", - "internal-error": "Interner Fehler", - "invalid-mail-reset": "Das ist keine gültige E-Mail", - "laeufer-hinzufuegen": "Läufer:in hinzufügen", - "laeufer-importieren": "Läufer:innen importieren", - "last-name": "Nachname", - "last-name-is-required": "Nachname muss angegeben werden", - "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", - "license": "Lizenz", - "licenses-are-being-loaded": "Lizenzen werden geladen...", - "loading-contact-details": "Kontaktdaten werden geladen ...", - "loading-donation-details": "Lade Sponsoringdetails", - "loading-donor-details": "Lade Details", - "loading-runners": "Läufer:innen werden geladen...", - "log_in": "Anmelden", - "log_in_to_your_account": "Bitte melde dich an", - "login_is_checked": "Login wird überprüft", - "logout": "Abmelden", - "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", - "manage-admin-users": "Nutzer verwalten", - "middle-name": "Mittelname", - "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", - "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", - "name": "Name", - "name-is-required": "Der Gruppenname muss angegeben werden", - "new-password": "Neues Passwort", - "no-contact-found": "Keine Kontakte gefunden", - "no-contact-selected": "Kein Kontakt ausgewählt", - "no-contact-specified": "Kein Kontakt angegeben", - "no-donors-found": "Keine Spender:innen gefunden", - "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", - "no-organization-or-team-found": "Keine Organisationen oder Teams gefunden", - "no-organization-specified": "Keine Organisation angegeben", - "no-organizations-found": "Keine Organisationen gefunden", - "no-runners-found": "Keine Läufer:innen gefunden", - "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", - "organization": "Organisation", - "organization-added": "Organisation hinzugefügt", - "organization-deleted": "Organisation gelöscht", - "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", - "organization-is-being-added": "Organisation wird hinzugefügt ...", - "organization-name-is-required": "Der Name muss angegeben werden", - "organizations": "Organisationen", - "organizations-are-being-loaded": "Organisationen werden geladen ...", - "orgs": "Organisationen", - "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", - "password": "Passwort", - "password-is-required": "Passwort muss angegeben werden", - "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", - "password-reset-in-progress": "Passwort wird zurückgesetzt...", - "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", - "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", - "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", - "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", - "pdfs-successfully-generated": "Alle PDFs wurden generiert!", - "per-kilometer": "pro Kilometer", - "permissions": "Berechtigungen", - "permissions-updated": "Berechtigungen aktualisiert!", - "phone": "Telefon", - "please-provide-a-password": "Bitte gebe ein Passwort an...", - "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", - "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", - "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", - "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", - "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", - "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", - "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", - "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", - "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", - "privacy": "Datenschutz", - "privacy-loading": "Datenschutzerklärung lädt...", - "profile-picture": "Profilbild", - "read-license": "Lizenz-Text lesen", - "receipt-needed": "Spendenquittung benötigt", - "repo_link": "Link", - "request-a-new-reset-mail": "Neue Reset-Mail anfordern", - "reset-my-password": "Passwort zurücksetzen", - "reset-password": "Passwort zurücksetzen", - "runner": "Läufer:in", - "runner-added": "Läufer:in hinzugefügt", - "runner-import": "Läufer:innen Import", - "runner-is-being-added": "Läufer:in wird hinzugefügt...", - "runner-updated": "Läufer:in aktualisiert!", - "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", - "runners": "Läufer", - "runners-are-being-imported": "Läufer:innen werden importiert ...", - "runners-are-being-loaded": "Läufer:innen werden geladen ...", - "save": "Speichern", - "save-changes": "Änderungen speichern", - "search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)", - "search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)", - "search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)", - "search-for-permission": "Berechtigungen durchsuchen", - "search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)", - "select-all": "Alle auswählen", - "select-language": "Sprache auswählen", - "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", - "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", - "settings": "Einstellungen", - "something-about-the-group": "Infos zur Gruppe", - "stats-are-being-loaded": "Die Statistiken werden geladen...", - "status": "Status", - "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", - "team": "Team", - "team-detail-is-being-loaded": "Team wird geladen...", - "team-name": "Teamname", - "team-name-is-required": "Teamname ist erforderlich", - "teams": "Teams", - "teams-are-being-loaded": "Teams werden geladen ...", - "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", - "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", - "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", - "there-are-no-groups-yet": "Es gibt noch keine Gruppen", - "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", - "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", - "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", - "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", - "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", - "total-distance": "gelaufene Strecke", - "total-donation-amount": "Gesamtbetrag", - "total-donations": "Spendensumme", - "total-scans": "gesamte Scans", - "track-added": "Track hinzugefügt", - "track-data-is-being-loaded": "Trackdaten werden geladen", - "track-is-being-added": "Track wird hinzugefügt...", - "track-length-in-m": "Tracklänge (in Metern)", - "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", - "track-name": "Trackname", - "track-name-must-not-be-empty": "Der Name muss angegeben werden", - "tracks": "Tracks", - "updated-contact": "Kontakt aktualisiert!", - "updated-donor": "Sponsor:in wurde aktualisiert", - "updated-organization": "Organisation wurde aktualisiert", - "updateing-group": "Gruppe wird aktualisiert...", - "updating-organization": "Organisation wird aktualisiert", - "updating-permissions": "Berechtigungen werden aktualisiert...", - "updating-runner": "Läufer:in wird aktualisiert.", - "updating-user": "Benutzer:in wird aktualisiert...", - "user-added": "Benutzer hinzugefügt", - "user-groups": "Benutzergruppen", - "user-is-being-added": "Benutzer wird hinzugefügt ...", - "user-updated": "Benutzer:in wurde aktualisiert", - "username": "Benutzername", - "users": "Benutzer", - "valid-city-is-required": "Du musst eine Stadt angeben", - "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", - "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", - "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", - "verfuegbare": "Verfügbar", - "welcome_wavinghand": "Willkommen 👋", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", - "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", - "zip-postal-code": "Postleitzahl", - "add-scan": "Scan erstellen", - "add-your-fist-scan": "Füge deinene ersten Scan hinzu", - "adding-scan": "Scan wird hinzugefügt", - "create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)", - "delete-scan": "Scan löschen", - "deleted-scan": "Scan wurde gelöscht", - "distance-track": "Distanz (+Track)", - "first-scan-of-the-day": "Erster Scan des Tages", - "invalid": "Ungültig", - "laptime": "Rundenzeit", - "please-provide-the-nessecary-information-to-create-a-new-scan": "Bitte gebe alle notwendigen Informationen an, um einen neuen Scan zu erstellen.", - "scan-added": "Scan hinzugefügt", - "scan-is-being-updated": "Scan wird aktualisiert", - "scan-with-fixed-distance": "Scan mit Festdistanz", - "scans": "Scans", - "scans-are-being-loaded": "Scans werden geladen", - "the-scans-distance-must-be-greater-than-0m": "Die Distanz muss größer als 0m sein.", - "there-are-no-scans-yet": "Es gibt noch keine scans", - "track": "Track", - "updated-scan": "Scan wurde aktualisiert", - "valid": "Gültig", - "create-a-new-scanstation": "Neue Station erstellen", - "delete-station": "Station löschen", - "enabled": "aktiviert", - "groups-are-being-loaded": "Gruppen werden geladen", - "loading-group-detail": "Lade Gruppendetails...", - "loading-station-details": "Lade Scanstation-Details ...", - "scanstation": "Scanner Station", - "scanstations": "Scanner Stationen", - "scanstations-are-being-loaded": "Scannerstationen werden geladen...", - "this-scanstation-is": "Diese Station ist" -} + "404message": "Die gesuchte Seite wurde leider nicht gefunden.", + "404title": "Fehler 404", + "about": "Über", + "action": "Aktionen", + "active": "Aktiv", + "add-donation": "Sponsoring erstellen", + "add-donor": "Sponsor:in erstellen", + "add-scan": "Scan erstellen", + "add-user-group": "Neue Gruppe erstellen", + "add-your-first-contact": "Erstelle den ersten Kontakt", + "add-your-first-donor": "Erstelle die erste Sponsor:in", + "add-your-first-group": "Erstelle die erste Gruppe", + "add-your-first-organization": "Erstelle die erste Organisation", + "add-your-first-runner": "Erstelle die erste Läufer:in", + "add-your-first-team": "Erstelle das erste Team", + "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", + "add-your-first-user": "Erstelle die erste Benutzer:in", + "add-your-fist-scan": "Füge deinene ersten Scan hinzu", + "adding-scan": "Scan wird hinzugefügt", + "address": "Adresse", + "address-is-required": "Du musst eine Adresse angeben", + "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", + "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", + "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", + "amount-per-kilometer": "Betrag pro Kilometer", + "apartment-suite-etc": "Apartment, Wohnung, etc.", + "application_name": "Lauf für Kaya! - Admin", + "applying-changes": "Änderungen anwenden", + "attention": "Achtung!", + "author": "Autor:in", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", + "by": "von", + "cancel": "Abbrechen", + "cancel-delete": "Löschen abbrechen", + "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", + "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", + "cancel-keep-team": "Abbrechen, Team behalten", + "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", + "city": "Stadt", + "close": "Schließen", + "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", + "confirm": "Bestätigen", + "confirm-delete": "Löschung Bestätigen", + "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", + "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", + "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", + "confirm-deletion": "Löschung Bestätigen", + "contact": "Kontakt", + "contact-deleted": "Kontakt gelöscht", + "contact-information": "Kontaktinformation", + "contact-is-being-updated": "Kontakt wird aktualisiert ...", + "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", + "contacts": "Kontakte", + "contacts-are-being-loaded": "Kontakte werden geladen ...", + "count_organizations": "Organisationen (Anzahl)", + "count_teams": "Teams (Anzahl)", + "create": "Erstellen", + "create-a-new": "Erstelle eine neue", + "create-a-new-contact": "Kontakt erstellen", + "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", + "create-a-new-donor": "Neue Sponsor:in erstellen", + "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", + "create-a-new-organization": "Neue Organisation anlegen", + "create-a-new-runner": "Neue Läufer:in erstellen", + "create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)", + "create-a-new-scanstation": "Neue Station erstellen", + "create-a-new-team": "Erstelle ein neues Team", + "create-a-new-track": "Neuen Track erstellen", + "create-a-new-user": "Neue Benutzer:in anlegen", + "create-a-new-user-group": "Erstelle eine neue Gruppe", + "create-organization": "Organisation erstellen", + "create-team": "Team erstellen", + "create-track": "Track erstellen", + "create-user": "Benutzer anlegen", + "credits": "Credits", + "csv_import__class": "Klasse", + "csv_import__firstname": "Vorname", + "csv_import__lastname": "Nachname", + "csv_import__middlename": "Mittelname", + "csv_import__team": "Team", + "dashboard-greeting": "Moin", + "dashboard-title": "Dashboard", + "datatable": { + "search": "🔍 Suche ...", + "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", + "loading": "Wird geladen...", + "next": "Nächste", + "of": "von", + "previous": "Vorherige", + "to": "bis", + "showing": "Zeige", + "no_matching_records_found": "Keine passenden Einträge gefunden", + "page": "Seite", + "records": "Einträge", + "sort_column_ascending": "Spalte aufsteigend sortieren", + "sort_column_descending": "Spalte absteigend sortieren" + }, + "delete": "Löschen", + "delete-contact": "Kontakt löschen", + "delete-donation": "Sponsporing löschen", + "delete-donor": "Sponsor:in löschen", + "delete-group": "Gruppe löschen", + "delete-organization": "Organisation löschen", + "delete-runner": "Läufer:in löschen", + "delete-scan": "Scan löschen", + "delete-station": "Station löschen", + "delete-team": "Team Löschen", + "delete-user": "Benutzer:in löschen", + "deleted-scan": "Scan wurde gelöscht", + "dependency_name": "Name", + "description": "Beschreibung", + "description-optional": "Beschreibung (optional)", + "deselect-all": "Alle abwählen", + "details": "Details", + "distance": "Distanz", + "distance-donation": "Sponsoring", + "distance-in-km": "Distanz (in KM)", + "distance-track": "Distanz (+Track)", + "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", + "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", + "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", + "donation-amount": "Sponsoringbetrag", + "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", + "donations": "Sponsorings", + "donor": "Sponsor:in", + "donor-added": "Sponsor:in hinzugefügt", + "donor-deleted": "Sponsor:in gelöscht", + "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", + "donor-is-being-added": "Sponsor:in wird hinzugefügt...", + "donor-is-being-updated": "Sponsor:in wird aktualisiert", + "donors": "Sponsor:innen", + "donors-are-being-loaded": "Sponsor:innen werden geladen", + "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", + "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", + "e-mail-adress": "E-Mail-Adresse", + "edit": "Bearbeiten", + "edit-permissions": "Berechtigungen bearbeiten", + "email_address_or_username": "E-Mail-Adresse/ Benutzername", + "enabled": "aktiviert", + "english": "Englisch", + "error_on_login": "😢Fehler beim Login", + "erteilte": "Direkt erteilte", + "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", + "faq": "FAQ", + "filter-by-organization-team": "Filtern nach Organisation / Team", + "first-name": "Vorname", + "first-name-is-required": "Vorname muss angegeben werden", + "first-scan-of-the-day": "Erster Scan des Tages", + "fixed-donation": "Festbetragsspende", + "forgot_password": "Passwort vergessen?", + "geerbte": "geerbte", + "general-stats": "Allgemeine Statistiken", + "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", + "generate-sponsoring-contract": "Sponsoringvertrag generieren", + "generate-sponsoring-contracts": "Sponsoringverträge generieren", + "generating-pdf": "Pdf wird generiert...", + "generating-pdfs": "PDFs werden generiert...", + "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", + "german": "Deutsch", + "go-to-login": "Zum Login", + "goback": "Zur Startseite", + "granted": "Gewährt", + "group": "Gruppe", + "group-added": "Gruppe hinzugefügt", + "group-is-being-added": "Gruppe wird erstellt", + "group-name-is-required": "Der Gruppenname muss angegeben werden.", + "group-updated": "Gruppe aktualisiert", + "groups": "Gruppen", + "groups-are-being-loaded": "Gruppen werden geladen", + "home": "Start", + "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", + "import-finished": "Import abgeschlossen", + "import-runners": "Läufer:innen importieren", + "import__target-organization": "Ziel Organisation", + "imprint": "Impressum ", + "imprint-loading": "Impressum lädt...", + "inactive": "Inaktiv", + "installed-version": "Installierte Version", + "internal-error": "Interner Fehler", + "invalid": "Ungültig", + "invalid-mail-reset": "Das ist keine gültige E-Mail", + "laeufer-hinzufuegen": "Läufer:in hinzufügen", + "laeufer-importieren": "Läufer:innen importieren", + "laptime": "Rundenzeit", + "last-name": "Nachname", + "last-name-is-required": "Nachname muss angegeben werden", + "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", + "license": "Lizenz", + "licenses-are-being-loaded": "Lizenzen werden geladen...", + "loading-contact-details": "Kontaktdaten werden geladen ...", + "loading-donation-details": "Lade Sponsoringdetails", + "loading-donor-details": "Lade Details", + "loading-group-detail": "Lade Gruppendetails...", + "loading-runners": "Läufer:innen werden geladen...", + "loading-station-details": "Lade Scanstation-Details ...", + "log_in": "Anmelden", + "log_in_to_your_account": "Bitte melde dich an", + "login_is_checked": "Login wird überprüft", + "logout": "Abmelden", + "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", + "manage-admin-users": "Nutzer verwalten", + "middle-name": "Mittelname", + "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", + "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", + "name": "Name", + "name-is-required": "Der Gruppenname muss angegeben werden", + "new-password": "Neues Passwort", + "no-contact-found": "Keine Kontakte gefunden", + "no-contact-selected": "Kein Kontakt ausgewählt", + "no-contact-specified": "Kein Kontakt angegeben", + "no-donors-found": "Keine Spender:innen gefunden", + "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", + "no-organization-or-team-found": "Keine Organisationen oder Teams gefunden", + "no-organization-specified": "Keine Organisation angegeben", + "no-organizations-found": "Keine Organisationen gefunden", + "no-runners-found": "Keine Läufer:innen gefunden", + "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", + "organization": "Organisation", + "organization-added": "Organisation hinzugefügt", + "organization-deleted": "Organisation gelöscht", + "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", + "organization-is-being-added": "Organisation wird hinzugefügt ...", + "organization-name-is-required": "Der Name muss angegeben werden", + "organizations": "Organisationen", + "organizations-are-being-loaded": "Organisationen werden geladen ...", + "orgs": "Organisationen", + "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", + "password": "Passwort", + "password-is-required": "Passwort muss angegeben werden", + "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", + "password-reset-in-progress": "Passwort wird zurückgesetzt...", + "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", + "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", + "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", + "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", + "pdfs-successfully-generated": "Alle PDFs wurden generiert!", + "per-kilometer": "pro Kilometer", + "permissions": "Berechtigungen", + "permissions-updated": "Berechtigungen aktualisiert!", + "phone": "Telefon", + "please-provide-a-password": "Bitte gebe ein Passwort an...", + "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", + "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", + "please-provide-the-nessecary-information-to-create-a-new-scan": "Bitte gebe alle notwendigen Informationen an, um einen neuen Scan zu erstellen.", + "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", + "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", + "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", + "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", + "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", + "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", + "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", + "privacy": "Datenschutz", + "privacy-loading": "Datenschutzerklärung lädt...", + "profile-picture": "Profilbild", + "read-license": "Lizenz-Text lesen", + "receipt-needed": "Spendenquittung benötigt", + "repo_link": "Link", + "request-a-new-reset-mail": "Neue Reset-Mail anfordern", + "reset-my-password": "Passwort zurücksetzen", + "reset-password": "Passwort zurücksetzen", + "runner": "Läufer:in", + "runner-added": "Läufer:in hinzugefügt", + "runner-import": "Läufer:innen Import", + "runner-is-being-added": "Läufer:in wird hinzugefügt...", + "runner-updated": "Läufer:in aktualisiert!", + "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", + "runners": "Läufer", + "runners-are-being-imported": "Läufer:innen werden importiert ...", + "runners-are-being-loaded": "Läufer:innen werden geladen ...", + "save": "Speichern", + "save-changes": "Änderungen speichern", + "scan-added": "Scan hinzugefügt", + "scan-is-being-updated": "Scan wird aktualisiert", + "scan-with-fixed-distance": "Scan mit Festdistanz", + "scans": "Scans", + "scans-are-being-loaded": "Scans werden geladen", + "scanstation": "Scanner Station", + "scanstations": "Scanner Stationen", + "scanstations-are-being-loaded": "Scannerstationen werden geladen...", + "search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)", + "search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)", + "search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)", + "search-for-permission": "Berechtigungen durchsuchen", + "search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)", + "select-all": "Alle auswählen", + "select-language": "Sprache auswählen", + "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", + "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", + "settings": "Einstellungen", + "something-about-the-group": "Infos zur Gruppe", + "stats-are-being-loaded": "Die Statistiken werden geladen...", + "status": "Status", + "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", + "team": "Team", + "team-detail-is-being-loaded": "Team wird geladen...", + "team-name": "Teamname", + "team-name-is-required": "Teamname ist erforderlich", + "teams": "Teams", + "teams-are-being-loaded": "Teams werden geladen ...", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", + "the-scans-distance-must-be-greater-than-0m": "Die Distanz muss größer als 0m sein.", + "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", + "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", + "there-are-no-groups-yet": "Es gibt noch keine Gruppen", + "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", + "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", + "there-are-no-scans-yet": "Es gibt noch keine scans", + "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", + "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", + "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", + "this-scanstation-is": "Diese Station ist", + "total-distance": "gelaufene Strecke", + "total-donation-amount": "Gesamtbetrag", + "total-donations": "Spendensumme", + "total-scans": "gesamte Scans", + "track": "Track", + "track-added": "Track hinzugefügt", + "track-data-is-being-loaded": "Trackdaten werden geladen", + "track-is-being-added": "Track wird hinzugefügt...", + "track-length-in-m": "Tracklänge (in Metern)", + "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", + "track-name": "Trackname", + "track-name-must-not-be-empty": "Der Name muss angegeben werden", + "tracks": "Tracks", + "updated-contact": "Kontakt aktualisiert!", + "updated-donor": "Sponsor:in wurde aktualisiert", + "updated-organization": "Organisation wurde aktualisiert", + "updated-scan": "Scan wurde aktualisiert", + "updateing-group": "Gruppe wird aktualisiert...", + "updating-organization": "Organisation wird aktualisiert", + "updating-permissions": "Berechtigungen werden aktualisiert...", + "updating-runner": "Läufer:in wird aktualisiert.", + "updating-user": "Benutzer:in wird aktualisiert...", + "user-added": "Benutzer hinzugefügt", + "user-groups": "Benutzergruppen", + "user-is-being-added": "Benutzer wird hinzugefügt ...", + "user-updated": "Benutzer:in wurde aktualisiert", + "username": "Benutzername", + "users": "Benutzer", + "valid": "Gültig", + "valid-city-is-required": "Du musst eine Stadt angeben", + "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", + "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", + "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", + "verfuegbare": "Verfügbar", + "welcome_wavinghand": "Willkommen 👋", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", + "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", + "zip-postal-code": "Postleitzahl" +} \ No newline at end of file diff --git a/src/locales/en.json b/src/locales/en.json index 2cc5043b..fdb82627 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -64,6 +64,7 @@ "create-a-new-organization": "Create a new Organization", "create-a-new-runner": "Create a new Runner", "create-a-new-scan-fixed-only": "Create a new scan (fixed only)", + "create-a-new-scanstation": "Create a new station", "create-a-new-team": "Create a new team", "create-a-new-track": "Create a new Track", "create-a-new-user": "Create a new User", @@ -103,6 +104,7 @@ "delete-organization": "Delete Organization", "delete-runner": "Delete Runner", "delete-scan": "Delete scan", + "delete-station": "Delete station", "delete-team": "Delete Team", "delete-user": "Delete User", "deleted-scan": "Deleted scan", @@ -135,6 +137,7 @@ "edit": "Edit", "edit-permissions": "edit permissions", "email_address_or_username": "Email / username", + "enabled": "enabled", "english": "English", "error_on_login": "Error on login", "erteilte": "Directly granted", @@ -164,6 +167,7 @@ "group-name-is-required": "Group name is required", "group-updated": "group updated", "groups": "Groups", + "groups-are-being-loaded": "Groups are being loaded", "home": "Home", "icon-image-credits": "We also want to thank these projects for illustrations and icons:", "import-finished": "Import finished", @@ -187,7 +191,9 @@ "loading-contact-details": "Loading contact details...", "loading-donation-details": "Loading donation details", "loading-donor-details": "Loading donor details", + "loading-group-detail": "Loading group detail...", "loading-runners": "loading runners...", + "loading-station-details": "Loading station details", "log_in": "Log in", "log_in_to_your_account": "Log in to your account", "login_is_checked": "Login is being checked...", @@ -271,6 +277,9 @@ "scan-with-fixed-distance": "Scan with fixed distance", "scans": "Scans", "scans-are-being-loaded": "Scans are being loaded", + "scanstation": "Scanstation", + "scanstations": "Scanstations", + "scanstations-are-being-loaded": "Loading scanstations...", "search-for-an-organization-by-name-or-id": "Search for an organization (by name or id)", "search-for-an-organization-or-team-by-name-or-id": "Search for an organization or team (by name or id)", "search-for-donor-name-or-id": "Search for donor (by name or id)", @@ -302,6 +311,7 @@ "there-are-no-teams-added-yet": "There are no teams added yet.", "there-are-no-users-added-yet": "There are no users added yet.", "this-might-take-a-moment": "This might take a moment 👀", + "this-scanstation-is": "This scanstation is", "total-distance": "total distance", "total-donation-amount": "total donation amount", "total-donations": "total donations", @@ -339,15 +349,5 @@ "welcome_wavinghand": "Welcome 👋", "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", "you-have-to-provide-an-organization": "You have to provide an organization", - "zip-postal-code": "ZIP/ postal code", - "scanstations": "Scanstations", - "groups-are-being-loaded": "Groups are being loaded", - "loading-group-detail": "Loading group detail...", - "create-a-new-scanstation": "Create a new station", - "scanstations-are-being-loaded": "Loading scanstations...", - "loading-station-details": "Loading station details", - "scanstation": "Scanstation", - "this-scanstation-is": "This scanstation is", - "delete-station": "Delete station", - "enabled": "enabled" + "zip-postal-code": "ZIP/ postal code" } \ No newline at end of file From f09224d5c02a2c2d2f1ac221314d2c22758143ba Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 18 Mar 2021 20:10:09 +0100 Subject: [PATCH 257/359] =?UTF-8?q?Removed=20lodash=20as=20a=20dependency?= =?UTF-8?q?=20=F0=9F=97=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #99 --- package.json | 1 - src/components/groups/GroupDetail.svelte | 3 +-- src/components/users/UserDetail.svelte | 3 +-- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 28539e79..57e26077 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "csvtojson": "^2.0.10", "gridjs": "3.3.0", "localforage": "1.9.0", - "lodash.isequal": "^4.5.0", "marked": "^2.0.0", "svelte-focus-trap": "1.0.1", "svelte-i18n": "3.3.2", diff --git a/src/components/groups/GroupDetail.svelte b/src/components/groups/GroupDetail.svelte index 414790fb..49a67bf4 100644 --- a/src/components/groups/GroupDetail.svelte +++ b/src/components/groups/GroupDetail.svelte @@ -1,6 +1,5 @@ - - - + + + + + + + + + + + + Lauf für Kaya! - Admin + __TAILWIND_INSERT__ + + + + + + + + + \ No newline at end of file diff --git a/package.json b/package.json index ff92fe80..19e3ebc3 100644 --- a/package.json +++ b/package.json @@ -1,61 +1,61 @@ -{ - "name": "@odit/lfk-frontend", - "version": "0.6.0", - "scripts": { - "i18n-order": "node order.js", - "dev:all": "yarn prebuild && snowpack dev", - "dev": "cross-env NODE_ENV_ODIT=development_fast node template-copy.js && yarn build:sw && snowpack dev", - "build": "yarn prebuild && snowpack build", - "prebuild": "cross-env NODE_ENV_ODIT=production node template-copy.js && yarn build:sw", - "build:sw": "workbox generateSW workbox-config.js", - "release": "release-it", - "licenses:export": "license-exporter --json -o public" - }, - "license": "CC-BY-NC-SA-4.0", - "dependencies": { - "@odit/lfk-client-js": "0.6.3", - "csvtojson": "^2.0.10", - "gridjs": "3.3.0", - "localforage": "1.9.0", - "marked": "^2.0.1", - "svelte-focus-trap": "1.0.1", - "svelte-i18n": "3.3.7", - "svelte-select": "^3.17.0", - "tailwindcss": "2.0.3", - "tinro": "0.6.1", - "toastify-js": "1.9.3", - "validator": "13.5.2", - "xlsx": "^0.16.9" - }, - "devDependencies": { - "@odit/license-exporter": "^0.0.11", - "@snowpack/plugin-svelte": "3.5.2", - "auto-changelog": "^2.2.1", - "autoprefixer": "10.2.5", - "cross-env": "^7.0.3", - "postcss": "8.2.8", - "postcss-load-config": "3.0.1", - "release-it": "^14.4.1", - "snowpack": "3.0.13", - "svelte": "3.35.0", - "svelte-preprocess": "4.6.9", - "workbox-cli": "6.1.2" - }, - "release-it": { - "git": { - "commit": true, - "requireCleanWorkingDir": false, - "commitMessage": "🚀RELEASE v${version}", - "push": false, - "tag": true, - "tagName": null, - "tagAnnotation": "v${version}" - }, - "npm": { - "publish": false - }, - "hooks": { - "after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node versionbuilder.js && git add index.template.html && node order.js && git add src/locales" - } - } -} +{ + "name": "@odit/lfk-frontend", + "version": "0.7.0", + "scripts": { + "i18n-order": "node order.js", + "dev:all": "yarn prebuild && snowpack dev", + "dev": "cross-env NODE_ENV_ODIT=development_fast node template-copy.js && yarn build:sw && snowpack dev", + "build": "yarn prebuild && snowpack build", + "prebuild": "cross-env NODE_ENV_ODIT=production node template-copy.js && yarn build:sw", + "build:sw": "workbox generateSW workbox-config.js", + "release": "release-it", + "licenses:export": "license-exporter --json -o public" + }, + "license": "CC-BY-NC-SA-4.0", + "dependencies": { + "@odit/lfk-client-js": "0.6.3", + "csvtojson": "^2.0.10", + "gridjs": "3.3.0", + "localforage": "1.9.0", + "marked": "^2.0.1", + "svelte-focus-trap": "1.0.1", + "svelte-i18n": "3.3.7", + "svelte-select": "^3.17.0", + "tailwindcss": "2.0.3", + "tinro": "0.6.1", + "toastify-js": "1.9.3", + "validator": "13.5.2", + "xlsx": "^0.16.9" + }, + "devDependencies": { + "@odit/license-exporter": "^0.0.11", + "@snowpack/plugin-svelte": "3.5.2", + "auto-changelog": "^2.2.1", + "autoprefixer": "10.2.5", + "cross-env": "^7.0.3", + "postcss": "8.2.8", + "postcss-load-config": "3.0.1", + "release-it": "^14.4.1", + "snowpack": "3.0.13", + "svelte": "3.35.0", + "svelte-preprocess": "4.6.9", + "workbox-cli": "6.1.2" + }, + "release-it": { + "git": { + "commit": true, + "requireCleanWorkingDir": false, + "commitMessage": "🚀RELEASE v${version}", + "push": false, + "tag": true, + "tagName": null, + "tagAnnotation": "v${version}" + }, + "npm": { + "publish": false + }, + "hooks": { + "after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node versionbuilder.js && git add index.template.html && node order.js && git add src/locales" + } + } +} diff --git a/src/components/groups/GroupDetail.svelte b/src/components/groups/GroupDetail.svelte index 49a67bf4..a37acead 100644 --- a/src/components/groups/GroupDetail.svelte +++ b/src/components/groups/GroupDetail.svelte @@ -1,220 +1,220 @@ - - -{#await promise} - {$_('loading-group-detail')} -{:then} -
    -
    -
    - -
    -
    -
    - {original_data.name} - - {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:DELETE')} - {#if delete_triggered} - - - {/if} - {#if !delete_triggered} - - {/if} - {/if} - {#if !delete_triggered} - - {/if} - -
    - -
    - - - {#if !isGroupnameValid} - - {$_('group-name-is-required')} - - {/if} -
    -
    - - -
    -
    -

    - {$_('permissions')} - {$_('edit-permissions')} -

    -
    - -
    - {#each original_data.permissions as p} - {#if p.toLowerCase().includes(search_permission.toLowerCase())} - {p} - - {/if} - {/each} -
    -
    -{:catch error} - -{/await} + + +{#await promise} + {$_('loading-group-detail')} +{:then} +
    +
    +
    + +
    +
    +
    + {original_data.name} + + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:DELETE')} + {#if delete_triggered} + + + {/if} + {#if !delete_triggered} + + {/if} + {/if} + {#if !delete_triggered} + + {/if} + +
    + +
    + + + {#if !isGroupnameValid} + + {$_('group-name-is-required')} + + {/if} +
    +
    + + +
    +
    +

    + {$_('permissions')} + {$_('edit-permissions')} +

    +
    + +
    + {#each original_data.permissions as p} + {#if p.toLowerCase().includes(search_permission.toLowerCase())} + {p} + + {/if} + {/each} +
    +
    +{:catch error} + +{/await} diff --git a/src/components/scans/AddScanModal.svelte b/src/components/scans/AddScanModal.svelte index bebf05c2..1275d286 100644 --- a/src/components/scans/AddScanModal.svelte +++ b/src/components/scans/AddScanModal.svelte @@ -1,195 +1,195 @@ - - -{#if modal_open} -
    { - modal_open = false; - }}> -
    - -
    -
    -{/if} + + +{#if modal_open} +
    { + modal_open = false; + }}> +
    + +
    +
    +{/if} diff --git a/src/components/users/UserDetail.svelte b/src/components/users/UserDetail.svelte index a13e4f89..83da56f7 100644 --- a/src/components/users/UserDetail.svelte +++ b/src/components/users/UserDetail.svelte @@ -1,326 +1,326 @@ - - -{#await user_promise} - -{:then user} -
    -
    -
    - -
    -
    -
    - {original_data.firstname} - {original_data.middlename || ''} - {original_data.lastname} - - {#if store.state.jwtinfo.userdetails.permissions.includes('USER:DELETE')} - {#if delete_triggered} - - - {/if} - {#if !delete_triggered} - - {/if} - {/if} - {#if !delete_triggered} - - {/if} - -
    -
    -

    {$_('profile-picture')}

    - {$_('profile-picture')} -
    -
    - -
    -

    - { - editable_userdata.enabled = !editable_userdata.enabled; - }} - name="enabled" - type="checkbox" - checked={editable_userdata.enabled} - class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" /> - {$_('set-the-user-active-inactive')} -

    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    - {#if !isEmail(editable_userdata.email)} - {$_('valid-email-is-required')} - {/if} -
    - - -
    -
    - {$_('groups')} - - -
    -
    -

    - {$_('permissions')} - {$_('edit-permissions')} -

    -
    - -
    - {#each original_data.permissions as p} - {#if p.toLowerCase().includes(search_permission.toLowerCase())} - {p} - - {/if} - {/each} -
    -
    -{:catch error} - -{/await} + + +{#await user_promise} + +{:then user} +
    +
    +
    + +
    +
    +
    + {original_data.firstname} + {original_data.middlename || ''} + {original_data.lastname} + + {#if store.state.jwtinfo.userdetails.permissions.includes('USER:DELETE')} + {#if delete_triggered} + + + {/if} + {#if !delete_triggered} + + {/if} + {/if} + {#if !delete_triggered} + + {/if} + +
    +
    +

    {$_('profile-picture')}

    + {$_('profile-picture')} +
    +
    + +
    +

    + { + editable_userdata.enabled = !editable_userdata.enabled; + }} + name="enabled" + type="checkbox" + checked={editable_userdata.enabled} + class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" /> + {$_('set-the-user-active-inactive')} +

    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + {#if !isEmail(editable_userdata.email)} + {$_('valid-email-is-required')} + {/if} +
    + + +
    +
    + {$_('groups')} + + +
    +
    +

    + {$_('permissions')} + {$_('edit-permissions')} +

    +
    + +
    + {#each original_data.permissions as p} + {#if p.toLowerCase().includes(search_permission.toLowerCase())} + {p} + + {/if} + {/each} +
    +
    +{:catch error} + +{/await} From 016fba527910b95eb2690207bbede91004d2f2d9 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 19 Mar 2021 16:43:39 +0100 Subject: [PATCH 266/359] Moved settings to their own folder ref #103 --- src/App.svelte | 2 +- src/components/{general => settings}/Settings.svelte | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/components/{general => settings}/Settings.svelte (100%) diff --git a/src/App.svelte b/src/App.svelte index 335b2a7f..5b78d33f 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -42,7 +42,7 @@ import MainDashContent from "./components/dashboard/MainDashContent.svelte"; import Users from "./components/users/Users.svelte"; import About from "./components/general/About.svelte"; - import Settings from "./components/general/Settings.svelte"; + import Settings from "./components/settings/Settings.svelte"; import Transition from "./components/base/Transition.svelte"; import Orgs from "./components/orgs/Orgs.svelte"; import Runners from "./components/runners/Runners.svelte"; diff --git a/src/components/general/Settings.svelte b/src/components/settings/Settings.svelte similarity index 100% rename from src/components/general/Settings.svelte rename to src/components/settings/Settings.svelte From 01eba88adfd7cced75e828427494cb99fdf01d70 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 19 Mar 2021 16:45:09 +0100 Subject: [PATCH 267/359] Translated headers ref #103 --- src/components/settings/Settings.svelte | 2 +- src/locales/de.json | 707 ++++++++++++------------ src/locales/en.json | 707 ++++++++++++------------ 3 files changed, 709 insertions(+), 707 deletions(-) diff --git a/src/components/settings/Settings.svelte b/src/components/settings/Settings.svelte index f911d855..42fd8aa2 100644 --- a/src/components/settings/Settings.svelte +++ b/src/components/settings/Settings.svelte @@ -11,7 +11,7 @@

    - configure your profile however you want + {$_('settings-for-your-profile')}

    diff --git a/src/locales/de.json b/src/locales/de.json index b76856db..9bc3c022 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1,354 +1,355 @@ { - "404message": "Die gesuchte Seite wurde leider nicht gefunden.", - "404title": "Fehler 404", - "about": "Über", - "action": "Aktionen", - "active": "Aktiv", - "add-donation": "Sponsoring erstellen", - "add-donor": "Sponsor:in erstellen", - "add-scan": "Scan erstellen", - "add-user-group": "Neue Gruppe erstellen", - "add-your-first-contact": "Erstelle den ersten Kontakt", - "add-your-first-donor": "Erstelle die erste Sponsor:in", - "add-your-first-group": "Erstelle die erste Gruppe", - "add-your-first-organization": "Erstelle die erste Organisation", - "add-your-first-runner": "Erstelle die erste Läufer:in", - "add-your-first-team": "Erstelle das erste Team", - "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", - "add-your-first-user": "Erstelle die erste Benutzer:in", - "add-your-fist-scan": "Füge deinene ersten Scan hinzu", - "adding-scan": "Scan wird hinzugefügt", - "address": "Adresse", - "address-is-required": "Du musst eine Adresse angeben", - "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", - "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", - "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", - "amount-per-kilometer": "Betrag pro Kilometer", - "apartment-suite-etc": "Apartment, Wohnung, etc.", - "application_name": "Lauf für Kaya! - Admin", - "applying-changes": "Änderungen anwenden", - "attention": "Achtung!", - "author": "Autor:in", - "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", - "by": "von", - "cancel": "Abbrechen", - "cancel-delete": "Löschen abbrechen", - "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", - "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", - "cancel-keep-team": "Abbrechen, Team behalten", - "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", - "city": "Stadt", - "close": "Schließen", - "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", - "confirm": "Bestätigen", - "confirm-delete": "Löschung Bestätigen", - "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", - "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", - "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", - "confirm-deletion": "Löschung Bestätigen", - "contact": "Kontakt", - "contact-deleted": "Kontakt gelöscht", - "contact-information": "Kontaktinformation", - "contact-is-being-updated": "Kontakt wird aktualisiert ...", - "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", - "contacts": "Kontakte", - "contacts-are-being-loaded": "Kontakte werden geladen ...", - "count_organizations": "Organisationen (Anzahl)", - "count_teams": "Teams (Anzahl)", - "create": "Erstellen", - "create-a-new": "Erstelle eine neue", - "create-a-new-contact": "Kontakt erstellen", - "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", - "create-a-new-donor": "Neue Sponsor:in erstellen", - "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", - "create-a-new-organization": "Neue Organisation anlegen", - "create-a-new-runner": "Neue Läufer:in erstellen", - "create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)", - "create-a-new-scanstation": "Neue Station erstellen", - "create-a-new-team": "Erstelle ein neues Team", - "create-a-new-track": "Neuen Track erstellen", - "create-a-new-user": "Neue Benutzer:in anlegen", - "create-a-new-user-group": "Erstelle eine neue Gruppe", - "create-organization": "Organisation erstellen", - "create-team": "Team erstellen", - "create-track": "Track erstellen", - "create-user": "Benutzer anlegen", - "credits": "Credits", - "csv_import__class": "Klasse", - "csv_import__firstname": "Vorname", - "csv_import__lastname": "Nachname", - "csv_import__middlename": "Mittelname", - "csv_import__team": "Team", - "dashboard-greeting": "Moin", - "dashboard-title": "Dashboard", - "datatable": { - "search": "🔍 Suche ...", - "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", - "loading": "Wird geladen...", - "next": "Nächste", - "of": "von", - "previous": "Vorherige", - "to": "bis", - "showing": "Zeige", - "no_matching_records_found": "Keine passenden Einträge gefunden", - "page": "Seite", - "records": "Einträge", - "sort_column_ascending": "Spalte aufsteigend sortieren", - "sort_column_descending": "Spalte absteigend sortieren" - }, - "delete": "Löschen", - "delete-contact": "Kontakt löschen", - "delete-donation": "Sponsporing löschen", - "delete-donor": "Sponsor:in löschen", - "delete-group": "Gruppe löschen", - "delete-organization": "Organisation löschen", - "delete-runner": "Läufer:in löschen", - "delete-scan": "Scan löschen", - "delete-station": "Station löschen", - "delete-team": "Team Löschen", - "delete-user": "Benutzer:in löschen", - "deleted-scan": "Scan wurde gelöscht", - "dependency_name": "Name", - "description": "Beschreibung", - "description-optional": "Beschreibung (optional)", - "deselect-all": "Alle abwählen", - "details": "Details", - "distance": "Distanz", - "distance-donation": "Sponsoring", - "distance-in-km": "Distanz (in KM)", - "distance-track": "Distanz (+Track)", - "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", - "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", - "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", - "donation-amount": "Sponsoringbetrag", - "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", - "donations": "Sponsorings", - "donor": "Sponsor:in", - "donor-added": "Sponsor:in hinzugefügt", - "donor-deleted": "Sponsor:in gelöscht", - "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", - "donor-is-being-added": "Sponsor:in wird hinzugefügt...", - "donor-is-being-updated": "Sponsor:in wird aktualisiert", - "donors": "Sponsor:innen", - "donors-are-being-loaded": "Sponsor:innen werden geladen", - "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", - "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", - "e-mail-adress": "E-Mail-Adresse", - "edit": "Bearbeiten", - "edit-permissions": "Berechtigungen bearbeiten", - "email_address_or_username": "E-Mail-Adresse/ Benutzername", - "enabled": "aktiviert", - "english": "Englisch", - "error_on_login": "😢Fehler beim Login", - "erteilte": "Direkt erteilte", - "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", - "faq": "FAQ", - "filter-by-organization-team": "Filtern nach Organisation / Team", - "first-name": "Vorname", - "first-name-is-required": "Vorname muss angegeben werden", - "first-scan-of-the-day": "Erster Scan des Tages", - "fixed-donation": "Festbetragsspende", - "forgot_password": "Passwort vergessen?", - "geerbte": "geerbte", - "general-stats": "Allgemeine Statistiken", - "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", - "generate-sponsoring-contract": "Sponsoringvertrag generieren", - "generate-sponsoring-contracts": "Sponsoringverträge generieren", - "generating-pdf": "Pdf wird generiert...", - "generating-pdfs": "PDFs werden generiert...", - "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", - "german": "Deutsch", - "go-to-login": "Zum Login", - "goback": "Zur Startseite", - "granted": "Gewährt", - "group": "Gruppe", - "group-added": "Gruppe hinzugefügt", - "group-is-being-added": "Gruppe wird erstellt", - "group-name-is-required": "Der Gruppenname muss angegeben werden.", - "group-updated": "Gruppe aktualisiert", - "groups": "Gruppen", - "groups-are-being-loaded": "Gruppen werden geladen", - "home": "Start", - "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", - "import-finished": "Import abgeschlossen", - "import-runners": "Läufer:innen importieren", - "import__target-organization": "Ziel Organisation", - "imprint": "Impressum ", - "imprint-loading": "Impressum lädt...", - "inactive": "Inaktiv", - "installed-version": "Installierte Version", - "internal-error": "Interner Fehler", - "invalid": "Ungültig", - "invalid-mail-reset": "Das ist keine gültige E-Mail", - "laeufer-hinzufuegen": "Läufer:in hinzufügen", - "laeufer-importieren": "Läufer:innen importieren", - "laptime": "Rundenzeit", - "last-name": "Nachname", - "last-name-is-required": "Nachname muss angegeben werden", - "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", - "license": "Lizenz", - "licenses-are-being-loaded": "Lizenzen werden geladen...", - "loading-contact-details": "Kontaktdaten werden geladen ...", - "loading-donation-details": "Lade Sponsoringdetails", - "loading-donor-details": "Lade Details", - "loading-group-detail": "Lade Gruppendetails...", - "loading-runners": "Läufer:innen werden geladen...", - "loading-station-details": "Lade Scanstation-Details ...", - "log_in": "Anmelden", - "log_in_to_your_account": "Bitte melde dich an", - "login_is_checked": "Login wird überprüft", - "logout": "Abmelden", - "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", - "manage-admin-users": "Nutzer verwalten", - "middle-name": "Mittelname", - "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", - "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", - "name": "Name", - "name-is-required": "Der Gruppenname muss angegeben werden", - "new-password": "Neues Passwort", - "no-contact-found": "Keine Kontakte gefunden", - "no-contact-selected": "Kein Kontakt ausgewählt", - "no-contact-specified": "Kein Kontakt angegeben", - "no-donors-found": "Keine Spender:innen gefunden", - "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", - "no-organization-or-team-found": "Keine Organisationen oder Teams gefunden", - "no-organization-specified": "Keine Organisation angegeben", - "no-organizations-found": "Keine Organisationen gefunden", - "no-runners-found": "Keine Läufer:innen gefunden", - "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", - "organization": "Organisation", - "organization-added": "Organisation hinzugefügt", - "organization-deleted": "Organisation gelöscht", - "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", - "organization-is-being-added": "Organisation wird hinzugefügt ...", - "organization-name-is-required": "Der Name muss angegeben werden", - "organizations": "Organisationen", - "organizations-are-being-loaded": "Organisationen werden geladen ...", - "orgs": "Organisationen", - "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", - "password": "Passwort", - "password-is-required": "Passwort muss angegeben werden", - "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", - "password-reset-in-progress": "Passwort wird zurückgesetzt...", - "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", - "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", - "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", - "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", - "pdfs-successfully-generated": "Alle PDFs wurden generiert!", - "per-kilometer": "pro Kilometer", - "permissions": "Berechtigungen", - "permissions-updated": "Berechtigungen aktualisiert!", - "phone": "Telefon", - "please-provide-a-password": "Bitte gebe ein Passwort an...", - "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", - "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", - "please-provide-the-nessecary-information-to-create-a-new-scan": "Bitte gebe alle notwendigen Informationen an, um einen neuen Scan zu erstellen.", - "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", - "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", - "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", - "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", - "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", - "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", - "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", - "privacy": "Datenschutz", - "privacy-loading": "Datenschutzerklärung lädt...", - "profile-picture": "Profilbild", - "read-license": "Lizenz-Text lesen", - "receipt-needed": "Spendenquittung benötigt", - "repo_link": "Link", - "request-a-new-reset-mail": "Neue Reset-Mail anfordern", - "reset-my-password": "Passwort zurücksetzen", - "reset-password": "Passwort zurücksetzen", - "runner": "Läufer:in", - "runner-added": "Läufer:in hinzugefügt", - "runner-import": "Läufer:innen Import", - "runner-is-being-added": "Läufer:in wird hinzugefügt...", - "runner-updated": "Läufer:in aktualisiert!", - "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", - "runners": "Läufer", - "runners-are-being-imported": "Läufer:innen werden importiert ...", - "runners-are-being-loaded": "Läufer:innen werden geladen ...", - "save": "Speichern", - "save-changes": "Änderungen speichern", - "scan-added": "Scan hinzugefügt", - "scan-is-being-updated": "Scan wird aktualisiert", - "scan-with-fixed-distance": "Scan mit Festdistanz", - "scans": "Scans", - "scans-are-being-loaded": "Scans werden geladen", - "scanstation": "Scanner Station", - "scanstations": "Scanner Stationen", - "scanstations-are-being-loaded": "Scannerstationen werden geladen...", - "search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)", - "search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)", - "search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)", - "search-for-permission": "Berechtigungen durchsuchen", - "search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)", - "select-all": "Alle auswählen", - "select-language": "Sprache auswählen", - "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", - "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", - "settings": "Einstellungen", - "something-about-the-group": "Infos zur Gruppe", - "stats-are-being-loaded": "Die Statistiken werden geladen...", - "status": "Status", - "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", - "team": "Team", - "team-detail-is-being-loaded": "Team wird geladen...", - "team-name": "Teamname", - "team-name-is-required": "Teamname ist erforderlich", - "teams": "Teams", - "teams-are-being-loaded": "Teams werden geladen ...", - "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", - "the-scans-distance-must-be-greater-than-0m": "Die Distanz muss größer als 0m sein.", - "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", - "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", - "there-are-no-groups-yet": "Es gibt noch keine Gruppen", - "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", - "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", - "there-are-no-scans-yet": "Es gibt noch keine scans", - "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", - "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", - "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", - "this-scanstation-is": "Diese Station ist", - "total-distance": "gelaufene Strecke", - "total-donation-amount": "Gesamtbetrag", - "total-donations": "Spendensumme", - "total-scans": "gesamte Scans", - "track": "Track", - "track-added": "Track hinzugefügt", - "track-data-is-being-loaded": "Trackdaten werden geladen", - "track-is-being-added": "Track wird hinzugefügt...", - "track-length-in-m": "Tracklänge (in Metern)", - "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", - "track-name": "Trackname", - "track-name-must-not-be-empty": "Der Name muss angegeben werden", - "tracks": "Tracks", - "updated-contact": "Kontakt aktualisiert!", - "updated-donor": "Sponsor:in wurde aktualisiert", - "updated-organization": "Organisation wurde aktualisiert", - "updated-scan": "Scan wurde aktualisiert", - "updateing-group": "Gruppe wird aktualisiert...", - "updating-organization": "Organisation wird aktualisiert", - "updating-permissions": "Berechtigungen werden aktualisiert...", - "updating-runner": "Läufer:in wird aktualisiert.", - "updating-user": "Benutzer:in wird aktualisiert...", - "user-added": "Benutzer hinzugefügt", - "user-groups": "Benutzergruppen", - "user-is-being-added": "Benutzer wird hinzugefügt ...", - "user-updated": "Benutzer:in wurde aktualisiert", - "username": "Benutzername", - "users": "Benutzer", - "valid": "Gültig", - "valid-city-is-required": "Du musst eine Stadt angeben", - "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", - "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", - "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", - "verfuegbare": "Verfügbar", - "welcome_wavinghand": "Willkommen 👋", - "yes-i-copied-the-token": "Ja, ich habe den Token kopiert", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", - "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", - "zip-postal-code": "Postleitzahl" -} \ No newline at end of file + "404message": "Die gesuchte Seite wurde leider nicht gefunden.", + "404title": "Fehler 404", + "about": "Über", + "action": "Aktionen", + "active": "Aktiv", + "add-donation": "Sponsoring erstellen", + "add-donor": "Sponsor:in erstellen", + "add-scan": "Scan erstellen", + "add-user-group": "Neue Gruppe erstellen", + "add-your-first-contact": "Erstelle den ersten Kontakt", + "add-your-first-donor": "Erstelle die erste Sponsor:in", + "add-your-first-group": "Erstelle die erste Gruppe", + "add-your-first-organization": "Erstelle die erste Organisation", + "add-your-first-runner": "Erstelle die erste Läufer:in", + "add-your-first-team": "Erstelle das erste Team", + "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", + "add-your-first-user": "Erstelle die erste Benutzer:in", + "add-your-fist-scan": "Füge deinene ersten Scan hinzu", + "adding-scan": "Scan wird hinzugefügt", + "address": "Adresse", + "address-is-required": "Du musst eine Adresse angeben", + "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", + "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", + "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", + "amount-per-kilometer": "Betrag pro Kilometer", + "apartment-suite-etc": "Apartment, Wohnung, etc.", + "application_name": "Lauf für Kaya! - Admin", + "applying-changes": "Änderungen anwenden", + "attention": "Achtung!", + "author": "Autor:in", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", + "by": "von", + "cancel": "Abbrechen", + "cancel-delete": "Löschen abbrechen", + "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", + "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", + "cancel-keep-team": "Abbrechen, Team behalten", + "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", + "city": "Stadt", + "close": "Schließen", + "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", + "confirm": "Bestätigen", + "confirm-delete": "Löschung Bestätigen", + "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", + "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", + "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", + "confirm-deletion": "Löschung Bestätigen", + "contact": "Kontakt", + "contact-deleted": "Kontakt gelöscht", + "contact-information": "Kontaktinformation", + "contact-is-being-updated": "Kontakt wird aktualisiert ...", + "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", + "contacts": "Kontakte", + "contacts-are-being-loaded": "Kontakte werden geladen ...", + "count_organizations": "Organisationen (Anzahl)", + "count_teams": "Teams (Anzahl)", + "create": "Erstellen", + "create-a-new": "Erstelle eine neue", + "create-a-new-contact": "Kontakt erstellen", + "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", + "create-a-new-donor": "Neue Sponsor:in erstellen", + "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", + "create-a-new-organization": "Neue Organisation anlegen", + "create-a-new-runner": "Neue Läufer:in erstellen", + "create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)", + "create-a-new-scanstation": "Neue Station erstellen", + "create-a-new-team": "Erstelle ein neues Team", + "create-a-new-track": "Neuen Track erstellen", + "create-a-new-user": "Neue Benutzer:in anlegen", + "create-a-new-user-group": "Erstelle eine neue Gruppe", + "create-organization": "Organisation erstellen", + "create-team": "Team erstellen", + "create-track": "Track erstellen", + "create-user": "Benutzer anlegen", + "credits": "Credits", + "csv_import__class": "Klasse", + "csv_import__firstname": "Vorname", + "csv_import__lastname": "Nachname", + "csv_import__middlename": "Mittelname", + "csv_import__team": "Team", + "dashboard-greeting": "Moin", + "dashboard-title": "Dashboard", + "datatable": { + "search": "🔍 Suche ...", + "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", + "loading": "Wird geladen...", + "next": "Nächste", + "of": "von", + "previous": "Vorherige", + "to": "bis", + "showing": "Zeige", + "no_matching_records_found": "Keine passenden Einträge gefunden", + "page": "Seite", + "records": "Einträge", + "sort_column_ascending": "Spalte aufsteigend sortieren", + "sort_column_descending": "Spalte absteigend sortieren" + }, + "delete": "Löschen", + "delete-contact": "Kontakt löschen", + "delete-donation": "Sponsporing löschen", + "delete-donor": "Sponsor:in löschen", + "delete-group": "Gruppe löschen", + "delete-organization": "Organisation löschen", + "delete-runner": "Läufer:in löschen", + "delete-scan": "Scan löschen", + "delete-station": "Station löschen", + "delete-team": "Team Löschen", + "delete-user": "Benutzer:in löschen", + "deleted-scan": "Scan wurde gelöscht", + "dependency_name": "Name", + "description": "Beschreibung", + "description-optional": "Beschreibung (optional)", + "deselect-all": "Alle abwählen", + "details": "Details", + "distance": "Distanz", + "distance-donation": "Sponsoring", + "distance-in-km": "Distanz (in KM)", + "distance-track": "Distanz (+Track)", + "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", + "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", + "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", + "donation-amount": "Sponsoringbetrag", + "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", + "donations": "Sponsorings", + "donor": "Sponsor:in", + "donor-added": "Sponsor:in hinzugefügt", + "donor-deleted": "Sponsor:in gelöscht", + "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", + "donor-is-being-added": "Sponsor:in wird hinzugefügt...", + "donor-is-being-updated": "Sponsor:in wird aktualisiert", + "donors": "Sponsor:innen", + "donors-are-being-loaded": "Sponsor:innen werden geladen", + "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", + "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", + "e-mail-adress": "E-Mail-Adresse", + "edit": "Bearbeiten", + "edit-permissions": "Berechtigungen bearbeiten", + "email_address_or_username": "E-Mail-Adresse/ Benutzername", + "enabled": "aktiviert", + "english": "Englisch", + "error_on_login": "😢Fehler beim Login", + "erteilte": "Direkt erteilte", + "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", + "faq": "FAQ", + "filter-by-organization-team": "Filtern nach Organisation / Team", + "first-name": "Vorname", + "first-name-is-required": "Vorname muss angegeben werden", + "first-scan-of-the-day": "Erster Scan des Tages", + "fixed-donation": "Festbetragsspende", + "forgot_password": "Passwort vergessen?", + "geerbte": "geerbte", + "general-stats": "Allgemeine Statistiken", + "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", + "generate-sponsoring-contract": "Sponsoringvertrag generieren", + "generate-sponsoring-contracts": "Sponsoringverträge generieren", + "generating-pdf": "Pdf wird generiert...", + "generating-pdfs": "PDFs werden generiert...", + "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", + "german": "Deutsch", + "go-to-login": "Zum Login", + "goback": "Zur Startseite", + "granted": "Gewährt", + "group": "Gruppe", + "group-added": "Gruppe hinzugefügt", + "group-is-being-added": "Gruppe wird erstellt", + "group-name-is-required": "Der Gruppenname muss angegeben werden.", + "group-updated": "Gruppe aktualisiert", + "groups": "Gruppen", + "groups-are-being-loaded": "Gruppen werden geladen", + "home": "Start", + "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", + "import-finished": "Import abgeschlossen", + "import-runners": "Läufer:innen importieren", + "import__target-organization": "Ziel Organisation", + "imprint": "Impressum ", + "imprint-loading": "Impressum lädt...", + "inactive": "Inaktiv", + "installed-version": "Installierte Version", + "internal-error": "Interner Fehler", + "invalid": "Ungültig", + "invalid-mail-reset": "Das ist keine gültige E-Mail", + "laeufer-hinzufuegen": "Läufer:in hinzufügen", + "laeufer-importieren": "Läufer:innen importieren", + "laptime": "Rundenzeit", + "last-name": "Nachname", + "last-name-is-required": "Nachname muss angegeben werden", + "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", + "license": "Lizenz", + "licenses-are-being-loaded": "Lizenzen werden geladen...", + "loading-contact-details": "Kontaktdaten werden geladen ...", + "loading-donation-details": "Lade Sponsoringdetails", + "loading-donor-details": "Lade Details", + "loading-group-detail": "Lade Gruppendetails...", + "loading-runners": "Läufer:innen werden geladen...", + "loading-station-details": "Lade Scanstation-Details ...", + "log_in": "Anmelden", + "log_in_to_your_account": "Bitte melde dich an", + "login_is_checked": "Login wird überprüft", + "logout": "Abmelden", + "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", + "manage-admin-users": "Nutzer verwalten", + "middle-name": "Mittelname", + "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", + "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", + "name": "Name", + "name-is-required": "Der Gruppenname muss angegeben werden", + "new-password": "Neues Passwort", + "no-contact-found": "Keine Kontakte gefunden", + "no-contact-selected": "Kein Kontakt ausgewählt", + "no-contact-specified": "Kein Kontakt angegeben", + "no-donors-found": "Keine Spender:innen gefunden", + "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", + "no-organization-or-team-found": "Keine Organisationen oder Teams gefunden", + "no-organization-specified": "Keine Organisation angegeben", + "no-organizations-found": "Keine Organisationen gefunden", + "no-runners-found": "Keine Läufer:innen gefunden", + "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", + "organization": "Organisation", + "organization-added": "Organisation hinzugefügt", + "organization-deleted": "Organisation gelöscht", + "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", + "organization-is-being-added": "Organisation wird hinzugefügt ...", + "organization-name-is-required": "Der Name muss angegeben werden", + "organizations": "Organisationen", + "organizations-are-being-loaded": "Organisationen werden geladen ...", + "orgs": "Organisationen", + "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", + "password": "Passwort", + "password-is-required": "Passwort muss angegeben werden", + "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", + "password-reset-in-progress": "Passwort wird zurückgesetzt...", + "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", + "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", + "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", + "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", + "pdfs-successfully-generated": "Alle PDFs wurden generiert!", + "per-kilometer": "pro Kilometer", + "permissions": "Berechtigungen", + "permissions-updated": "Berechtigungen aktualisiert!", + "phone": "Telefon", + "please-provide-a-password": "Bitte gebe ein Passwort an...", + "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", + "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", + "please-provide-the-nessecary-information-to-create-a-new-scan": "Bitte gebe alle notwendigen Informationen an, um einen neuen Scan zu erstellen.", + "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", + "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", + "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", + "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", + "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", + "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", + "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", + "privacy": "Datenschutz", + "privacy-loading": "Datenschutzerklärung lädt...", + "profile-picture": "Profilbild", + "read-license": "Lizenz-Text lesen", + "receipt-needed": "Spendenquittung benötigt", + "repo_link": "Link", + "request-a-new-reset-mail": "Neue Reset-Mail anfordern", + "reset-my-password": "Passwort zurücksetzen", + "reset-password": "Passwort zurücksetzen", + "runner": "Läufer:in", + "runner-added": "Läufer:in hinzugefügt", + "runner-import": "Läufer:innen Import", + "runner-is-being-added": "Läufer:in wird hinzugefügt...", + "runner-updated": "Läufer:in aktualisiert!", + "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", + "runners": "Läufer", + "runners-are-being-imported": "Läufer:innen werden importiert ...", + "runners-are-being-loaded": "Läufer:innen werden geladen ...", + "save": "Speichern", + "save-changes": "Änderungen speichern", + "scan-added": "Scan hinzugefügt", + "scan-is-being-updated": "Scan wird aktualisiert", + "scan-with-fixed-distance": "Scan mit Festdistanz", + "scans": "Scans", + "scans-are-being-loaded": "Scans werden geladen", + "scanstation": "Scanner Station", + "scanstations": "Scanner Stationen", + "scanstations-are-being-loaded": "Scannerstationen werden geladen...", + "search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)", + "search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)", + "search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)", + "search-for-permission": "Berechtigungen durchsuchen", + "search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)", + "select-all": "Alle auswählen", + "select-language": "Sprache auswählen", + "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", + "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", + "settings": "Einstellungen", + "something-about-the-group": "Infos zur Gruppe", + "stats-are-being-loaded": "Die Statistiken werden geladen...", + "status": "Status", + "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", + "team": "Team", + "team-detail-is-being-loaded": "Team wird geladen...", + "team-name": "Teamname", + "team-name-is-required": "Teamname ist erforderlich", + "teams": "Teams", + "teams-are-being-loaded": "Teams werden geladen ...", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", + "the-scans-distance-must-be-greater-than-0m": "Die Distanz muss größer als 0m sein.", + "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", + "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", + "there-are-no-groups-yet": "Es gibt noch keine Gruppen", + "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", + "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", + "there-are-no-scans-yet": "Es gibt noch keine scans", + "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", + "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", + "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", + "this-scanstation-is": "Diese Station ist", + "total-distance": "gelaufene Strecke", + "total-donation-amount": "Gesamtbetrag", + "total-donations": "Spendensumme", + "total-scans": "gesamte Scans", + "track": "Track", + "track-added": "Track hinzugefügt", + "track-data-is-being-loaded": "Trackdaten werden geladen", + "track-is-being-added": "Track wird hinzugefügt...", + "track-length-in-m": "Tracklänge (in Metern)", + "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", + "track-name": "Trackname", + "track-name-must-not-be-empty": "Der Name muss angegeben werden", + "tracks": "Tracks", + "updated-contact": "Kontakt aktualisiert!", + "updated-donor": "Sponsor:in wurde aktualisiert", + "updated-organization": "Organisation wurde aktualisiert", + "updated-scan": "Scan wurde aktualisiert", + "updateing-group": "Gruppe wird aktualisiert...", + "updating-organization": "Organisation wird aktualisiert", + "updating-permissions": "Berechtigungen werden aktualisiert...", + "updating-runner": "Läufer:in wird aktualisiert.", + "updating-user": "Benutzer:in wird aktualisiert...", + "user-added": "Benutzer hinzugefügt", + "user-groups": "Benutzergruppen", + "user-is-being-added": "Benutzer wird hinzugefügt ...", + "user-updated": "Benutzer:in wurde aktualisiert", + "username": "Benutzername", + "users": "Benutzer", + "valid": "Gültig", + "valid-city-is-required": "Du musst eine Stadt angeben", + "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", + "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", + "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", + "verfuegbare": "Verfügbar", + "welcome_wavinghand": "Willkommen 👋", + "yes-i-copied-the-token": "Ja, ich habe den Token kopiert", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", + "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", + "zip-postal-code": "Postleitzahl", + "settings-for-your-profile": "Die Einstellungen deines Accounts" +} diff --git a/src/locales/en.json b/src/locales/en.json index 4c53be67..69998922 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,354 +1,355 @@ { - "404message": "Sorry, the page you are looking for could not be found.", - "404title": "Error 404", - "about": "About", - "action": "Action", - "active": "Active", - "add-donation": "Add donation", - "add-donor": "add donor", - "add-scan": "Add scan", - "add-user-group": "Add User Group", - "add-your-first-contact": "Add your first contact", - "add-your-first-donor": "add your first donor", - "add-your-first-group": "Add your first group", - "add-your-first-organization": "Add your first organization", - "add-your-first-runner": "Add your first runner", - "add-your-first-team": "Add your first team", - "add-your-first-track": "Add your first track.", - "add-your-first-user": "Add your first user", - "add-your-fist-scan": "Add your fist scan", - "adding-scan": "Adding Scan", - "address": "Address", - "address-is-required": "Address is required", - "all-associated-donations-will-get-deleted-as-well": "All associated donations will get deleted as well", - "all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!", - "all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!", - "amount-per-kilometer": "Amount per kilometer", - "apartment-suite-etc": "Apartment, suite, etc.", - "application_name": "Lauf für Kaya! - Admin", - "applying-changes": "Applying Changes", - "attention": "Attention!", - "author": "Author", - "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.", - "by": "by", - "cancel": "Cancel", - "cancel-delete": "Cancel Delete", - "cancel-keep-donor": "Cancel, keep donor", - "cancel-keep-organization": "Cancel, keep organization", - "cancel-keep-team": "Cancel, keep team", - "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", - "city": "City", - "close": "Close", - "configure-the-tracks-and-minimum-lap-times": "configure the tracks & minimum lap times", - "confirm": "Confirm", - "confirm-delete": "Confirm Delete", - "confirm-delete-donor-with-all-donations": "Confirm, delete donor with all donations", - "confirm-delete-organization-and-associated-teams-runners": "Confirm, delete organization and associated teams+runners.", - "confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.", - "confirm-deletion": "Confirm Deletion", - "contact": "Contact", - "contact-deleted": "Contact deleted", - "contact-information": "Contact Information", - "contact-is-being-updated": "Contact is being updated...", - "contact-is-not-a-member-in-any-group": "Contact is not a member in any group", - "contacts": "Contacts", - "contacts-are-being-loaded": "contacts are being loaded...", - "count_organizations": "# Organizations", - "count_teams": "# Teams", - "create": "Create", - "create-a-new": "Create a new", - "create-a-new-contact": "Create a new contact", - "create-a-new-distance-donation": "Create a new distance donation", - "create-a-new-donor": "Create a new donor", - "create-a-new-fixed-donation": "Create a new fixed donation", - "create-a-new-organization": "Create a new Organization", - "create-a-new-runner": "Create a new Runner", - "create-a-new-scan-fixed-only": "Create a new scan (fixed only)", - "create-a-new-scanstation": "Create a new station", - "create-a-new-team": "Create a new team", - "create-a-new-track": "Create a new Track", - "create-a-new-user": "Create a new User", - "create-a-new-user-group": "Create a new user group", - "create-organization": "Create Organization", - "create-team": "Create Team", - "create-track": "Create Track", - "create-user": "Create User", - "credits": "Credits", - "csv_import__class": "Class", - "csv_import__firstname": "Firstname", - "csv_import__lastname": "Lastname", - "csv_import__middlename": "Middlename", - "csv_import__team": "Team", - "dashboard-greeting": "hello there", - "dashboard-title": "Dashboard", - "datatable": { - "search": "🔍 Search...", - "sort_column_ascending": "Sort column ascending", - "sort_column_descending": "Sort column descending", - "previous": "Previous", - "next": "Next", - "page": "Page", - "showing": "Showing", - "records": "Records", - "of": "of", - "to": "to", - "loading": "Loading...", - "no_matching_records_found": "No matching records found", - "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" - }, - "delete": "Delete", - "delete-contact": "Delete Contact", - "delete-donation": "Delete Donation", - "delete-donor": "Delete donor", - "delete-group": "Delete Group", - "delete-organization": "Delete Organization", - "delete-runner": "Delete Runner", - "delete-scan": "Delete scan", - "delete-station": "Delete station", - "delete-team": "Delete Team", - "delete-user": "Delete User", - "deleted-scan": "Deleted scan", - "dependency_name": "Name", - "description": "description", - "description-optional": "Description (optional)", - "deselect-all": "deselect all", - "details": "Details", - "distance": "Distance", - "distance-donation": "distance donation", - "distance-in-km": "Distance in km", - "distance-track": "Distance (+Track)", - "do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?", - "do-you-want-to-delete-the-team-delete_team-name": "Do you want to delete the team {teamname}?", - "do-you-want-to-delete-this-donor-with-all-related-donations": "Do you want to delete this donor with all related donations", - "donation-amount": "Donation amount", - "donation-amount-must-be-greater-that-0-00eur": "Donation amount must be greater that 0.00€", - "donations": "Donations", - "donor": "Donor", - "donor-added": "Donor added", - "donor-deleted": "donor deleted", - "donor-has-no-associated-donations": "Donor has no associated donations.", - "donor-is-being-added": "Donor is being added...", - "donor-is-being-updated": "Donor is being updated", - "donors": "Donors", - "donors-are-being-loaded": "donors are being loaded", - "dont-have-your-email-connected": "Don't have your email connected?", - "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", - "e-mail-adress": "E-Mail Adress", - "edit": "Edit", - "edit-permissions": "edit permissions", - "email_address_or_username": "Email / username", - "enabled": "enabled", - "english": "English", - "error_on_login": "Error on login", - "erteilte": "Directly granted", - "everything-is-more-fun-together": "everything is more fun together 🏃‍♂️🏃‍♀️🏃‍♂️", - "faq": "FAQ", - "filter-by-organization-team": "Filter by Organization/ Team", - "first-name": "First name", - "first-name-is-required": "First Name is required", - "first-scan-of-the-day": "First scan of the day.", - "fixed-donation": "fixed donation", - "forgot_password": "Forgot your password?", - "geerbte": "inherited", - "general-stats": "General Stats", - "general_promise_error": "😢 Error", - "generate-sponsoring-contract": "generate sponsoring contract", - "generate-sponsoring-contracts": "generate sponsoring contracts", - "generating-pdf": "generating PDF...", - "generating-pdfs": "generating PDFs...", - "generic-ui-logic-error": "Something went wrong in the UI logic", - "german": "German", - "go-to-login": "Go To Login", - "goback": "Go Home", - "granted": "granted", - "group": "Group", - "group-added": "Group added", - "group-is-being-added": "Group is being added...", - "group-name-is-required": "Group name is required", - "group-updated": "group updated", - "groups": "Groups", - "groups-are-being-loaded": "Groups are being loaded", - "home": "Home", - "icon-image-credits": "We also want to thank these projects for illustrations and icons:", - "import-finished": "Import finished", - "import-runners": "Import runners", - "import__target-organization": "Target Organization", - "imprint": "Imprint", - "imprint-loading": "Imprint loading...", - "inactive": "Inactive", - "installed-version": "Installed version", - "internal-error": "Internal Error", - "invalid": "Invalid", - "invalid-mail-reset": "the provided email is invalid", - "laeufer-hinzufuegen": "Add runner", - "laeufer-importieren": "Läufer importieren", - "laptime": "Laptime", - "last-name": "Last name", - "last-name-is-required": "Last Name is required", - "lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", - "license": "License", - "licenses-are-being-loaded": "Licenses are being loaded...", - "loading-contact-details": "Loading contact details...", - "loading-donation-details": "Loading donation details", - "loading-donor-details": "Loading donor details", - "loading-group-detail": "Loading group detail...", - "loading-runners": "loading runners...", - "loading-station-details": "Loading station details", - "log_in": "Log in", - "log_in_to_your_account": "Log in to your account", - "login_is_checked": "Login is being checked...", - "logout": "Logout", - "mail-validation-in-progress": "mail validation in progress...", - "manage-admin-users": "manage admin users", - "middle-name": "Middle name", - "minimum-lap-time-in-s": "minimum lap time in s", - "minimum-lap-time-must-be-a-positive-number-or-0": "minimum lap time must be a positive number or 0", - "name": "Name", - "name-is-required": "Name is required", - "new-password": "New password", - "no-contact-found": "No contacts found", - "no-contact-selected": "No contact selected", - "no-contact-specified": "no contact specified", - "no-donors-found": "No donors found", - "no-license-text-could-be-found": "No license text could be found 😢", - "no-organization-or-team-found": "No organization or team found", - "no-organization-specified": "no organization specified", - "no-organizations-found": "No organizations found", - "no-runners-found": "No runners found", - "no-tracks-added-yet": "there are no tracks added yet.", - "organization": "Organization", - "organization-added": "Organization added", - "organization-deleted": "Organization deleted", - "organization-detail-is-being-loaded": "organization detail is being loaded...", - "organization-is-being-added": "Organization is being added...", - "organization-name-is-required": "Organization name is required", - "organizations": "Organizations", - "organizations-are-being-loaded": "organizations are being loaded...", - "orgs": "Organizations", - "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", - "password": "Password", - "password-is-required": "Password is required", - "password-reset-failed": "Password reset failed!", - "password-reset-in-progress": "Password Reset in Progress...", - "password-reset-mail-sent": "Password reset mail was sent to \"{usersEmail}\".", - "password-reset-successful": "Password Reset successful!", - "pdf-generation-failed": "PDF generation failed!", - "pdf-successfully-generated": "PDF successfully generated!", - "pdfs-successfully-generated": "PDFs successfully generated!", - "per-kilometer": "per Kilometer", - "permissions": "Permissions", - "permissions-updated": "Permissions updated!", - "phone": "Phone", - "please-provide-a-password": "Please provide a password...", - "please-provide-the-nessecary-information-to-add-a-new-donor": "Please provide the nessecary information to add a new donor", - "please-provide-the-nessecary-information-to-create-a-new-donation": "Please provide the nessecary information to create a new donation", - "please-provide-the-nessecary-information-to-create-a-new-scan": "Please provide the nessecary information to create a new scan.", - "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", - "please-provide-the-required-information-for-creating-a-new-user-group": "Please provide the required information for creating a new user group.", - "please-provide-the-required-information-to-add-a-new-contact": "Please provide the required information to add a new contact.", - "please-provide-the-required-information-to-add-a-new-organization": "Please provide the required information to add a new organization.", - "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", - "please-provide-the-required-information-to-add-a-new-team": "Please provide the required information to add a new team.", - "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", - "please-provide-the-required-information-to-add-a-new-user": "Please provide the required information to add a new user.", - "please-request-a-new-reset-mail": "Please request a new reset mail...", - "privacy": "Privacy", - "privacy-loading": "Privacy loading...", - "profile-picture": "Profile Picture", - "read-license": "Read License", - "receipt-needed": "Receipt needed", - "repo_link": "Link", - "request-a-new-reset-mail": "Request a new reset mail", - "reset-my-password": "Reset my password", - "reset-password": "Reset your password", - "runner": "Runner", - "runner-added": "Runner added", - "runner-import": "Runner Import", - "runner-is-being-added": "Runner is being added...", - "runner-updated": "Runner updated!", - "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", - "runners": "Runners", - "runners-are-being-imported": "Runners are being imported...", - "runners-are-being-loaded": "runners are being loaded...", - "save": "Save", - "save-changes": "Save Changes", - "scan-added": "Scan added", - "scan-is-being-updated": "Scan is being updated", - "scan-with-fixed-distance": "Scan with fixed distance", - "scans": "Scans", - "scans-are-being-loaded": "Scans are being loaded", - "scanstation": "Scanstation", - "scanstations": "Scanstations", - "scanstations-are-being-loaded": "Loading scanstations...", - "search-for-an-organization-by-name-or-id": "Search for an organization (by name or id)", - "search-for-an-organization-or-team-by-name-or-id": "Search for an organization or team (by name or id)", - "search-for-donor-name-or-id": "Search for donor (by name or id)", - "search-for-permission": "Search for permission", - "search-for-runner-by-name-or-id": "Search for runner (by name or id)", - "select-all": "select all", - "select-language": "Select language", - "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", - "set-the-user-active-inactive": "set the user active/ inactive", - "settings": "Settings", - "something-about-the-group": "Something about the group...", - "stats-are-being-loaded": "stats are being loaded...", - "status": "Status", - "successful-password-reset": "Successful password reset!", - "team": "Team", - "team-detail-is-being-loaded": "team detail is being loaded...", - "team-name": "Team name", - "team-name-is-required": "team name is required", - "teams": "Teams", - "teams-are-being-loaded": "teams are being loaded...", - "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.
    please enter a valid international number...", - "the-scans-distance-must-be-greater-than-0m": "The scan's distance must be greater than 0m", - "there-are-no-contacts-added-yet": "There are no contacts added yet.", - "there-are-no-donors-yet": "There are no donors yet", - "there-are-no-groups-yet": "There are no groups yet", - "there-are-no-organizations-added-yet": "There are no organizations added yet.", - "there-are-no-runners-added-yet": "There are no runners added yet.", - "there-are-no-scans-yet": "There are no scans yet", - "there-are-no-teams-added-yet": "There are no teams added yet.", - "there-are-no-users-added-yet": "There are no users added yet.", - "this-might-take-a-moment": "This might take a moment 👀", - "this-scanstation-is": "This scanstation is", - "total-distance": "total distance", - "total-donation-amount": "total donation amount", - "total-donations": "total donations", - "total-scans": "total scans", - "track": "Track", - "track-added": "Track added", - "track-data-is-being-loaded": "Track data is being loaded", - "track-is-being-added": "Track is being added...", - "track-length-in-m": "Track Length in m", - "track-length-must-be-greater-than-0": "Track length must be greater than 0", - "track-name": "Track name", - "track-name-must-not-be-empty": "Track name must not be empty", - "tracks": "Tracks", - "updated-contact": "Updated contact!", - "updated-donor": "updated donor", - "updated-organization": "updated organization", - "updated-scan": "updated scan", - "updateing-group": "updateing group...", - "updating-organization": "updating organization", - "updating-permissions": "updating permissions...", - "updating-runner": "Updating runner...", - "updating-user": "updating user...", - "user-added": "User added", - "user-groups": "User Groups", - "user-is-being-added": "User is being added...", - "user-updated": "User updated", - "username": "Username", - "users": "Users", - "valid": "Valid", - "valid-city-is-required": "Valid city is required", - "valid-email-is-required": "valid email is required", - "valid-international-phone-number-is-required": "valid international phone number is required...", - "valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required", - "verfuegbare": "availdable", - "welcome_wavinghand": "Welcome 👋", - "yes-i-copied-the-token": "Yes, I copied the token", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", - "you-have-to-provide-an-organization": "You have to provide an organization", - "zip-postal-code": "ZIP/ postal code" -} \ No newline at end of file + "404message": "Sorry, the page you are looking for could not be found.", + "404title": "Error 404", + "about": "About", + "action": "Action", + "active": "Active", + "add-donation": "Add donation", + "add-donor": "add donor", + "add-scan": "Add scan", + "add-user-group": "Add User Group", + "add-your-first-contact": "Add your first contact", + "add-your-first-donor": "add your first donor", + "add-your-first-group": "Add your first group", + "add-your-first-organization": "Add your first organization", + "add-your-first-runner": "Add your first runner", + "add-your-first-team": "Add your first team", + "add-your-first-track": "Add your first track.", + "add-your-first-user": "Add your first user", + "add-your-fist-scan": "Add your fist scan", + "adding-scan": "Adding Scan", + "address": "Address", + "address-is-required": "Address is required", + "all-associated-donations-will-get-deleted-as-well": "All associated donations will get deleted as well", + "all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!", + "all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!", + "amount-per-kilometer": "Amount per kilometer", + "apartment-suite-etc": "Apartment, suite, etc.", + "application_name": "Lauf für Kaya! - Admin", + "applying-changes": "Applying Changes", + "attention": "Attention!", + "author": "Author", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.", + "by": "by", + "cancel": "Cancel", + "cancel-delete": "Cancel Delete", + "cancel-keep-donor": "Cancel, keep donor", + "cancel-keep-organization": "Cancel, keep organization", + "cancel-keep-team": "Cancel, keep team", + "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", + "city": "City", + "close": "Close", + "configure-the-tracks-and-minimum-lap-times": "configure the tracks & minimum lap times", + "confirm": "Confirm", + "confirm-delete": "Confirm Delete", + "confirm-delete-donor-with-all-donations": "Confirm, delete donor with all donations", + "confirm-delete-organization-and-associated-teams-runners": "Confirm, delete organization and associated teams+runners.", + "confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.", + "confirm-deletion": "Confirm Deletion", + "contact": "Contact", + "contact-deleted": "Contact deleted", + "contact-information": "Contact Information", + "contact-is-being-updated": "Contact is being updated...", + "contact-is-not-a-member-in-any-group": "Contact is not a member in any group", + "contacts": "Contacts", + "contacts-are-being-loaded": "contacts are being loaded...", + "count_organizations": "# Organizations", + "count_teams": "# Teams", + "create": "Create", + "create-a-new": "Create a new", + "create-a-new-contact": "Create a new contact", + "create-a-new-distance-donation": "Create a new distance donation", + "create-a-new-donor": "Create a new donor", + "create-a-new-fixed-donation": "Create a new fixed donation", + "create-a-new-organization": "Create a new Organization", + "create-a-new-runner": "Create a new Runner", + "create-a-new-scan-fixed-only": "Create a new scan (fixed only)", + "create-a-new-scanstation": "Create a new station", + "create-a-new-team": "Create a new team", + "create-a-new-track": "Create a new Track", + "create-a-new-user": "Create a new User", + "create-a-new-user-group": "Create a new user group", + "create-organization": "Create Organization", + "create-team": "Create Team", + "create-track": "Create Track", + "create-user": "Create User", + "credits": "Credits", + "csv_import__class": "Class", + "csv_import__firstname": "Firstname", + "csv_import__lastname": "Lastname", + "csv_import__middlename": "Middlename", + "csv_import__team": "Team", + "dashboard-greeting": "hello there", + "dashboard-title": "Dashboard", + "datatable": { + "search": "🔍 Search...", + "sort_column_ascending": "Sort column ascending", + "sort_column_descending": "Sort column descending", + "previous": "Previous", + "next": "Next", + "page": "Page", + "showing": "Showing", + "records": "Records", + "of": "of", + "to": "to", + "loading": "Loading...", + "no_matching_records_found": "No matching records found", + "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" + }, + "delete": "Delete", + "delete-contact": "Delete Contact", + "delete-donation": "Delete Donation", + "delete-donor": "Delete donor", + "delete-group": "Delete Group", + "delete-organization": "Delete Organization", + "delete-runner": "Delete Runner", + "delete-scan": "Delete scan", + "delete-station": "Delete station", + "delete-team": "Delete Team", + "delete-user": "Delete User", + "deleted-scan": "Deleted scan", + "dependency_name": "Name", + "description": "description", + "description-optional": "Description (optional)", + "deselect-all": "deselect all", + "details": "Details", + "distance": "Distance", + "distance-donation": "distance donation", + "distance-in-km": "Distance in km", + "distance-track": "Distance (+Track)", + "do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?", + "do-you-want-to-delete-the-team-delete_team-name": "Do you want to delete the team {teamname}?", + "do-you-want-to-delete-this-donor-with-all-related-donations": "Do you want to delete this donor with all related donations", + "donation-amount": "Donation amount", + "donation-amount-must-be-greater-that-0-00eur": "Donation amount must be greater that 0.00€", + "donations": "Donations", + "donor": "Donor", + "donor-added": "Donor added", + "donor-deleted": "donor deleted", + "donor-has-no-associated-donations": "Donor has no associated donations.", + "donor-is-being-added": "Donor is being added...", + "donor-is-being-updated": "Donor is being updated", + "donors": "Donors", + "donors-are-being-loaded": "donors are being loaded", + "dont-have-your-email-connected": "Don't have your email connected?", + "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", + "e-mail-adress": "E-Mail Adress", + "edit": "Edit", + "edit-permissions": "edit permissions", + "email_address_or_username": "Email / username", + "enabled": "enabled", + "english": "English", + "error_on_login": "Error on login", + "erteilte": "Directly granted", + "everything-is-more-fun-together": "everything is more fun together 🏃‍♂️🏃‍♀️🏃‍♂️", + "faq": "FAQ", + "filter-by-organization-team": "Filter by Organization/ Team", + "first-name": "First name", + "first-name-is-required": "First Name is required", + "first-scan-of-the-day": "First scan of the day.", + "fixed-donation": "fixed donation", + "forgot_password": "Forgot your password?", + "geerbte": "inherited", + "general-stats": "General Stats", + "general_promise_error": "😢 Error", + "generate-sponsoring-contract": "generate sponsoring contract", + "generate-sponsoring-contracts": "generate sponsoring contracts", + "generating-pdf": "generating PDF...", + "generating-pdfs": "generating PDFs...", + "generic-ui-logic-error": "Something went wrong in the UI logic", + "german": "German", + "go-to-login": "Go To Login", + "goback": "Go Home", + "granted": "granted", + "group": "Group", + "group-added": "Group added", + "group-is-being-added": "Group is being added...", + "group-name-is-required": "Group name is required", + "group-updated": "group updated", + "groups": "Groups", + "groups-are-being-loaded": "Groups are being loaded", + "home": "Home", + "icon-image-credits": "We also want to thank these projects for illustrations and icons:", + "import-finished": "Import finished", + "import-runners": "Import runners", + "import__target-organization": "Target Organization", + "imprint": "Imprint", + "imprint-loading": "Imprint loading...", + "inactive": "Inactive", + "installed-version": "Installed version", + "internal-error": "Internal Error", + "invalid": "Invalid", + "invalid-mail-reset": "the provided email is invalid", + "laeufer-hinzufuegen": "Add runner", + "laeufer-importieren": "Läufer importieren", + "laptime": "Laptime", + "last-name": "Last name", + "last-name-is-required": "Last Name is required", + "lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", + "license": "License", + "licenses-are-being-loaded": "Licenses are being loaded...", + "loading-contact-details": "Loading contact details...", + "loading-donation-details": "Loading donation details", + "loading-donor-details": "Loading donor details", + "loading-group-detail": "Loading group detail...", + "loading-runners": "loading runners...", + "loading-station-details": "Loading station details", + "log_in": "Log in", + "log_in_to_your_account": "Log in to your account", + "login_is_checked": "Login is being checked...", + "logout": "Logout", + "mail-validation-in-progress": "mail validation in progress...", + "manage-admin-users": "manage admin users", + "middle-name": "Middle name", + "minimum-lap-time-in-s": "minimum lap time in s", + "minimum-lap-time-must-be-a-positive-number-or-0": "minimum lap time must be a positive number or 0", + "name": "Name", + "name-is-required": "Name is required", + "new-password": "New password", + "no-contact-found": "No contacts found", + "no-contact-selected": "No contact selected", + "no-contact-specified": "no contact specified", + "no-donors-found": "No donors found", + "no-license-text-could-be-found": "No license text could be found 😢", + "no-organization-or-team-found": "No organization or team found", + "no-organization-specified": "no organization specified", + "no-organizations-found": "No organizations found", + "no-runners-found": "No runners found", + "no-tracks-added-yet": "there are no tracks added yet.", + "organization": "Organization", + "organization-added": "Organization added", + "organization-deleted": "Organization deleted", + "organization-detail-is-being-loaded": "organization detail is being loaded...", + "organization-is-being-added": "Organization is being added...", + "organization-name-is-required": "Organization name is required", + "organizations": "Organizations", + "organizations-are-being-loaded": "organizations are being loaded...", + "orgs": "Organizations", + "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", + "password": "Password", + "password-is-required": "Password is required", + "password-reset-failed": "Password reset failed!", + "password-reset-in-progress": "Password Reset in Progress...", + "password-reset-mail-sent": "Password reset mail was sent to \"{usersEmail}\".", + "password-reset-successful": "Password Reset successful!", + "pdf-generation-failed": "PDF generation failed!", + "pdf-successfully-generated": "PDF successfully generated!", + "pdfs-successfully-generated": "PDFs successfully generated!", + "per-kilometer": "per Kilometer", + "permissions": "Permissions", + "permissions-updated": "Permissions updated!", + "phone": "Phone", + "please-provide-a-password": "Please provide a password...", + "please-provide-the-nessecary-information-to-add-a-new-donor": "Please provide the nessecary information to add a new donor", + "please-provide-the-nessecary-information-to-create-a-new-donation": "Please provide the nessecary information to create a new donation", + "please-provide-the-nessecary-information-to-create-a-new-scan": "Please provide the nessecary information to create a new scan.", + "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", + "please-provide-the-required-information-for-creating-a-new-user-group": "Please provide the required information for creating a new user group.", + "please-provide-the-required-information-to-add-a-new-contact": "Please provide the required information to add a new contact.", + "please-provide-the-required-information-to-add-a-new-organization": "Please provide the required information to add a new organization.", + "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", + "please-provide-the-required-information-to-add-a-new-team": "Please provide the required information to add a new team.", + "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", + "please-provide-the-required-information-to-add-a-new-user": "Please provide the required information to add a new user.", + "please-request-a-new-reset-mail": "Please request a new reset mail...", + "privacy": "Privacy", + "privacy-loading": "Privacy loading...", + "profile-picture": "Profile Picture", + "read-license": "Read License", + "receipt-needed": "Receipt needed", + "repo_link": "Link", + "request-a-new-reset-mail": "Request a new reset mail", + "reset-my-password": "Reset my password", + "reset-password": "Reset your password", + "runner": "Runner", + "runner-added": "Runner added", + "runner-import": "Runner Import", + "runner-is-being-added": "Runner is being added...", + "runner-updated": "Runner updated!", + "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", + "runners": "Runners", + "runners-are-being-imported": "Runners are being imported...", + "runners-are-being-loaded": "runners are being loaded...", + "save": "Save", + "save-changes": "Save Changes", + "scan-added": "Scan added", + "scan-is-being-updated": "Scan is being updated", + "scan-with-fixed-distance": "Scan with fixed distance", + "scans": "Scans", + "scans-are-being-loaded": "Scans are being loaded", + "scanstation": "Scanstation", + "scanstations": "Scanstations", + "scanstations-are-being-loaded": "Loading scanstations...", + "search-for-an-organization-by-name-or-id": "Search for an organization (by name or id)", + "search-for-an-organization-or-team-by-name-or-id": "Search for an organization or team (by name or id)", + "search-for-donor-name-or-id": "Search for donor (by name or id)", + "search-for-permission": "Search for permission", + "search-for-runner-by-name-or-id": "Search for runner (by name or id)", + "select-all": "select all", + "select-language": "Select language", + "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", + "set-the-user-active-inactive": "set the user active/ inactive", + "settings": "Settings", + "something-about-the-group": "Something about the group...", + "stats-are-being-loaded": "stats are being loaded...", + "status": "Status", + "successful-password-reset": "Successful password reset!", + "team": "Team", + "team-detail-is-being-loaded": "team detail is being loaded...", + "team-name": "Team name", + "team-name-is-required": "team name is required", + "teams": "Teams", + "teams-are-being-loaded": "teams are being loaded...", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.
    please enter a valid international number...", + "the-scans-distance-must-be-greater-than-0m": "The scan's distance must be greater than 0m", + "there-are-no-contacts-added-yet": "There are no contacts added yet.", + "there-are-no-donors-yet": "There are no donors yet", + "there-are-no-groups-yet": "There are no groups yet", + "there-are-no-organizations-added-yet": "There are no organizations added yet.", + "there-are-no-runners-added-yet": "There are no runners added yet.", + "there-are-no-scans-yet": "There are no scans yet", + "there-are-no-teams-added-yet": "There are no teams added yet.", + "there-are-no-users-added-yet": "There are no users added yet.", + "this-might-take-a-moment": "This might take a moment 👀", + "this-scanstation-is": "This scanstation is", + "total-distance": "total distance", + "total-donation-amount": "total donation amount", + "total-donations": "total donations", + "total-scans": "total scans", + "track": "Track", + "track-added": "Track added", + "track-data-is-being-loaded": "Track data is being loaded", + "track-is-being-added": "Track is being added...", + "track-length-in-m": "Track Length in m", + "track-length-must-be-greater-than-0": "Track length must be greater than 0", + "track-name": "Track name", + "track-name-must-not-be-empty": "Track name must not be empty", + "tracks": "Tracks", + "updated-contact": "Updated contact!", + "updated-donor": "updated donor", + "updated-organization": "updated organization", + "updated-scan": "updated scan", + "updateing-group": "updateing group...", + "updating-organization": "updating organization", + "updating-permissions": "updating permissions...", + "updating-runner": "Updating runner...", + "updating-user": "updating user...", + "user-added": "User added", + "user-groups": "User Groups", + "user-is-being-added": "User is being added...", + "user-updated": "User updated", + "username": "Username", + "users": "Users", + "valid": "Valid", + "valid-city-is-required": "Valid city is required", + "valid-email-is-required": "valid email is required", + "valid-international-phone-number-is-required": "valid international phone number is required...", + "valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required", + "verfuegbare": "availdable", + "welcome_wavinghand": "Welcome 👋", + "yes-i-copied-the-token": "Yes, I copied the token", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", + "you-have-to-provide-an-organization": "You have to provide an organization", + "zip-postal-code": "ZIP/ postal code", + "settings-for-your-profile": "Settings for your profile" +} From e459bb04cc3fcdc5d176e53b764ad3e995d66762 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 19 Mar 2021 17:17:57 +0100 Subject: [PATCH 268/359] The settings page now boasts your profile picture ref #103 --- src/components/settings/Settings.svelte | 70 +++++++++++++++++++------ src/locales/de.json | 4 +- src/locales/en.json | 4 +- 3 files changed, 59 insertions(+), 19 deletions(-) diff --git a/src/components/settings/Settings.svelte b/src/components/settings/Settings.svelte index 42fd8aa2..75397572 100644 --- a/src/components/settings/Settings.svelte +++ b/src/components/settings/Settings.svelte @@ -1,6 +1,12 @@
    @@ -9,27 +15,57 @@ class="mt-9 font-display text-4xl leading-none font-semibold text-white sm:text-5xl lg:text-6xl"> 🔨
    {$_('settings')} -

    - {$_('settings-for-your-profile')} -

    - -
    -

    - Lorem ipsum dolor sit amet consectetur, adipisicing elit. Temporibus et - amet voluptate nulla accusantium vero blanditiis nobis facere veritatis. - Impedit deserunt saepe aliquid unde consequuntur officia consequatur - fugit iusto dolorem? -

    +
    +
    +
    +
    +

    + {$_('profile')} +

    +

    + {$_('everything-concerning-your-profile')} +

    +
    +
    +
    +
    +
    +
    + + +
    + + {$_('profile-picture')} + + +
    +
    +
    +
    + +
    +
    +
    +
    -
    diff --git a/src/locales/de.json b/src/locales/de.json index 9bc3c022..52c1e4d7 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -351,5 +351,7 @@ "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", "zip-postal-code": "Postleitzahl", - "settings-for-your-profile": "Die Einstellungen deines Accounts" + "settings-for-your-profile": "Die Einstellungen deines Accounts", + "profile": "Profil", + "everything-concerning-your-profile": "Alles zu deinem Profil" } diff --git a/src/locales/en.json b/src/locales/en.json index 69998922..856ca571 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -351,5 +351,7 @@ "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", "you-have-to-provide-an-organization": "You have to provide an organization", "zip-postal-code": "ZIP/ postal code", - "settings-for-your-profile": "Settings for your profile" + "settings-for-your-profile": "Settings for your profile", + "profile": "Profile", + "everything-concerning-your-profile": "Everything concerning your profile" } From 37bc5ff17b8f97dfc76962435f9cb64156848c82 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 19 Mar 2021 17:31:45 +0100 Subject: [PATCH 269/359] Implemented change detection ref #103 --- src/components/settings/Settings.svelte | 127 +++++++++++++++++++----- 1 file changed, 101 insertions(+), 26 deletions(-) diff --git a/src/components/settings/Settings.svelte b/src/components/settings/Settings.svelte index 75397572..24d7499b 100644 --- a/src/components/settings/Settings.svelte +++ b/src/components/settings/Settings.svelte @@ -1,8 +1,13 @@
    @@ -57,7 +79,7 @@ {$_('profile-picture')} + src={editable.profilePic || 'https://lauf-fuer-kaya.de/lfk-logo.png'} /> + + +{#if store.state.jwtinfo.userdetails.permissions.includes('CARD:CREATE')} + +{/if} diff --git a/src/locales/de.json b/src/locales/de.json index cbde06c3..47a68a28 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1,380 +1,382 @@ { - "404message": "Die gesuchte Seite wurde leider nicht gefunden.", - "404title": "Fehler 404", - "about": "Über", - "action": "Aktionen", - "active": "Aktiv", - "add-donation": "Sponsoring erstellen", - "add-donor": "Sponsor:in erstellen", - "add-scan": "Scan erstellen", - "add-the-first-scanstation": "Erstelle deine erste Scannerstation.", - "add-user-group": "Neue Gruppe erstellen", - "add-your-first-contact": "Erstelle den ersten Kontakt", - "add-your-first-donor": "Erstelle die erste Sponsor:in", - "add-your-first-group": "Erstelle die erste Gruppe", - "add-your-first-organization": "Erstelle die erste Organisation", - "add-your-first-runner": "Erstelle die erste Läufer:in", - "add-your-first-team": "Erstelle das erste Team", - "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", - "add-your-first-user": "Erstelle die erste Benutzer:in", - "add-your-fist-donation": "Erstelle dein erstes Sponsoring", - "add-your-fist-scan": "Füge deinen ersten Scan hinzu", - "adding-scan": "Scan wird hinzugefügt", - "address": "Adresse", - "address-is-required": "Du musst eine Adresse angeben", - "after-deletion-we-cant-restore-your-old-profile": "Nach der Löschung können auch die Admins dein Profil nicht wiederherstellen!", - "after-the-update-youll-get-logged-out-please-login-with-your-new-password-after-that": "Nach der Änderung wirst du abgemeldet - bitte melde dich dann mit deinem neuen Passwort an.", - "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", - "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", - "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", - "amount-per-kilometer": "Betrag pro Kilometer", - "apartment-suite-etc": "Apartment, Wohnung, etc.", - "application_name": "Lauf für Kaya! - Admin", - "applying-changes": "Änderungen anwenden", - "attention": "Achtung!", - "author": "Autor:in", - "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", - "by": "von", - "cancel": "Abbrechen", - "cancel-delete": "Löschen abbrechen", - "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", - "cancel-keep-my-profile": "Abbrechen, mein Profil behalten", - "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", - "cancel-keep-team": "Abbrechen, Team behalten", - "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", - "change-your-password-here": "Hier kannst du dein Passwort ändern", - "changing-your-password": "Passwort wird geändert", - "city": "Stadt", - "close": "Schließen", - "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", - "confirm": "Bestätigen", - "confirm-delete": "Löschung Bestätigen", - "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", - "confirm-delete-my-user-profile": "Bestätigung, mein Benutzerprofil löschen", - "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", - "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", - "confirm-deletion": "Löschung Bestätigen", - "confirm-the-new-password": "Neues Passwort bestätigen", - "contact": "Kontakt", - "contact-deleted": "Kontakt gelöscht", - "contact-information": "Kontaktinformation", - "contact-is-being-updated": "Kontakt wird aktualisiert ...", - "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", - "contacts": "Kontakte", - "contacts-are-being-loaded": "Kontakte werden geladen ...", - "count_organizations": "Organisationen (Anzahl)", - "count_teams": "Teams (Anzahl)", - "create": "Erstellen", - "create-a-new": "Erstelle eine neue", - "create-a-new-contact": "Kontakt erstellen", - "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", - "create-a-new-donor": "Neue Sponsor:in erstellen", - "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", - "create-a-new-organization": "Neue Organisation anlegen", - "create-a-new-runner": "Neue Läufer:in erstellen", - "create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)", - "create-a-new-scanstation": "Neue Station erstellen", - "create-a-new-team": "Erstelle ein neues Team", - "create-a-new-track": "Neuen Track erstellen", - "create-a-new-user": "Neue Benutzer:in anlegen", - "create-a-new-user-group": "Erstelle eine neue Gruppe", - "create-organization": "Organisation erstellen", - "create-team": "Team erstellen", - "create-track": "Track erstellen", - "create-user": "Benutzer anlegen", - "credits": "Credits", - "csv_import__class": "Klasse", - "csv_import__firstname": "Vorname", - "csv_import__lastname": "Nachname", - "csv_import__middlename": "Mittelname", - "csv_import__team": "Team", - "danger-zone": "Gefahrenzone", - "dashboard-greeting": "Hallo", - "dashboard-title": "Dashboard", - "datatable": { - "search": "🔍 Suche ...", - "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", - "loading": "Wird geladen...", - "next": "Nächste", - "of": "von", - "previous": "Vorherige", - "to": "bis", - "showing": "Zeige", - "no_matching_records_found": "Keine passenden Einträge gefunden", - "page": "Seite", - "records": "Einträge", - "sort_column_ascending": "Spalte aufsteigend sortieren", - "sort_column_descending": "Spalte absteigend sortieren" - }, - "delete": "Löschen", - "delete-contact": "Kontakt löschen", - "delete-donation": "Sponsporing löschen", - "delete-donor": "Sponsor:in löschen", - "delete-group": "Gruppe löschen", - "delete-organization": "Organisation löschen", - "delete-profile": "Profil löschen", - "delete-runner": "Läufer:in löschen", - "delete-scan": "Scan löschen", - "delete-station": "Station löschen", - "delete-team": "Team Löschen", - "delete-user": "Benutzer:in löschen", - "deleted-scan": "Scan wurde gelöscht", - "dependency_name": "Name", - "description": "Beschreibung", - "description-optional": "Beschreibung (optional)", - "deselect-all": "Alle abwählen", - "details": "Details", - "distance": "Distanz", - "distance-donation": "Sponsoring", - "distance-in-km": "Distanz (in KM)", - "distance-track": "Distanz (+Track)", - "do-you-really-want-to-delete-your-profile": "Möchtest du dein Profil wirklich löschen?", - "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", - "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", - "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", - "documentation": "Dokumentation", - "donation-amount": "Sponsoringbetrag", - "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", - "donations": "Sponsorings", - "donor": "Sponsor:in", - "donor-added": "Sponsor:in hinzugefügt", - "donor-deleted": "Sponsor:in gelöscht", - "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", - "donor-is-being-added": "Sponsor:in wird hinzugefügt...", - "donor-is-being-updated": "Sponsor:in wird aktualisiert", - "donors": "Sponsor:innen", - "donors-are-being-loaded": "Sponsor:innen werden geladen", - "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", - "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", - "e-mail-adress": "E-Mail-Adresse", - "edit": "Bearbeiten", - "edit-permissions": "Berechtigungen bearbeiten", - "email_address_or_username": "E-Mail-Adresse/ Benutzername", - "enabled": "aktiviert", - "english": "Englisch", - "error_on_login": "😢Fehler beim Login", - "erteilte": "Direkt erteilte", - "everything-concerning-your-profile": "Alles zu deinem Profil", - "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", - "faq": "FAQ", - "filter-by-organization-team": "Filtern nach Organisation / Team", - "first-name": "Vorname", - "first-name-is-required": "Vorname muss angegeben werden", - "first-scan-of-the-day": "Erster Scan des Tages", - "fixed-donation": "Festbetragsspende", - "forgot_password": "Passwort vergessen?", - "geerbte": "geerbte", - "general-stats": "Allgemeine Statistiken", - "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", - "generate-sponsoring-contract": "Sponsoringvertrag generieren", - "generate-sponsoring-contracts": "Sponsoringverträge generieren", - "generating-pdf": "Pdf wird generiert...", - "generating-pdfs": "PDFs werden generiert...", - "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", - "german": "Deutsch", - "go-to-login": "Zum Login", - "goback": "Zur Startseite", - "granted": "Gewährt", - "group": "Gruppe", - "group-added": "Gruppe hinzugefügt", - "group-is-being-added": "Gruppe wird erstellt", - "group-name-is-required": "Der Gruppenname muss angegeben werden.", - "group-updated": "Gruppe aktualisiert", - "groups": "Gruppen", - "groups-are-being-loaded": "Gruppen werden geladen", - "home": "Start", - "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", - "import-finished": "Import abgeschlossen", - "import-runners": "Läufer:innen importieren", - "import__target-organization": "Ziel Organisation", - "imprint": "Impressum ", - "imprint-loading": "Impressum lädt...", - "inactive": "Inaktiv", - "installed-version": "Installierte Version", - "internal-error": "Interner Fehler", - "invalid": "Ungültig", - "invalid-mail-reset": "Das ist keine gültige E-Mail", - "laeufer-hinzufuegen": "Läufer:in hinzufügen", - "laeufer-importieren": "Läufer:innen importieren", - "laptime": "Rundenzeit", - "last-name": "Nachname", - "last-name-is-required": "Nachname muss angegeben werden", - "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", - "license": "Lizenz", - "licenses-are-being-loaded": "Lizenzen werden geladen...", - "loading-contact-details": "Kontaktdaten werden geladen ...", - "loading-donation-details": "Lade Sponsoringdetails", - "loading-donor-details": "Lade Details", - "loading-group-detail": "Lade Gruppendetails...", - "loading-profile-data": "Lade Profildaten", - "loading-runners": "Läufer:innen werden geladen...", - "loading-station-details": "Lade Scanstation-Details ...", - "log_in": "Anmelden", - "log_in_to_your_account": "Bitte melde dich an", - "login_is_checked": "Login wird überprüft", - "logout": "Abmelden", - "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", - "manage-admin-users": "Nutzer verwalten", - "middle-name": "Mittelname", - "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", - "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", - "name": "Name", - "name-is-required": "Der Gruppenname muss angegeben werden", - "new-password": "Neues Passwort", - "no-contact-found": "Keine Kontakte gefunden", - "no-contact-selected": "Kein Kontakt ausgewählt", - "no-contact-specified": "Kein Kontakt angegeben", - "no-donors-found": "Keine Spender:innen gefunden", - "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", - "no-organization-or-team-found": "Keine Organisationen oder Teams gefunden", - "no-organization-specified": "Keine Organisation angegeben", - "no-organizations-found": "Keine Organisationen gefunden", - "no-runners-found": "Keine Läufer:innen gefunden", - "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", - "organization": "Organisation", - "organization-added": "Organisation hinzugefügt", - "organization-deleted": "Organisation gelöscht", - "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", - "organization-is-being-added": "Organisation wird hinzugefügt ...", - "organization-name-is-required": "Der Name muss angegeben werden", - "organizations": "Organisationen", - "organizations-are-being-loaded": "Organisationen werden geladen ...", - "orgs": "Organisationen", - "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", - "password": "Passwort", - "password-changed": "Passwort wurde aktualisiert!", - "password-is-required": "Passwort muss angegeben werden", - "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", - "password-reset-in-progress": "Passwort wird zurückgesetzt...", - "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", - "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", - "passwords-dont-match": "Die Passwörter stimmen nicht überein.", - "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", - "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", - "pdfs-successfully-generated": "Alle PDFs wurden generiert!", - "per-kilometer": "pro Kilometer", - "permissions": "Berechtigungen", - "permissions-updated": "Berechtigungen aktualisiert!", - "phone": "Telefon", - "please-provide-a-password": "Bitte gebe ein Passwort an...", - "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", - "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", - "please-provide-the-nessecary-information-to-create-a-new-scan": "Bitte gebe alle notwendigen Informationen an, um einen neuen Scan zu erstellen.", - "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", - "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", - "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", - "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", - "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", - "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", - "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", - "privacy": "Datenschutz", - "privacy-loading": "Datenschutzerklärung lädt...", - "profile": "Profil", - "profile-picture": "Profilbild", - "profile-updated": "Profil wurde aktualisiert!", - "read-license": "Lizenz-Text lesen", - "receipt-needed": "Spendenquittung benötigt", - "repo_link": "Link", - "request-a-new-reset-mail": "Neue Reset-Mail anfordern", - "reset-my-password": "Passwort zurücksetzen", - "reset-password": "Passwort zurücksetzen", - "runner": "Läufer:in", - "runner-added": "Läufer:in hinzugefügt", - "runner-import": "Läufer:innen Import", - "runner-is-being-added": "Läufer:in wird hinzugefügt...", - "runner-updated": "Läufer:in aktualisiert!", - "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", - "runners": "Läufer", - "runners-are-being-imported": "Läufer:innen werden importiert ...", - "runners-are-being-loaded": "Läufer:innen werden geladen ...", - "save": "Speichern", - "save-changes": "Änderungen speichern", - "scan-added": "Scan hinzugefügt", - "scan-is-being-updated": "Scan wird aktualisiert", - "scan-with-fixed-distance": "Scan mit Festdistanz", - "scans": "Scans", - "scans-are-being-loaded": "Scans werden geladen", - "scanstation": "Scanner Station", - "scanstations": "Scanner Stationen", - "scanstations-are-being-loaded": "Scannerstationen werden geladen...", - "search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)", - "search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)", - "search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)", - "search-for-permission": "Berechtigungen durchsuchen", - "search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)", - "select-all": "Alle auswählen", - "select-language": "Sprache auswählen", - "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", - "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", - "settings": "Einstellungen", - "settings-for-your-profile": "Die Einstellungen deines Accounts", - "something-about-the-group": "Infos zur Gruppe", - "stats-are-being-loaded": "Die Statistiken werden geladen...", - "status": "Status", - "stuff-that-could-harm-your-profile": "Einstellungen, die deinem Profil nachhaltig schaden können", - "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", - "team": "Team", - "team-detail-is-being-loaded": "Team wird geladen...", - "team-name": "Teamname", - "team-name-is-required": "Teamname ist erforderlich", - "teams": "Teams", - "teams-are-being-loaded": "Teams werden geladen ...", - "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", - "the-scans-distance-must-be-greater-than-0m": "Die Distanz muss größer als 0m sein.", - "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", - "there-are-no-donations-yet": "Es gibt noch keine Sponsorings", - "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", - "there-are-no-groups-yet": "Es gibt noch keine Gruppen", - "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", - "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", - "there-are-no-scans-yet": "Es gibt noch keine Scans", - "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", - "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", - "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", - "this-scanstation-is": "Diese Station ist", - "total-distance": "gelaufene Strecke", - "total-donation-amount": "Gesamtbetrag", - "total-donations": "Spendensumme", - "total-scans": "gesamte Scans", - "track": "Track", - "track-added": "Track hinzugefügt", - "track-data-is-being-loaded": "Trackdaten werden geladen", - "track-is-being-added": "Track wird hinzugefügt...", - "track-length-in-m": "Tracklänge (in Metern)", - "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", - "track-name": "Trackname", - "track-name-must-not-be-empty": "Der Name muss angegeben werden", - "tracks": "Tracks", - "update-password": "Passwort ändern", - "updated-contact": "Kontakt aktualisiert!", - "updated-donor": "Sponsor:in wurde aktualisiert", - "updated-organization": "Organisation wurde aktualisiert", - "updated-scan": "Scan wurde aktualisiert", - "updateing-group": "Gruppe wird aktualisiert...", - "updating-organization": "Organisation wird aktualisiert", - "updating-permissions": "Berechtigungen werden aktualisiert...", - "updating-runner": "Läufer:in wird aktualisiert.", - "updating-user": "Benutzer:in wird aktualisiert...", - "updating-your-profile": "Profil wird aktualisiert...", - "user-added": "Benutzer hinzugefügt", - "user-groups": "Benutzergruppen", - "user-is-being-added": "Benutzer wird hinzugefügt ...", - "user-updated": "Benutzer:in wurde aktualisiert", - "username": "Benutzername", - "users": "Benutzer", - "valid": "Gültig", - "valid-city-is-required": "Du musst eine Stadt angeben", - "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", - "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", - "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", - "verfuegbare": "Verfügbar", - "welcome_wavinghand": "Willkommen 👋", - "yes-i-copied-the-token": "Ja, ich habe den Token kopiert", - "you-are-going-to-loose-all-permissions-and-access-to-the-runner-system": "Du wirst all deine Berechtigungen und den Zugriff aufs Läufersystem verlieren!", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", - "you-dont-have-any-scanstations-yet": "Es gibt noch keine Scannerstationen", - "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", - "zip-postal-code": "Postleitzahl" -} \ No newline at end of file + "404message": "Die gesuchte Seite wurde leider nicht gefunden.", + "404title": "Fehler 404", + "about": "Über", + "action": "Aktionen", + "active": "Aktiv", + "add-donation": "Sponsoring erstellen", + "add-donor": "Sponsor:in erstellen", + "add-scan": "Scan erstellen", + "add-the-first-scanstation": "Erstelle deine erste Scannerstation.", + "add-user-group": "Neue Gruppe erstellen", + "add-your-first-contact": "Erstelle den ersten Kontakt", + "add-your-first-donor": "Erstelle die erste Sponsor:in", + "add-your-first-group": "Erstelle die erste Gruppe", + "add-your-first-organization": "Erstelle die erste Organisation", + "add-your-first-runner": "Erstelle die erste Läufer:in", + "add-your-first-team": "Erstelle das erste Team", + "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", + "add-your-first-user": "Erstelle die erste Benutzer:in", + "add-your-fist-donation": "Erstelle dein erstes Sponsoring", + "add-your-fist-scan": "Füge deinen ersten Scan hinzu", + "adding-scan": "Scan wird hinzugefügt", + "address": "Adresse", + "address-is-required": "Du musst eine Adresse angeben", + "after-deletion-we-cant-restore-your-old-profile": "Nach der Löschung können auch die Admins dein Profil nicht wiederherstellen!", + "after-the-update-youll-get-logged-out-please-login-with-your-new-password-after-that": "Nach der Änderung wirst du abgemeldet - bitte melde dich dann mit deinem neuen Passwort an.", + "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", + "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", + "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", + "amount-per-kilometer": "Betrag pro Kilometer", + "apartment-suite-etc": "Apartment, Wohnung, etc.", + "application_name": "Lauf für Kaya! - Admin", + "applying-changes": "Änderungen anwenden", + "attention": "Achtung!", + "author": "Autor:in", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", + "by": "von", + "cancel": "Abbrechen", + "cancel-delete": "Löschen abbrechen", + "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", + "cancel-keep-my-profile": "Abbrechen, mein Profil behalten", + "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", + "cancel-keep-team": "Abbrechen, Team behalten", + "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", + "change-your-password-here": "Hier kannst du dein Passwort ändern", + "changing-your-password": "Passwort wird geändert", + "city": "Stadt", + "close": "Schließen", + "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", + "confirm": "Bestätigen", + "confirm-delete": "Löschung Bestätigen", + "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", + "confirm-delete-my-user-profile": "Bestätigung, mein Benutzerprofil löschen", + "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", + "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", + "confirm-deletion": "Löschung Bestätigen", + "confirm-the-new-password": "Neues Passwort bestätigen", + "contact": "Kontakt", + "contact-deleted": "Kontakt gelöscht", + "contact-information": "Kontaktinformation", + "contact-is-being-updated": "Kontakt wird aktualisiert ...", + "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", + "contacts": "Kontakte", + "contacts-are-being-loaded": "Kontakte werden geladen ...", + "count_organizations": "Organisationen (Anzahl)", + "count_teams": "Teams (Anzahl)", + "create": "Erstellen", + "create-a-new": "Erstelle eine neue", + "create-a-new-contact": "Kontakt erstellen", + "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", + "create-a-new-donor": "Neue Sponsor:in erstellen", + "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", + "create-a-new-organization": "Neue Organisation anlegen", + "create-a-new-runner": "Neue Läufer:in erstellen", + "create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)", + "create-a-new-scanstation": "Neue Station erstellen", + "create-a-new-team": "Erstelle ein neues Team", + "create-a-new-track": "Neuen Track erstellen", + "create-a-new-user": "Neue Benutzer:in anlegen", + "create-a-new-user-group": "Erstelle eine neue Gruppe", + "create-organization": "Organisation erstellen", + "create-team": "Team erstellen", + "create-track": "Track erstellen", + "create-user": "Benutzer anlegen", + "credits": "Credits", + "csv_import__class": "Klasse", + "csv_import__firstname": "Vorname", + "csv_import__lastname": "Nachname", + "csv_import__middlename": "Mittelname", + "csv_import__team": "Team", + "danger-zone": "Gefahrenzone", + "dashboard-greeting": "Hallo", + "dashboard-title": "Dashboard", + "datatable": { + "search": "🔍 Suche ...", + "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", + "loading": "Wird geladen...", + "next": "Nächste", + "of": "von", + "previous": "Vorherige", + "to": "bis", + "showing": "Zeige", + "no_matching_records_found": "Keine passenden Einträge gefunden", + "page": "Seite", + "records": "Einträge", + "sort_column_ascending": "Spalte aufsteigend sortieren", + "sort_column_descending": "Spalte absteigend sortieren" + }, + "delete": "Löschen", + "delete-contact": "Kontakt löschen", + "delete-donation": "Sponsporing löschen", + "delete-donor": "Sponsor:in löschen", + "delete-group": "Gruppe löschen", + "delete-organization": "Organisation löschen", + "delete-profile": "Profil löschen", + "delete-runner": "Läufer:in löschen", + "delete-scan": "Scan löschen", + "delete-station": "Station löschen", + "delete-team": "Team Löschen", + "delete-user": "Benutzer:in löschen", + "deleted-scan": "Scan wurde gelöscht", + "dependency_name": "Name", + "description": "Beschreibung", + "description-optional": "Beschreibung (optional)", + "deselect-all": "Alle abwählen", + "details": "Details", + "distance": "Distanz", + "distance-donation": "Sponsoring", + "distance-in-km": "Distanz (in KM)", + "distance-track": "Distanz (+Track)", + "do-you-really-want-to-delete-your-profile": "Möchtest du dein Profil wirklich löschen?", + "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", + "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", + "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", + "documentation": "Dokumentation", + "donation-amount": "Sponsoringbetrag", + "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", + "donations": "Sponsorings", + "donor": "Sponsor:in", + "donor-added": "Sponsor:in hinzugefügt", + "donor-deleted": "Sponsor:in gelöscht", + "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", + "donor-is-being-added": "Sponsor:in wird hinzugefügt...", + "donor-is-being-updated": "Sponsor:in wird aktualisiert", + "donors": "Sponsor:innen", + "donors-are-being-loaded": "Sponsor:innen werden geladen", + "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", + "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", + "e-mail-adress": "E-Mail-Adresse", + "edit": "Bearbeiten", + "edit-permissions": "Berechtigungen bearbeiten", + "email_address_or_username": "E-Mail-Adresse/ Benutzername", + "enabled": "aktiviert", + "english": "Englisch", + "error_on_login": "😢Fehler beim Login", + "erteilte": "Direkt erteilte", + "everything-concerning-your-profile": "Alles zu deinem Profil", + "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", + "faq": "FAQ", + "filter-by-organization-team": "Filtern nach Organisation / Team", + "first-name": "Vorname", + "first-name-is-required": "Vorname muss angegeben werden", + "first-scan-of-the-day": "Erster Scan des Tages", + "fixed-donation": "Festbetragsspende", + "forgot_password": "Passwort vergessen?", + "geerbte": "geerbte", + "general-stats": "Allgemeine Statistiken", + "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", + "generate-sponsoring-contract": "Sponsoringvertrag generieren", + "generate-sponsoring-contracts": "Sponsoringverträge generieren", + "generating-pdf": "Pdf wird generiert...", + "generating-pdfs": "PDFs werden generiert...", + "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", + "german": "Deutsch", + "go-to-login": "Zum Login", + "goback": "Zur Startseite", + "granted": "Gewährt", + "group": "Gruppe", + "group-added": "Gruppe hinzugefügt", + "group-is-being-added": "Gruppe wird erstellt", + "group-name-is-required": "Der Gruppenname muss angegeben werden.", + "group-updated": "Gruppe aktualisiert", + "groups": "Gruppen", + "groups-are-being-loaded": "Gruppen werden geladen", + "home": "Start", + "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", + "import-finished": "Import abgeschlossen", + "import-runners": "Läufer:innen importieren", + "import__target-organization": "Ziel Organisation", + "imprint": "Impressum ", + "imprint-loading": "Impressum lädt...", + "inactive": "Inaktiv", + "installed-version": "Installierte Version", + "internal-error": "Interner Fehler", + "invalid": "Ungültig", + "invalid-mail-reset": "Das ist keine gültige E-Mail", + "laeufer-hinzufuegen": "Läufer:in hinzufügen", + "laeufer-importieren": "Läufer:innen importieren", + "laptime": "Rundenzeit", + "last-name": "Nachname", + "last-name-is-required": "Nachname muss angegeben werden", + "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", + "license": "Lizenz", + "licenses-are-being-loaded": "Lizenzen werden geladen...", + "loading-contact-details": "Kontaktdaten werden geladen ...", + "loading-donation-details": "Lade Sponsoringdetails", + "loading-donor-details": "Lade Details", + "loading-group-detail": "Lade Gruppendetails...", + "loading-profile-data": "Lade Profildaten", + "loading-runners": "Läufer:innen werden geladen...", + "loading-station-details": "Lade Scanstation-Details ...", + "log_in": "Anmelden", + "log_in_to_your_account": "Bitte melde dich an", + "login_is_checked": "Login wird überprüft", + "logout": "Abmelden", + "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", + "manage-admin-users": "Nutzer verwalten", + "middle-name": "Mittelname", + "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", + "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", + "name": "Name", + "name-is-required": "Der Gruppenname muss angegeben werden", + "new-password": "Neues Passwort", + "no-contact-found": "Keine Kontakte gefunden", + "no-contact-selected": "Kein Kontakt ausgewählt", + "no-contact-specified": "Kein Kontakt angegeben", + "no-donors-found": "Keine Spender:innen gefunden", + "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", + "no-organization-or-team-found": "Keine Organisationen oder Teams gefunden", + "no-organization-specified": "Keine Organisation angegeben", + "no-organizations-found": "Keine Organisationen gefunden", + "no-runners-found": "Keine Läufer:innen gefunden", + "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", + "organization": "Organisation", + "organization-added": "Organisation hinzugefügt", + "organization-deleted": "Organisation gelöscht", + "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", + "organization-is-being-added": "Organisation wird hinzugefügt ...", + "organization-name-is-required": "Der Name muss angegeben werden", + "organizations": "Organisationen", + "organizations-are-being-loaded": "Organisationen werden geladen ...", + "orgs": "Organisationen", + "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", + "password": "Passwort", + "password-changed": "Passwort wurde aktualisiert!", + "password-is-required": "Passwort muss angegeben werden", + "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", + "password-reset-in-progress": "Passwort wird zurückgesetzt...", + "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", + "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", + "passwords-dont-match": "Die Passwörter stimmen nicht überein.", + "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", + "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", + "pdfs-successfully-generated": "Alle PDFs wurden generiert!", + "per-kilometer": "pro Kilometer", + "permissions": "Berechtigungen", + "permissions-updated": "Berechtigungen aktualisiert!", + "phone": "Telefon", + "please-provide-a-password": "Bitte gebe ein Passwort an...", + "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", + "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", + "please-provide-the-nessecary-information-to-create-a-new-scan": "Bitte gebe alle notwendigen Informationen an, um einen neuen Scan zu erstellen.", + "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", + "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", + "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", + "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", + "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", + "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", + "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", + "privacy": "Datenschutz", + "privacy-loading": "Datenschutzerklärung lädt...", + "profile": "Profil", + "profile-picture": "Profilbild", + "profile-updated": "Profil wurde aktualisiert!", + "read-license": "Lizenz-Text lesen", + "receipt-needed": "Spendenquittung benötigt", + "repo_link": "Link", + "request-a-new-reset-mail": "Neue Reset-Mail anfordern", + "reset-my-password": "Passwort zurücksetzen", + "reset-password": "Passwort zurücksetzen", + "runner": "Läufer:in", + "runner-added": "Läufer:in hinzugefügt", + "runner-import": "Läufer:innen Import", + "runner-is-being-added": "Läufer:in wird hinzugefügt...", + "runner-updated": "Läufer:in aktualisiert!", + "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", + "runners": "Läufer", + "runners-are-being-imported": "Läufer:innen werden importiert ...", + "runners-are-being-loaded": "Läufer:innen werden geladen ...", + "save": "Speichern", + "save-changes": "Änderungen speichern", + "scan-added": "Scan hinzugefügt", + "scan-is-being-updated": "Scan wird aktualisiert", + "scan-with-fixed-distance": "Scan mit Festdistanz", + "scans": "Scans", + "scans-are-being-loaded": "Scans werden geladen", + "scanstation": "Scanner Station", + "scanstations": "Scanner Stationen", + "scanstations-are-being-loaded": "Scannerstationen werden geladen...", + "search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)", + "search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)", + "search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)", + "search-for-permission": "Berechtigungen durchsuchen", + "search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)", + "select-all": "Alle auswählen", + "select-language": "Sprache auswählen", + "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", + "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", + "settings": "Einstellungen", + "settings-for-your-profile": "Die Einstellungen deines Accounts", + "something-about-the-group": "Infos zur Gruppe", + "stats-are-being-loaded": "Die Statistiken werden geladen...", + "status": "Status", + "stuff-that-could-harm-your-profile": "Einstellungen, die deinem Profil nachhaltig schaden können", + "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", + "team": "Team", + "team-detail-is-being-loaded": "Team wird geladen...", + "team-name": "Teamname", + "team-name-is-required": "Teamname ist erforderlich", + "teams": "Teams", + "teams-are-being-loaded": "Teams werden geladen ...", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", + "the-scans-distance-must-be-greater-than-0m": "Die Distanz muss größer als 0m sein.", + "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", + "there-are-no-donations-yet": "Es gibt noch keine Sponsorings", + "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", + "there-are-no-groups-yet": "Es gibt noch keine Gruppen", + "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", + "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", + "there-are-no-scans-yet": "Es gibt noch keine Scans", + "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", + "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", + "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", + "this-scanstation-is": "Diese Station ist", + "total-distance": "gelaufene Strecke", + "total-donation-amount": "Gesamtbetrag", + "total-donations": "Spendensumme", + "total-scans": "gesamte Scans", + "track": "Track", + "track-added": "Track hinzugefügt", + "track-data-is-being-loaded": "Trackdaten werden geladen", + "track-is-being-added": "Track wird hinzugefügt...", + "track-length-in-m": "Tracklänge (in Metern)", + "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", + "track-name": "Trackname", + "track-name-must-not-be-empty": "Der Name muss angegeben werden", + "tracks": "Tracks", + "update-password": "Passwort ändern", + "updated-contact": "Kontakt aktualisiert!", + "updated-donor": "Sponsor:in wurde aktualisiert", + "updated-organization": "Organisation wurde aktualisiert", + "updated-scan": "Scan wurde aktualisiert", + "updateing-group": "Gruppe wird aktualisiert...", + "updating-organization": "Organisation wird aktualisiert", + "updating-permissions": "Berechtigungen werden aktualisiert...", + "updating-runner": "Läufer:in wird aktualisiert.", + "updating-user": "Benutzer:in wird aktualisiert...", + "updating-your-profile": "Profil wird aktualisiert...", + "user-added": "Benutzer hinzugefügt", + "user-groups": "Benutzergruppen", + "user-is-being-added": "Benutzer wird hinzugefügt ...", + "user-updated": "Benutzer:in wurde aktualisiert", + "username": "Benutzername", + "users": "Benutzer", + "valid": "Gültig", + "valid-city-is-required": "Du musst eine Stadt angeben", + "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", + "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", + "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", + "verfuegbare": "Verfügbar", + "welcome_wavinghand": "Willkommen 👋", + "yes-i-copied-the-token": "Ja, ich habe den Token kopiert", + "you-are-going-to-loose-all-permissions-and-access-to-the-runner-system": "Du wirst all deine Berechtigungen und den Zugriff aufs Läufersystem verlieren!", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", + "you-dont-have-any-scanstations-yet": "Es gibt noch keine Scannerstationen", + "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", + "zip-postal-code": "Postleitzahl", + "cards": "Läuferkarten", + "add-card": "Karte erstellen" +} diff --git a/src/locales/en.json b/src/locales/en.json index 24544ac8..8bef7043 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,380 +1,382 @@ { - "404message": "Sorry, the page you are looking for could not be found.", - "404title": "Error 404", - "about": "About", - "action": "Action", - "active": "Active", - "add-donation": "Add donation", - "add-donor": "add donor", - "add-scan": "Add scan", - "add-the-first-scanstation": "Add your first scanstation.", - "add-user-group": "Add User Group", - "add-your-first-contact": "Add your first contact", - "add-your-first-donor": "add your first donor", - "add-your-first-group": "Add your first group", - "add-your-first-organization": "Add your first organization", - "add-your-first-runner": "Add your first runner", - "add-your-first-team": "Add your first team", - "add-your-first-track": "Add your first track.", - "add-your-first-user": "Add your first user", - "add-your-fist-donation": "Add your fist donation", - "add-your-fist-scan": "Add your fist scan", - "adding-scan": "Adding Scan", - "address": "Address", - "address-is-required": "Address is required", - "after-deletion-we-cant-restore-your-old-profile": "After deletion we can't restore your old profile!", - "after-the-update-youll-get-logged-out-please-login-with-your-new-password-after-that": "After the update you'll get logged out - Please login with your new password after that.", - "all-associated-donations-will-get-deleted-as-well": "All associated donations will get deleted as well", - "all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!", - "all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!", - "amount-per-kilometer": "Amount per kilometer", - "apartment-suite-etc": "Apartment, suite, etc.", - "application_name": "Lauf für Kaya! - Admin", - "applying-changes": "Applying Changes", - "attention": "Attention!", - "author": "Author", - "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.", - "by": "by", - "cancel": "Cancel", - "cancel-delete": "Cancel Delete", - "cancel-keep-donor": "Cancel, keep donor", - "cancel-keep-my-profile": "Cancel, keep my profile", - "cancel-keep-organization": "Cancel, keep organization", - "cancel-keep-team": "Cancel, keep team", - "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", - "change-your-password-here": "Change your password here", - "changing-your-password": "Changing your password", - "city": "City", - "close": "Close", - "configure-the-tracks-and-minimum-lap-times": "configure the tracks & minimum lap times", - "confirm": "Confirm", - "confirm-delete": "Confirm Delete", - "confirm-delete-donor-with-all-donations": "Confirm, delete donor with all donations", - "confirm-delete-my-user-profile": "Confirm, delete my user profile", - "confirm-delete-organization-and-associated-teams-runners": "Confirm, delete organization and associated teams+runners.", - "confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.", - "confirm-deletion": "Confirm Deletion", - "confirm-the-new-password": "Confirm the new password", - "contact": "Contact", - "contact-deleted": "Contact deleted", - "contact-information": "Contact Information", - "contact-is-being-updated": "Contact is being updated...", - "contact-is-not-a-member-in-any-group": "Contact is not a member in any group", - "contacts": "Contacts", - "contacts-are-being-loaded": "contacts are being loaded...", - "count_organizations": "# Organizations", - "count_teams": "# Teams", - "create": "Create", - "create-a-new": "Create a new", - "create-a-new-contact": "Create a new contact", - "create-a-new-distance-donation": "Create a new distance donation", - "create-a-new-donor": "Create a new donor", - "create-a-new-fixed-donation": "Create a new fixed donation", - "create-a-new-organization": "Create a new Organization", - "create-a-new-runner": "Create a new Runner", - "create-a-new-scan-fixed-only": "Create a new scan (fixed only)", - "create-a-new-scanstation": "Create a new station", - "create-a-new-team": "Create a new team", - "create-a-new-track": "Create a new Track", - "create-a-new-user": "Create a new User", - "create-a-new-user-group": "Create a new user group", - "create-organization": "Create Organization", - "create-team": "Create Team", - "create-track": "Create Track", - "create-user": "Create User", - "credits": "Credits", - "csv_import__class": "Class", - "csv_import__firstname": "Firstname", - "csv_import__lastname": "Lastname", - "csv_import__middlename": "Middlename", - "csv_import__team": "Team", - "danger-zone": "Danger zone", - "dashboard-greeting": "Hello", - "dashboard-title": "Dashboard", - "datatable": { - "search": "🔍 Search...", - "sort_column_ascending": "Sort column ascending", - "sort_column_descending": "Sort column descending", - "previous": "Previous", - "next": "Next", - "page": "Page", - "showing": "Showing", - "records": "Records", - "of": "of", - "to": "to", - "loading": "Loading...", - "no_matching_records_found": "No matching records found", - "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" - }, - "delete": "Delete", - "delete-contact": "Delete Contact", - "delete-donation": "Delete Donation", - "delete-donor": "Delete donor", - "delete-group": "Delete Group", - "delete-organization": "Delete Organization", - "delete-profile": "Delete Profile", - "delete-runner": "Delete Runner", - "delete-scan": "Delete scan", - "delete-station": "Delete station", - "delete-team": "Delete Team", - "delete-user": "Delete User", - "deleted-scan": "Deleted scan", - "dependency_name": "Name", - "description": "description", - "description-optional": "Description (optional)", - "deselect-all": "deselect all", - "details": "Details", - "distance": "Distance", - "distance-donation": "distance donation", - "distance-in-km": "Distance in km", - "distance-track": "Distance (+Track)", - "do-you-really-want-to-delete-your-profile": "Do you really want to delete your profile?", - "do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?", - "do-you-want-to-delete-the-team-delete_team-name": "Do you want to delete the team {teamname}?", - "do-you-want-to-delete-this-donor-with-all-related-donations": "Do you want to delete this donor with all related donations", - "documentation": "Documentation", - "donation-amount": "Donation amount", - "donation-amount-must-be-greater-that-0-00eur": "Donation amount must be greater that 0.00€", - "donations": "Donations", - "donor": "Donor", - "donor-added": "Donor added", - "donor-deleted": "donor deleted", - "donor-has-no-associated-donations": "Donor has no associated donations.", - "donor-is-being-added": "Donor is being added...", - "donor-is-being-updated": "Donor is being updated", - "donors": "Donors", - "donors-are-being-loaded": "donors are being loaded", - "dont-have-your-email-connected": "Don't have your email connected?", - "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", - "e-mail-adress": "E-Mail Adress", - "edit": "Edit", - "edit-permissions": "edit permissions", - "email_address_or_username": "Email / username", - "enabled": "enabled", - "english": "English", - "error_on_login": "Error on login", - "erteilte": "Directly granted", - "everything-concerning-your-profile": "Everything concerning your profile", - "everything-is-more-fun-together": "everything is more fun together 🏃‍♂️🏃‍♀️🏃‍♂️", - "faq": "FAQ", - "filter-by-organization-team": "Filter by Organization/ Team", - "first-name": "First name", - "first-name-is-required": "First Name is required", - "first-scan-of-the-day": "First scan of the day.", - "fixed-donation": "fixed donation", - "forgot_password": "Forgot your password?", - "geerbte": "inherited", - "general-stats": "General Stats", - "general_promise_error": "😢 Error", - "generate-sponsoring-contract": "generate sponsoring contract", - "generate-sponsoring-contracts": "generate sponsoring contracts", - "generating-pdf": "generating PDF...", - "generating-pdfs": "generating PDFs...", - "generic-ui-logic-error": "Something went wrong in the UI logic", - "german": "German", - "go-to-login": "Go To Login", - "goback": "Go Home", - "granted": "granted", - "group": "Group", - "group-added": "Group added", - "group-is-being-added": "Group is being added...", - "group-name-is-required": "Group name is required", - "group-updated": "group updated", - "groups": "Groups", - "groups-are-being-loaded": "Groups are being loaded", - "home": "Home", - "icon-image-credits": "We also want to thank these projects for illustrations and icons:", - "import-finished": "Import finished", - "import-runners": "Import runners", - "import__target-organization": "Target Organization", - "imprint": "Imprint", - "imprint-loading": "Imprint loading...", - "inactive": "Inactive", - "installed-version": "Installed version", - "internal-error": "Internal Error", - "invalid": "Invalid", - "invalid-mail-reset": "the provided email is invalid", - "laeufer-hinzufuegen": "Add runner", - "laeufer-importieren": "Läufer importieren", - "laptime": "Laptime", - "last-name": "Last name", - "last-name-is-required": "Last Name is required", - "lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", - "license": "License", - "licenses-are-being-loaded": "Licenses are being loaded...", - "loading-contact-details": "Loading contact details...", - "loading-donation-details": "Loading donation details", - "loading-donor-details": "Loading donor details", - "loading-group-detail": "Loading group detail...", - "loading-profile-data": "Loading profile data", - "loading-runners": "loading runners...", - "loading-station-details": "Loading station details", - "log_in": "Log in", - "log_in_to_your_account": "Log in to your account", - "login_is_checked": "Login is being checked...", - "logout": "Logout", - "mail-validation-in-progress": "mail validation in progress...", - "manage-admin-users": "manage admin users", - "middle-name": "Middle name", - "minimum-lap-time-in-s": "minimum lap time in s", - "minimum-lap-time-must-be-a-positive-number-or-0": "minimum lap time must be a positive number or 0", - "name": "Name", - "name-is-required": "Name is required", - "new-password": "New password", - "no-contact-found": "No contacts found", - "no-contact-selected": "No contact selected", - "no-contact-specified": "no contact specified", - "no-donors-found": "No donors found", - "no-license-text-could-be-found": "No license text could be found 😢", - "no-organization-or-team-found": "No organization or team found", - "no-organization-specified": "no organization specified", - "no-organizations-found": "No organizations found", - "no-runners-found": "No runners found", - "no-tracks-added-yet": "there are no tracks added yet.", - "organization": "Organization", - "organization-added": "Organization added", - "organization-deleted": "Organization deleted", - "organization-detail-is-being-loaded": "organization detail is being loaded...", - "organization-is-being-added": "Organization is being added...", - "organization-name-is-required": "Organization name is required", - "organizations": "Organizations", - "organizations-are-being-loaded": "organizations are being loaded...", - "orgs": "Organizations", - "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", - "password": "Password", - "password-changed": "Password changed!", - "password-is-required": "Password is required", - "password-reset-failed": "Password reset failed!", - "password-reset-in-progress": "Password Reset in Progress...", - "password-reset-mail-sent": "Password reset mail was sent to \"{usersEmail}\".", - "password-reset-successful": "Password Reset successful!", - "passwords-dont-match": "Passwords don't match", - "pdf-generation-failed": "PDF generation failed!", - "pdf-successfully-generated": "PDF successfully generated!", - "pdfs-successfully-generated": "PDFs successfully generated!", - "per-kilometer": "per Kilometer", - "permissions": "Permissions", - "permissions-updated": "Permissions updated!", - "phone": "Phone", - "please-provide-a-password": "Please provide a password...", - "please-provide-the-nessecary-information-to-add-a-new-donor": "Please provide the nessecary information to add a new donor", - "please-provide-the-nessecary-information-to-create-a-new-donation": "Please provide the nessecary information to create a new donation", - "please-provide-the-nessecary-information-to-create-a-new-scan": "Please provide the nessecary information to create a new scan.", - "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", - "please-provide-the-required-information-for-creating-a-new-user-group": "Please provide the required information for creating a new user group.", - "please-provide-the-required-information-to-add-a-new-contact": "Please provide the required information to add a new contact.", - "please-provide-the-required-information-to-add-a-new-organization": "Please provide the required information to add a new organization.", - "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", - "please-provide-the-required-information-to-add-a-new-team": "Please provide the required information to add a new team.", - "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", - "please-provide-the-required-information-to-add-a-new-user": "Please provide the required information to add a new user.", - "please-request-a-new-reset-mail": "Please request a new reset mail...", - "privacy": "Privacy", - "privacy-loading": "Privacy loading...", - "profile": "Profile", - "profile-picture": "Profile Picture", - "profile-updated": "Profile updated!", - "read-license": "Read License", - "receipt-needed": "Receipt needed", - "repo_link": "Link", - "request-a-new-reset-mail": "Request a new reset mail", - "reset-my-password": "Reset my password", - "reset-password": "Reset your password", - "runner": "Runner", - "runner-added": "Runner added", - "runner-import": "Runner Import", - "runner-is-being-added": "Runner is being added...", - "runner-updated": "Runner updated!", - "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", - "runners": "Runners", - "runners-are-being-imported": "Runners are being imported...", - "runners-are-being-loaded": "runners are being loaded...", - "save": "Save", - "save-changes": "Save Changes", - "scan-added": "Scan added", - "scan-is-being-updated": "Scan is being updated", - "scan-with-fixed-distance": "Scan with fixed distance", - "scans": "Scans", - "scans-are-being-loaded": "Scans are being loaded", - "scanstation": "Scanstation", - "scanstations": "Scanstations", - "scanstations-are-being-loaded": "Loading scanstations...", - "search-for-an-organization-by-name-or-id": "Search for an organization (by name or id)", - "search-for-an-organization-or-team-by-name-or-id": "Search for an organization or team (by name or id)", - "search-for-donor-name-or-id": "Search for donor (by name or id)", - "search-for-permission": "Search for permission", - "search-for-runner-by-name-or-id": "Search for runner (by name or id)", - "select-all": "select all", - "select-language": "Select language", - "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", - "set-the-user-active-inactive": "set the user active/ inactive", - "settings": "Settings", - "settings-for-your-profile": "Settings for your profile", - "something-about-the-group": "Something about the group...", - "stats-are-being-loaded": "stats are being loaded...", - "status": "Status", - "stuff-that-could-harm-your-profile": "Stuff that could harm your profile", - "successful-password-reset": "Successful password reset!", - "team": "Team", - "team-detail-is-being-loaded": "team detail is being loaded...", - "team-name": "Team name", - "team-name-is-required": "team name is required", - "teams": "Teams", - "teams-are-being-loaded": "teams are being loaded...", - "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.
    please enter a valid international number...", - "the-scans-distance-must-be-greater-than-0m": "The scan's distance must be greater than 0m", - "there-are-no-contacts-added-yet": "There are no contacts added yet.", - "there-are-no-donations-yet": "There are no donations yet", - "there-are-no-donors-yet": "There are no donors yet", - "there-are-no-groups-yet": "There are no groups yet", - "there-are-no-organizations-added-yet": "There are no organizations added yet.", - "there-are-no-runners-added-yet": "There are no runners added yet.", - "there-are-no-scans-yet": "There are no scans yet", - "there-are-no-teams-added-yet": "There are no teams added yet.", - "there-are-no-users-added-yet": "There are no users added yet.", - "this-might-take-a-moment": "This might take a moment 👀", - "this-scanstation-is": "This scanstation is", - "total-distance": "total distance", - "total-donation-amount": "total donation amount", - "total-donations": "total donations", - "total-scans": "total scans", - "track": "Track", - "track-added": "Track added", - "track-data-is-being-loaded": "Track data is being loaded", - "track-is-being-added": "Track is being added...", - "track-length-in-m": "Track Length in m", - "track-length-must-be-greater-than-0": "Track length must be greater than 0", - "track-name": "Track name", - "track-name-must-not-be-empty": "Track name must not be empty", - "tracks": "Tracks", - "update-password": "Update password", - "updated-contact": "Updated contact!", - "updated-donor": "updated donor", - "updated-organization": "updated organization", - "updated-scan": "updated scan", - "updateing-group": "updateing group...", - "updating-organization": "updating organization", - "updating-permissions": "updating permissions...", - "updating-runner": "Updating runner...", - "updating-user": "updating user...", - "updating-your-profile": "Updating your profile...", - "user-added": "User added", - "user-groups": "User Groups", - "user-is-being-added": "User is being added...", - "user-updated": "User updated", - "username": "Username", - "users": "Users", - "valid": "Valid", - "valid-city-is-required": "Valid city is required", - "valid-email-is-required": "valid email is required", - "valid-international-phone-number-is-required": "valid international phone number is required...", - "valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required", - "verfuegbare": "availdable", - "welcome_wavinghand": "Welcome 👋", - "yes-i-copied-the-token": "Yes, I copied the token", - "you-are-going-to-loose-all-permissions-and-access-to-the-runner-system": "You are going to loose all permissions and access to the runner system!", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", - "you-dont-have-any-scanstations-yet": "You don't have any scanstations yet", - "you-have-to-provide-an-organization": "You have to provide an organization", - "zip-postal-code": "ZIP/ postal code" -} \ No newline at end of file + "404message": "Sorry, the page you are looking for could not be found.", + "404title": "Error 404", + "about": "About", + "action": "Action", + "active": "Active", + "add-donation": "Add donation", + "add-donor": "add donor", + "add-scan": "Add scan", + "add-the-first-scanstation": "Add your first scanstation.", + "add-user-group": "Add User Group", + "add-your-first-contact": "Add your first contact", + "add-your-first-donor": "add your first donor", + "add-your-first-group": "Add your first group", + "add-your-first-organization": "Add your first organization", + "add-your-first-runner": "Add your first runner", + "add-your-first-team": "Add your first team", + "add-your-first-track": "Add your first track.", + "add-your-first-user": "Add your first user", + "add-your-fist-donation": "Add your fist donation", + "add-your-fist-scan": "Add your fist scan", + "adding-scan": "Adding Scan", + "address": "Address", + "address-is-required": "Address is required", + "after-deletion-we-cant-restore-your-old-profile": "After deletion we can't restore your old profile!", + "after-the-update-youll-get-logged-out-please-login-with-your-new-password-after-that": "After the update you'll get logged out - Please login with your new password after that.", + "all-associated-donations-will-get-deleted-as-well": "All associated donations will get deleted as well", + "all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!", + "all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!", + "amount-per-kilometer": "Amount per kilometer", + "apartment-suite-etc": "Apartment, suite, etc.", + "application_name": "Lauf für Kaya! - Admin", + "applying-changes": "Applying Changes", + "attention": "Attention!", + "author": "Author", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.", + "by": "by", + "cancel": "Cancel", + "cancel-delete": "Cancel Delete", + "cancel-keep-donor": "Cancel, keep donor", + "cancel-keep-my-profile": "Cancel, keep my profile", + "cancel-keep-organization": "Cancel, keep organization", + "cancel-keep-team": "Cancel, keep team", + "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", + "change-your-password-here": "Change your password here", + "changing-your-password": "Changing your password", + "city": "City", + "close": "Close", + "configure-the-tracks-and-minimum-lap-times": "configure the tracks & minimum lap times", + "confirm": "Confirm", + "confirm-delete": "Confirm Delete", + "confirm-delete-donor-with-all-donations": "Confirm, delete donor with all donations", + "confirm-delete-my-user-profile": "Confirm, delete my user profile", + "confirm-delete-organization-and-associated-teams-runners": "Confirm, delete organization and associated teams+runners.", + "confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.", + "confirm-deletion": "Confirm Deletion", + "confirm-the-new-password": "Confirm the new password", + "contact": "Contact", + "contact-deleted": "Contact deleted", + "contact-information": "Contact Information", + "contact-is-being-updated": "Contact is being updated...", + "contact-is-not-a-member-in-any-group": "Contact is not a member in any group", + "contacts": "Contacts", + "contacts-are-being-loaded": "contacts are being loaded...", + "count_organizations": "# Organizations", + "count_teams": "# Teams", + "create": "Create", + "create-a-new": "Create a new", + "create-a-new-contact": "Create a new contact", + "create-a-new-distance-donation": "Create a new distance donation", + "create-a-new-donor": "Create a new donor", + "create-a-new-fixed-donation": "Create a new fixed donation", + "create-a-new-organization": "Create a new Organization", + "create-a-new-runner": "Create a new Runner", + "create-a-new-scan-fixed-only": "Create a new scan (fixed only)", + "create-a-new-scanstation": "Create a new station", + "create-a-new-team": "Create a new team", + "create-a-new-track": "Create a new Track", + "create-a-new-user": "Create a new User", + "create-a-new-user-group": "Create a new user group", + "create-organization": "Create Organization", + "create-team": "Create Team", + "create-track": "Create Track", + "create-user": "Create User", + "credits": "Credits", + "csv_import__class": "Class", + "csv_import__firstname": "Firstname", + "csv_import__lastname": "Lastname", + "csv_import__middlename": "Middlename", + "csv_import__team": "Team", + "danger-zone": "Danger zone", + "dashboard-greeting": "Hello", + "dashboard-title": "Dashboard", + "datatable": { + "search": "🔍 Search...", + "sort_column_ascending": "Sort column ascending", + "sort_column_descending": "Sort column descending", + "previous": "Previous", + "next": "Next", + "page": "Page", + "showing": "Showing", + "records": "Records", + "of": "of", + "to": "to", + "loading": "Loading...", + "no_matching_records_found": "No matching records found", + "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" + }, + "delete": "Delete", + "delete-contact": "Delete Contact", + "delete-donation": "Delete Donation", + "delete-donor": "Delete donor", + "delete-group": "Delete Group", + "delete-organization": "Delete Organization", + "delete-profile": "Delete Profile", + "delete-runner": "Delete Runner", + "delete-scan": "Delete scan", + "delete-station": "Delete station", + "delete-team": "Delete Team", + "delete-user": "Delete User", + "deleted-scan": "Deleted scan", + "dependency_name": "Name", + "description": "description", + "description-optional": "Description (optional)", + "deselect-all": "deselect all", + "details": "Details", + "distance": "Distance", + "distance-donation": "distance donation", + "distance-in-km": "Distance in km", + "distance-track": "Distance (+Track)", + "do-you-really-want-to-delete-your-profile": "Do you really want to delete your profile?", + "do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?", + "do-you-want-to-delete-the-team-delete_team-name": "Do you want to delete the team {teamname}?", + "do-you-want-to-delete-this-donor-with-all-related-donations": "Do you want to delete this donor with all related donations", + "documentation": "Documentation", + "donation-amount": "Donation amount", + "donation-amount-must-be-greater-that-0-00eur": "Donation amount must be greater that 0.00€", + "donations": "Donations", + "donor": "Donor", + "donor-added": "Donor added", + "donor-deleted": "donor deleted", + "donor-has-no-associated-donations": "Donor has no associated donations.", + "donor-is-being-added": "Donor is being added...", + "donor-is-being-updated": "Donor is being updated", + "donors": "Donors", + "donors-are-being-loaded": "donors are being loaded", + "dont-have-your-email-connected": "Don't have your email connected?", + "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", + "e-mail-adress": "E-Mail Adress", + "edit": "Edit", + "edit-permissions": "edit permissions", + "email_address_or_username": "Email / username", + "enabled": "enabled", + "english": "English", + "error_on_login": "Error on login", + "erteilte": "Directly granted", + "everything-concerning-your-profile": "Everything concerning your profile", + "everything-is-more-fun-together": "everything is more fun together 🏃‍♂️🏃‍♀️🏃‍♂️", + "faq": "FAQ", + "filter-by-organization-team": "Filter by Organization/ Team", + "first-name": "First name", + "first-name-is-required": "First Name is required", + "first-scan-of-the-day": "First scan of the day.", + "fixed-donation": "fixed donation", + "forgot_password": "Forgot your password?", + "geerbte": "inherited", + "general-stats": "General Stats", + "general_promise_error": "😢 Error", + "generate-sponsoring-contract": "generate sponsoring contract", + "generate-sponsoring-contracts": "generate sponsoring contracts", + "generating-pdf": "generating PDF...", + "generating-pdfs": "generating PDFs...", + "generic-ui-logic-error": "Something went wrong in the UI logic", + "german": "German", + "go-to-login": "Go To Login", + "goback": "Go Home", + "granted": "granted", + "group": "Group", + "group-added": "Group added", + "group-is-being-added": "Group is being added...", + "group-name-is-required": "Group name is required", + "group-updated": "group updated", + "groups": "Groups", + "groups-are-being-loaded": "Groups are being loaded", + "home": "Home", + "icon-image-credits": "We also want to thank these projects for illustrations and icons:", + "import-finished": "Import finished", + "import-runners": "Import runners", + "import__target-organization": "Target Organization", + "imprint": "Imprint", + "imprint-loading": "Imprint loading...", + "inactive": "Inactive", + "installed-version": "Installed version", + "internal-error": "Internal Error", + "invalid": "Invalid", + "invalid-mail-reset": "the provided email is invalid", + "laeufer-hinzufuegen": "Add runner", + "laeufer-importieren": "Läufer importieren", + "laptime": "Laptime", + "last-name": "Last name", + "last-name-is-required": "Last Name is required", + "lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", + "license": "License", + "licenses-are-being-loaded": "Licenses are being loaded...", + "loading-contact-details": "Loading contact details...", + "loading-donation-details": "Loading donation details", + "loading-donor-details": "Loading donor details", + "loading-group-detail": "Loading group detail...", + "loading-profile-data": "Loading profile data", + "loading-runners": "loading runners...", + "loading-station-details": "Loading station details", + "log_in": "Log in", + "log_in_to_your_account": "Log in to your account", + "login_is_checked": "Login is being checked...", + "logout": "Logout", + "mail-validation-in-progress": "mail validation in progress...", + "manage-admin-users": "manage admin users", + "middle-name": "Middle name", + "minimum-lap-time-in-s": "minimum lap time in s", + "minimum-lap-time-must-be-a-positive-number-or-0": "minimum lap time must be a positive number or 0", + "name": "Name", + "name-is-required": "Name is required", + "new-password": "New password", + "no-contact-found": "No contacts found", + "no-contact-selected": "No contact selected", + "no-contact-specified": "no contact specified", + "no-donors-found": "No donors found", + "no-license-text-could-be-found": "No license text could be found 😢", + "no-organization-or-team-found": "No organization or team found", + "no-organization-specified": "no organization specified", + "no-organizations-found": "No organizations found", + "no-runners-found": "No runners found", + "no-tracks-added-yet": "there are no tracks added yet.", + "organization": "Organization", + "organization-added": "Organization added", + "organization-deleted": "Organization deleted", + "organization-detail-is-being-loaded": "organization detail is being loaded...", + "organization-is-being-added": "Organization is being added...", + "organization-name-is-required": "Organization name is required", + "organizations": "Organizations", + "organizations-are-being-loaded": "organizations are being loaded...", + "orgs": "Organizations", + "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", + "password": "Password", + "password-changed": "Password changed!", + "password-is-required": "Password is required", + "password-reset-failed": "Password reset failed!", + "password-reset-in-progress": "Password Reset in Progress...", + "password-reset-mail-sent": "Password reset mail was sent to \"{usersEmail}\".", + "password-reset-successful": "Password Reset successful!", + "passwords-dont-match": "Passwords don't match", + "pdf-generation-failed": "PDF generation failed!", + "pdf-successfully-generated": "PDF successfully generated!", + "pdfs-successfully-generated": "PDFs successfully generated!", + "per-kilometer": "per Kilometer", + "permissions": "Permissions", + "permissions-updated": "Permissions updated!", + "phone": "Phone", + "please-provide-a-password": "Please provide a password...", + "please-provide-the-nessecary-information-to-add-a-new-donor": "Please provide the nessecary information to add a new donor", + "please-provide-the-nessecary-information-to-create-a-new-donation": "Please provide the nessecary information to create a new donation", + "please-provide-the-nessecary-information-to-create-a-new-scan": "Please provide the nessecary information to create a new scan.", + "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", + "please-provide-the-required-information-for-creating-a-new-user-group": "Please provide the required information for creating a new user group.", + "please-provide-the-required-information-to-add-a-new-contact": "Please provide the required information to add a new contact.", + "please-provide-the-required-information-to-add-a-new-organization": "Please provide the required information to add a new organization.", + "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", + "please-provide-the-required-information-to-add-a-new-team": "Please provide the required information to add a new team.", + "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", + "please-provide-the-required-information-to-add-a-new-user": "Please provide the required information to add a new user.", + "please-request-a-new-reset-mail": "Please request a new reset mail...", + "privacy": "Privacy", + "privacy-loading": "Privacy loading...", + "profile": "Profile", + "profile-picture": "Profile Picture", + "profile-updated": "Profile updated!", + "read-license": "Read License", + "receipt-needed": "Receipt needed", + "repo_link": "Link", + "request-a-new-reset-mail": "Request a new reset mail", + "reset-my-password": "Reset my password", + "reset-password": "Reset your password", + "runner": "Runner", + "runner-added": "Runner added", + "runner-import": "Runner Import", + "runner-is-being-added": "Runner is being added...", + "runner-updated": "Runner updated!", + "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", + "runners": "Runners", + "runners-are-being-imported": "Runners are being imported...", + "runners-are-being-loaded": "runners are being loaded...", + "save": "Save", + "save-changes": "Save Changes", + "scan-added": "Scan added", + "scan-is-being-updated": "Scan is being updated", + "scan-with-fixed-distance": "Scan with fixed distance", + "scans": "Scans", + "scans-are-being-loaded": "Scans are being loaded", + "scanstation": "Scanstation", + "scanstations": "Scanstations", + "scanstations-are-being-loaded": "Loading scanstations...", + "search-for-an-organization-by-name-or-id": "Search for an organization (by name or id)", + "search-for-an-organization-or-team-by-name-or-id": "Search for an organization or team (by name or id)", + "search-for-donor-name-or-id": "Search for donor (by name or id)", + "search-for-permission": "Search for permission", + "search-for-runner-by-name-or-id": "Search for runner (by name or id)", + "select-all": "select all", + "select-language": "Select language", + "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", + "set-the-user-active-inactive": "set the user active/ inactive", + "settings": "Settings", + "settings-for-your-profile": "Settings for your profile", + "something-about-the-group": "Something about the group...", + "stats-are-being-loaded": "stats are being loaded...", + "status": "Status", + "stuff-that-could-harm-your-profile": "Stuff that could harm your profile", + "successful-password-reset": "Successful password reset!", + "team": "Team", + "team-detail-is-being-loaded": "team detail is being loaded...", + "team-name": "Team name", + "team-name-is-required": "team name is required", + "teams": "Teams", + "teams-are-being-loaded": "teams are being loaded...", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.
    please enter a valid international number...", + "the-scans-distance-must-be-greater-than-0m": "The scan's distance must be greater than 0m", + "there-are-no-contacts-added-yet": "There are no contacts added yet.", + "there-are-no-donations-yet": "There are no donations yet", + "there-are-no-donors-yet": "There are no donors yet", + "there-are-no-groups-yet": "There are no groups yet", + "there-are-no-organizations-added-yet": "There are no organizations added yet.", + "there-are-no-runners-added-yet": "There are no runners added yet.", + "there-are-no-scans-yet": "There are no scans yet", + "there-are-no-teams-added-yet": "There are no teams added yet.", + "there-are-no-users-added-yet": "There are no users added yet.", + "this-might-take-a-moment": "This might take a moment 👀", + "this-scanstation-is": "This scanstation is", + "total-distance": "total distance", + "total-donation-amount": "total donation amount", + "total-donations": "total donations", + "total-scans": "total scans", + "track": "Track", + "track-added": "Track added", + "track-data-is-being-loaded": "Track data is being loaded", + "track-is-being-added": "Track is being added...", + "track-length-in-m": "Track Length in m", + "track-length-must-be-greater-than-0": "Track length must be greater than 0", + "track-name": "Track name", + "track-name-must-not-be-empty": "Track name must not be empty", + "tracks": "Tracks", + "update-password": "Update password", + "updated-contact": "Updated contact!", + "updated-donor": "updated donor", + "updated-organization": "updated organization", + "updated-scan": "updated scan", + "updateing-group": "updateing group...", + "updating-organization": "updating organization", + "updating-permissions": "updating permissions...", + "updating-runner": "Updating runner...", + "updating-user": "updating user...", + "updating-your-profile": "Updating your profile...", + "user-added": "User added", + "user-groups": "User Groups", + "user-is-being-added": "User is being added...", + "user-updated": "User updated", + "username": "Username", + "users": "Users", + "valid": "Valid", + "valid-city-is-required": "Valid city is required", + "valid-email-is-required": "valid email is required", + "valid-international-phone-number-is-required": "valid international phone number is required...", + "valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required", + "verfuegbare": "availdable", + "welcome_wavinghand": "Welcome 👋", + "yes-i-copied-the-token": "Yes, I copied the token", + "you-are-going-to-loose-all-permissions-and-access-to-the-runner-system": "You are going to loose all permissions and access to the runner system!", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", + "you-dont-have-any-scanstations-yet": "You don't have any scanstations yet", + "you-have-to-provide-an-organization": "You have to provide an organization", + "zip-postal-code": "ZIP/ postal code", + "cards": "Cards", + "add-card": "Add Card" +} From 2d0beaaaad4efefd036bbef09f10c8c22bdb2760 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 23 Mar 2021 17:19:10 +0100 Subject: [PATCH 307/359] Added CardsEmptyState + Emtystate graphic ref #94 --- src/components/cards/CardsEmptyState.svelte | 12 ++++++++++++ src/components/cards/cards.svg | 1 + src/locales/de.json | 4 +++- src/locales/en.json | 4 +++- 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/components/cards/CardsEmptyState.svelte create mode 100644 src/components/cards/cards.svg diff --git a/src/components/cards/CardsEmptyState.svelte b/src/components/cards/CardsEmptyState.svelte new file mode 100644 index 00000000..ada94cff --- /dev/null +++ b/src/components/cards/CardsEmptyState.svelte @@ -0,0 +1,12 @@ + + +
    +

    + + {$_('there-are-no-cards-yet')}
    + {$_('add-your-first-card')} +

    +
    diff --git a/src/components/cards/cards.svg b/src/components/cards/cards.svg new file mode 100644 index 00000000..bd82462d --- /dev/null +++ b/src/components/cards/cards.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/locales/de.json b/src/locales/de.json index 47a68a28..dc2eaed6 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -378,5 +378,7 @@ "you-have-to-provide-an-organization": "Du musst eine Organisation angeben", "zip-postal-code": "Postleitzahl", "cards": "Läuferkarten", - "add-card": "Karte erstellen" + "add-card": "Karte erstellen", + "add-your-first-card": "Erstelle deine erste Läuferkarte", + "there-are-no-cards-yet": "Es gibt noch keine Läuferkarten." } diff --git a/src/locales/en.json b/src/locales/en.json index 8bef7043..68e4482a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -378,5 +378,7 @@ "you-have-to-provide-an-organization": "You have to provide an organization", "zip-postal-code": "ZIP/ postal code", "cards": "Cards", - "add-card": "Add Card" + "add-card": "Add Card", + "add-your-first-card": "Add your first card", + "there-are-no-cards-yet": "There are no cards yet." } From c6a15264b3d13d516f3d97ea4b891ed1c328cead Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 23 Mar 2021 17:29:21 +0100 Subject: [PATCH 308/359] Added basic card overview ref #94 --- src/components/cards/CardsOverview.svelte | 172 ++++++++++++++++++++++ src/locales/de.json | 7 +- src/locales/en.json | 7 +- 3 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 src/components/cards/CardsOverview.svelte diff --git a/src/components/cards/CardsOverview.svelte b/src/components/cards/CardsOverview.svelte new file mode 100644 index 00000000..2738c6b0 --- /dev/null +++ b/src/components/cards/CardsOverview.svelte @@ -0,0 +1,172 @@ + + +{#if store.state.jwtinfo.userdetails.permissions.includes('CARD:GET')} + {#await cards_promise} + + {:then} + {#if current_cards.length === 0} + + {:else} + +
    + + + + + + + + + + + {#each current_cards as card} + {#if card.code + .toLowerCase() + .includes( + searchvalue.toLowerCase() + ) || card.runner?.firstname + .toLowerCase() + .includes( + searchvalue.toLowerCase() + ) || card.runner?.middlename + .toLowerCase() + .includes( + searchvalue.toLowerCase() + ) || card.runner?.lastname + .toLowerCase() + .includes( + searchvalue.toLowerCase() + ) || should_display_based_on_id(card.id)} + + + + + + {#if active_deletes[card.id] === true} + + {:else} + + {/if} + + {/if} + {/each} + +
    + {$_('code')} + + {$_('runner')} + + {$_('status')} + + {$_('action')} +
    +
    + {card.code} +
    +
    + + +
    + {#if card.enabled} + {$_('enabled_large')} + {:else} + {$_('disabled')} + {/if} +
    +
    + + + + {$_('details')} + {#if store.state.jwtinfo.userdetails.permissions.includes('CARD:DELETE')} + + {/if} +
    +
    + {/if} + {:catch error} +
    + + {$_('general_promise_error')} + {error} + +
    + {/await} +{/if} diff --git a/src/locales/de.json b/src/locales/de.json index dc2eaed6..92903e49 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -380,5 +380,10 @@ "cards": "Läuferkarten", "add-card": "Karte erstellen", "add-your-first-card": "Erstelle deine erste Läuferkarte", - "there-are-no-cards-yet": "Es gibt noch keine Läuferkarten." + "there-are-no-cards-yet": "Es gibt noch keine Läuferkarten.", + "loading-cards": "Läuferkarten werden geladen", + "code": "Code", + "enabled_large": "Aktiviert", + "disabled": "Deaktiviert", + "card-deleted": "Karte gelöscht" } diff --git a/src/locales/en.json b/src/locales/en.json index 68e4482a..77d07978 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -380,5 +380,10 @@ "cards": "Cards", "add-card": "Add Card", "add-your-first-card": "Add your first card", - "there-are-no-cards-yet": "There are no cards yet." + "there-are-no-cards-yet": "There are no cards yet.", + "loading-cards": "Loading cards", + "code": "Code", + "enabled_large": "Enabled", + "disabled": "Disabled", + "card-deleted": "Card deleted" } From e852305400a139f8169350077c30012aed556828 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 23 Mar 2021 17:31:11 +0100 Subject: [PATCH 309/359] Now routing the cards page ref #94 --- src/App.svelte | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/App.svelte b/src/App.svelte index 5b78d33f..e13ce05e 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -69,11 +69,11 @@ import Donations from "./components/donations/Donations.svelte"; import DonationDetail from "./components/donations/DonationDetail.svelte"; import GroupDetail from "./components/groups/GroupDetail.svelte"; - import ScanStationsOverview from "./components/scanstations/ScanStationsOverview.svelte"; import ScanStations from "./components/scanstations/ScanStations.svelte"; import ScanStationDetail from "./components/scanstations/ScanStationDetail.svelte"; import Scans from "./components/scans/Scans.svelte"; -import ScanDetail from "./components/scans/ScanDetail.svelte"; + import ScanDetail from "./components/scans/ScanDetail.svelte"; + import Cards from "./components/cards/Cards.svelte"; store.init(); registerSW(); @@ -185,6 +185,14 @@ import ScanDetail from "./components/scans/ScanDetail.svelte"; + + + + + + From 77e9c205f94cf56c2e3584444899adb1e8bdf3c6 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 23 Mar 2021 17:34:01 +0100 Subject: [PATCH 310/359] Now importing runner overview ref #94 --- src/components/cards/Cards.svelte | 4 ++-- src/components/cards/CardsOverview.svelte | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/cards/Cards.svelte b/src/components/cards/Cards.svelte index d51d5f53..8aa5a593 100644 --- a/src/components/cards/Cards.svelte +++ b/src/components/cards/Cards.svelte @@ -2,7 +2,7 @@ import { _ } from "svelte-i18n"; import store from "../../store"; // import AddCardModal from "./AddCardModal.svelte"; - // import CardsOverview from "./CardsOverview.svelte"; + import CardsOverview from "./CardsOverview.svelte"; $: current_cards = []; export let modal_open = false; @@ -21,7 +21,7 @@ {/if} - + {#if store.state.jwtinfo.userdetails.permissions.includes('CARD:CREATE')} diff --git a/src/components/cards/CardsOverview.svelte b/src/components/cards/CardsOverview.svelte index 2738c6b0..981f87d2 100644 --- a/src/components/cards/CardsOverview.svelte +++ b/src/components/cards/CardsOverview.svelte @@ -2,7 +2,6 @@ import { getLocaleFromNavigator, _ } from "svelte-i18n"; import { RunnerCardService, - ScanService, } from "@odit/lfk-client-js"; import store from "../../store"; import Toastify from "toastify-js"; From a516aa7775faa2244862bb2e3c4de623c6405e5b Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 23 Mar 2021 17:34:25 +0100 Subject: [PATCH 311/359] Formatting ref #94 --- src/components/cards/CardsOverview.svelte | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/components/cards/CardsOverview.svelte b/src/components/cards/CardsOverview.svelte index 981f87d2..73261936 100644 --- a/src/components/cards/CardsOverview.svelte +++ b/src/components/cards/CardsOverview.svelte @@ -1,17 +1,17 @@ + +{#if modal_open} +
    { + modal_open = false; + }}> +
    + +
    +
    +{/if} diff --git a/src/locales/de.json b/src/locales/de.json index 70c246c5..0132b26d 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -391,5 +391,9 @@ "card-added": "Karte wurde hinzugefügt", "create-a-new-card": "Neue Läuferkarte erstellen", "you-can-provide-a-runner-but-you-dont-have-to": "Du kannst eine Läufer:in angeben, musst aber nicht.", - "if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "Wenn du mehrere Blankokarten erstellen willst, nutze doch den \"Blankokarten erstellen\" Knopf." + "if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "Wenn du mehrere Blankokarten erstellen willst, nutze doch den \"Blankokarten erstellen\" Knopf.", + "create-bulk-blanco-cards": "Blankokarten erstellen", + "just-enter-how-many-you-want-and-the-system-will-create-them": "Geb einfach ein, wie viele Blankokarten das System erstellen soll.", + "amount": "Anzahl", + "you-must-create-at-least-one-card-or-cancel": "Du musst mindestens eine Blankokarte erstellen (oder abbrechen)." } diff --git a/src/locales/en.json b/src/locales/en.json index 7fb6c011..a2b9496b 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -391,5 +391,9 @@ "card-added": "Card added", "create-a-new-card": "Create a new card", "you-can-provide-a-runner-but-you-dont-have-to": "You can provide a runner, but you don't have to.", - "if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "If you want to create multiple blanco cards: Try the 'Add bulk' button." + "if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "If you want to create multiple blanco cards: Try the 'Add bulk' button.", + "create-bulk-blanco-cards": "Create bulk blanco cards", + "just-enter-how-many-you-want-and-the-system-will-create-them": "Just enter how many you want and the system will create them", + "amount": "Amount", + "you-must-create-at-least-one-card-or-cancel": "You must create at least one card (or cancel)." } From f46ccb610e01654a4ee5e47d78ab500045dd494b Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 23 Mar 2021 18:41:00 +0100 Subject: [PATCH 315/359] Added bulk creation modal to cards view ref #94 --- src/components/cards/AddCardBulkModal.svelte | 18 ++++++------------ src/components/cards/Cards.svelte | 11 +++++++++++ src/locales/de.json | 3 ++- src/locales/en.json | 5 +++-- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/components/cards/AddCardBulkModal.svelte b/src/components/cards/AddCardBulkModal.svelte index 9b7dfa6d..bc4bdf0f 100644 --- a/src/components/cards/AddCardBulkModal.svelte +++ b/src/components/cards/AddCardBulkModal.svelte @@ -5,9 +5,8 @@ import { RunnerCardService } from "@odit/lfk-client-js"; - import Select from "svelte-select"; import Toastify from "toastify-js"; - export let modal_open; + export let bulk_modal_open; export let current_cards; function focus(el) { el.focus(); @@ -15,17 +14,12 @@ $: card_count = 0; $: is_card_count_valid= card_count>0; $: processed_last_submit = true; - RunnerService.runnerControllerGetAll().then((val) => { - runners = val.map((r) => { - return { label: getRunnerLabel(r), value: r }; - }); - }); $: createbtnenabled = is_card_count_valid; (() => { document.onkeydown = (e) => { e = e || window.event; if (e.key === "Escape") { - modal_open = false; + bulk_modal_open = false; } if (e.keyCode === 13) { if (createbtnenabled === true) { @@ -50,7 +44,7 @@ RunnerCardService.runnerCardControllerPost(postdata) .then((result) => { runner = 0; - modal_open = false; + bulk_modal_open = false; // Toastify({ text: $_("card-added"), @@ -72,13 +66,13 @@ } -{#if modal_open} +{#if bulk_modal_open}
    { - modal_open = false; + bulk_modal_open = false; }}>
    @@ -161,7 +155,7 @@ + {/if} @@ -26,4 +36,5 @@ {#if store.state.jwtinfo.userdetails.permissions.includes('CARD:CREATE')} + {/if} diff --git a/src/locales/de.json b/src/locales/de.json index 0132b26d..ff1ebe21 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -395,5 +395,6 @@ "create-bulk-blanco-cards": "Blankokarten erstellen", "just-enter-how-many-you-want-and-the-system-will-create-them": "Geb einfach ein, wie viele Blankokarten das System erstellen soll.", "amount": "Anzahl", - "you-must-create-at-least-one-card-or-cancel": "Du musst mindestens eine Blankokarte erstellen (oder abbrechen)." + "you-must-create-at-least-one-card-or-cancel": "Du musst mindestens eine Blankokarte erstellen (oder abbrechen).", + "create-bulk-cards": "Blankokarten erstellen" } diff --git a/src/locales/en.json b/src/locales/en.json index a2b9496b..82c6e3b7 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -391,9 +391,10 @@ "card-added": "Card added", "create-a-new-card": "Create a new card", "you-can-provide-a-runner-but-you-dont-have-to": "You can provide a runner, but you don't have to.", - "if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "If you want to create multiple blanco cards: Try the 'Add bulk' button.", + "if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "If you want to create multiple blanco cards: Try the 'Add blanco cards' button.", "create-bulk-blanco-cards": "Create bulk blanco cards", "just-enter-how-many-you-want-and-the-system-will-create-them": "Just enter how many you want and the system will create them", "amount": "Amount", - "you-must-create-at-least-one-card-or-cancel": "You must create at least one card (or cancel)." + "you-must-create-at-least-one-card-or-cancel": "You must create at least one card (or cancel).", + "create-bulk-cards": "Add blanco cards" } From 3cd0468b1921824b131178cb02677540b079f9b0 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 23 Mar 2021 18:57:13 +0100 Subject: [PATCH 316/359] Bumped lfk client lib version ref #94 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 60a7a41b..a3e0c144 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "license": "CC-BY-NC-SA-4.0", "dependencies": { - "@odit/lfk-client-js": "0.6.4", + "@odit/lfk-client-js": "0.7.0", "csvtojson": "^2.0.10", "gridjs": "3.3.0", "localforage": "1.9.0", From 7ad6b73574174f24f2d6f23b3caf4823881a85e7 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 23 Mar 2021 19:55:55 +0100 Subject: [PATCH 317/359] Implemented bulk creation ref #94 --- src/components/cards/AddCardBulkModal.svelte | 62 ++++++++------------ src/locales/de.json | 4 +- src/locales/en.json | 4 +- 3 files changed, 32 insertions(+), 38 deletions(-) diff --git a/src/components/cards/AddCardBulkModal.svelte b/src/components/cards/AddCardBulkModal.svelte index bc4bdf0f..e43f79d9 100644 --- a/src/components/cards/AddCardBulkModal.svelte +++ b/src/components/cards/AddCardBulkModal.svelte @@ -2,9 +2,7 @@ import { _ } from "svelte-i18n"; import { clickOutside } from "../base/outsideclick"; import { focusTrap } from "svelte-focus-trap"; - import { - RunnerCardService - } from "@odit/lfk-client-js"; + import { RunnerCardService } from "@odit/lfk-client-js"; import Toastify from "toastify-js"; export let bulk_modal_open; export let current_cards; @@ -12,7 +10,7 @@ el.focus(); } $: card_count = 0; - $: is_card_count_valid= card_count>0; + $: is_card_count_valid = card_count > 0; $: processed_last_submit = true; $: createbtnenabled = is_card_count_valid; (() => { @@ -29,30 +27,22 @@ } }; })(); - //TODO: Creation logic function submit() { if (processed_last_submit === true) { processed_last_submit = false; const toast = Toastify({ - text: $_("adding-card"), + text: $_("creating-blanco-cards"), duration: -1, }).showToast(); - let postdata = { - runner, - enabled, - }; - RunnerCardService.runnerCardControllerPost(postdata) + RunnerCardService.runnerCardControllerPostBlancoBulk(card_count) .then((result) => { - runner = 0; bulk_modal_open = false; // Toastify({ - text: $_("card-added"), + text: $_("created-blanco-cards"), duration: 500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); - current_cards.push(result); - current_cards = current_cards; }) .catch((err) => { // @@ -118,27 +108,27 @@ -
    - - {$_('cards')} -
    - {#if !is_card_count_valid} - - {$_('you-must-create-at-least-one-card-or-cancel')} - - {/if} +
    + + {$_('cards')} +
    + {#if !is_card_count_valid} + + {$_('you-must-create-at-least-one-card-or-cancel')} + + {/if}
    diff --git a/src/locales/de.json b/src/locales/de.json index ff1ebe21..d97367fd 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -396,5 +396,7 @@ "just-enter-how-many-you-want-and-the-system-will-create-them": "Geb einfach ein, wie viele Blankokarten das System erstellen soll.", "amount": "Anzahl", "you-must-create-at-least-one-card-or-cancel": "Du musst mindestens eine Blankokarte erstellen (oder abbrechen).", - "create-bulk-cards": "Blankokarten erstellen" + "create-bulk-cards": "Blankokarten erstellen", + "creating-blanco-cards": "Erstelle Blankokarten", + "created-blanco-cards": "Blankokarten wurden erstellt" } diff --git a/src/locales/en.json b/src/locales/en.json index 82c6e3b7..36fb807f 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -396,5 +396,7 @@ "just-enter-how-many-you-want-and-the-system-will-create-them": "Just enter how many you want and the system will create them", "amount": "Amount", "you-must-create-at-least-one-card-or-cancel": "You must create at least one card (or cancel).", - "create-bulk-cards": "Add blanco cards" + "create-bulk-cards": "Add blanco cards", + "creating-blanco-cards": "Creating blanco cards", + "created-blanco-cards": "Created blanco cards" } From 0313f8cc495088df1237d00e6b9ed1a94f019644 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Wed, 24 Mar 2021 16:43:05 +0100 Subject: [PATCH 318/359] Added runnercard detail/edit modal ref #94 --- src/components/cards/CardDetailModal.svelte | 193 ++++++++++++++++++++ src/components/cards/Cards.svelte | 6 + src/locales/de.json | 4 +- src/locales/en.json | 5 +- 4 files changed, 206 insertions(+), 2 deletions(-) create mode 100644 src/components/cards/CardDetailModal.svelte diff --git a/src/components/cards/CardDetailModal.svelte b/src/components/cards/CardDetailModal.svelte new file mode 100644 index 00000000..feade63b --- /dev/null +++ b/src/components/cards/CardDetailModal.svelte @@ -0,0 +1,193 @@ + + +{#if edit_modal_open} +
    { + edit_modal_open = false; + }}> +
    + +
    +{/if} diff --git a/src/components/cards/Cards.svelte b/src/components/cards/Cards.svelte index 3a17d61c..c3a62f90 100644 --- a/src/components/cards/Cards.svelte +++ b/src/components/cards/Cards.svelte @@ -3,10 +3,13 @@ import store from "../../store"; import AddCardBulkModal from "./AddCardBulkModal.svelte"; import AddCardModal from "./AddCardModal.svelte"; +import CardDetailModal from "./CardDetailModal.svelte"; import CardsOverview from "./CardsOverview.svelte"; $: current_cards = []; export let modal_open = false; export let bulk_modal_open = false; + export let edit_modal_open = true; + export let edit_card_id = 1;
    @@ -38,3 +41,6 @@ import AddCardBulkModal from "./AddCardBulkModal.svelte"; {/if} +{#if store.state.jwtinfo.userdetails.permissions.includes('CARD:UPDATE')} + +{/if} diff --git a/src/locales/de.json b/src/locales/de.json index d97367fd..c1ac1637 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -398,5 +398,7 @@ "you-must-create-at-least-one-card-or-cancel": "Du musst mindestens eine Blankokarte erstellen (oder abbrechen).", "create-bulk-cards": "Blankokarten erstellen", "creating-blanco-cards": "Erstelle Blankokarten", - "created-blanco-cards": "Blankokarten wurden erstellt" + "created-blanco-cards": "Blankokarten wurden erstellt", + "edit-a-card": "Läuferkarte bearbeiten", + "this-card-is": "Diese Karte ist" } diff --git a/src/locales/en.json b/src/locales/en.json index 36fb807f..01824685 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -398,5 +398,8 @@ "you-must-create-at-least-one-card-or-cancel": "You must create at least one card (or cancel).", "create-bulk-cards": "Add blanco cards", "creating-blanco-cards": "Creating blanco cards", - "created-blanco-cards": "Created blanco cards" + "created-blanco-cards": "Created blanco cards", + "edit-a-card": "Edit a card", + "this-card-is": "This card is", + "update-card": "Update Card" } From fac059f02cae84261443ee95448ec8db06dd755a Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Wed, 24 Mar 2021 16:58:06 +0100 Subject: [PATCH 319/359] Now w/working editing ref #94 --- src/components/cards/CardDetailModal.svelte | 42 +++++++++++---------- src/locales/de.json | 4 +- src/locales/en.json | 4 +- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/components/cards/CardDetailModal.svelte b/src/components/cards/CardDetailModal.svelte index feade63b..77d4128d 100644 --- a/src/components/cards/CardDetailModal.svelte +++ b/src/components/cards/CardDetailModal.svelte @@ -2,10 +2,7 @@ import { _ } from "svelte-i18n"; import { clickOutside } from "../base/outsideclick"; import { focusTrap } from "svelte-focus-trap"; - import { - RunnerCardService, - RunnerService, - } from "@odit/lfk-client-js"; + import { RunnerCardService, RunnerService } from "@odit/lfk-client-js"; import Select from "svelte-select"; import Toastify from "toastify-js"; export let edit_modal_open; @@ -22,7 +19,7 @@ $: runner = {}; $: runners = []; $: editable = {}; - $: original_date = {}; + $: original_data = {}; $: enabled = true; $: processed_last_submit = true; RunnerService.runnerControllerGetAll().then((val) => { @@ -31,12 +28,17 @@ }); }); RunnerCardService.runnerCardControllerGetOne(edit_card_id).then((val) => { - runner = Object.assign({ runner }, {label: getRunnerLabel(val.runner), value: val.runner}); + runner = Object.assign( + { runner }, + { label: getRunnerLabel(val.runner), value: val.runner } + ); val.runner = val.runner?.id; editable = Object.assign(editable, val); - original_date = Object.assign(original_date, val); + original_data = Object.assign(original_data, val); }); - $: createbtnenabled = !(JSON.stringify(editable) === JSON.stringify(original_date)); + $: createbtnenabled = !( + JSON.stringify(editable) === JSON.stringify(original_data) + ); (() => { document.onkeydown = (e) => { e = e || window.event; @@ -55,24 +57,24 @@ if (processed_last_submit === true) { processed_last_submit = false; const toast = Toastify({ - text: $_("adding-card"), + text: $_("updating-card"), duration: -1, }).showToast(); - let postdata = { - runner, - enabled, - }; - RunnerCardService.runnerCardControllerPost(postdata) + RunnerCardService.runnerCardControllerPut(original_data.id, editable) .then((result) => { - runner = 0; + runner = {}; + editable = {}; + original_data = {}; edit_modal_open = false; // Toastify({ - text: $_("card-added"), + text: $_("card-updated"), duration: 500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", - }).showToast(); - current_cards.push(result); + }).showToast(); + current_cards[ + current_cards.findIndex((c) => c.id === edit_card_id) + ] = result; current_cards = current_cards; }) .catch((err) => { @@ -162,7 +164,9 @@ checked={editable.enabled} class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" /> {$_('this-card-is')} - {#if editable.enabled}{$_('enabled')}{:else}{$_('disabled')}{/if} + {#if editable.enabled} + {$_('enabled')} + {:else}{$_('disabled')}{/if}

    diff --git a/src/locales/de.json b/src/locales/de.json index c1ac1637..3f0b6904 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -400,5 +400,7 @@ "creating-blanco-cards": "Erstelle Blankokarten", "created-blanco-cards": "Blankokarten wurden erstellt", "edit-a-card": "Läuferkarte bearbeiten", - "this-card-is": "Diese Karte ist" + "this-card-is": "Diese Karte ist", + "updating-card": "Karte wird aktualisiert", + "card-updated": "Karte aktualisiert" } diff --git a/src/locales/en.json b/src/locales/en.json index 01824685..7d8dad39 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -401,5 +401,7 @@ "created-blanco-cards": "Created blanco cards", "edit-a-card": "Edit a card", "this-card-is": "This card is", - "update-card": "Update Card" + "update-card": "Update Card", + "updating-card": "Updating card", + "card-updated": "Card updated" } From 076893981ff4f7f17330746c561acc570339adac Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 25 Mar 2021 17:27:38 +0100 Subject: [PATCH 320/359] =?UTF-8?q?Fixed=20mail=20login=20bug=F0=9F=90=9E?= =?UTF-8?q?=F0=9F=93=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #107 --- src/components/auth/Login.svelte | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/components/auth/Login.svelte b/src/components/auth/Login.svelte index 35fbbe38..6be88339 100644 --- a/src/components/auth/Login.svelte +++ b/src/components/auth/Login.svelte @@ -5,6 +5,7 @@ store.init(); import { OpenAPI, AuthService } from "@odit/lfk-client-js"; import Footer from "../general/Footer.svelte"; + import isEmail from "validator/es/lib/isEmail"; import Toastify from "toastify-js"; // ------ let username = config.default_username || ""; @@ -36,10 +37,19 @@ text: $_("login_is_checked"), duration: 500, }).showToast(); - AuthService.authControllerLogin({ - username, - password, - }) + let postdata = {}; + if (isEmail(username)) { + postdata = { + email: username, + password, + }; + } else { + postdata = { + username, + password, + }; + } + AuthService.authControllerLogin(postdata) .then(async (result) => { await localForage.setItem("logindata", result); OpenAPI.TOKEN = result.access_token; From fbe74a5d8090553a35576a17c97019939cf4f386 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 25 Mar 2021 17:31:53 +0100 Subject: [PATCH 321/359] Commented out the buggy runner search to prevent bad UX ref #107 --- src/components/runners/RunnersOverview.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/runners/RunnersOverview.svelte b/src/components/runners/RunnersOverview.svelte index bfc06a15..089392c5 100644 --- a/src/components/runners/RunnersOverview.svelte +++ b/src/components/runners/RunnersOverview.svelte @@ -115,12 +115,12 @@ {#if current_runners.length === 0} {:else} - + class="gridjs-input gridjs-search-input mb-4" /> -->