dorfteich/packages/shared/i18n/de/errors.json
Claude Fable 5 9b7acab294
All checks were successful
CI / Lint, typecheck, test (pull_request) Successful in 6m21s
CI / Build container images (pull_request) Successful in 3m59s
CI / Auth e2e pack (pull_request) Successful in 8m35s
CI / Import/export fidelity gate (pull_request) Successful in 1m1s
CD / Build and push images (push) Successful in 17s
CD / Deploy to Test (push) Successful in 14s
CD / Smoke tests against Test (push) Successful in 1m17s
CD / Promote to Int (push) Successful in 12s
CI / Build container images (push) Has been skipped
CI / Auth e2e pack (push) Successful in 8m27s
CI / Import/export fidelity gate (push) Successful in 58s
CI / Lint, typecheck, test (push) Successful in 6m30s
#232: plugin allowlist with SHA-256 hash pinning
The install path records the SHA-256 of the delivered bundle ZIP
(plugins.bundle_hash; pre-#232 installs show it as unknown until
reinstalled). plugins.allowlist in instance_settings names permitted
ids with their pinned hashes: empty (default) = not enforced, existing
instances unchanged; non-empty = installs of unlisted or deviating
bundles are rejected (plugin_not_pinned / plugin_hash_mismatch, 403),
and an installed plugin outside the list or with a deviating hash does
not load — absent from pond mount lists, frame/assets 404. Every
rejection is audited (plugin.rejected, catalogue v1.5). A version bump
changes the hash and therefore requires an explicit re-pin — the
intended friction (ADR 0025). Admin UI shows observed vs pinned hash
per plugin with pin/re-pin/unpin. Scope stated honestly in
plugin-architecture.md: the pin answers "is this the reviewed bundle";
post-install disk tampering is platform integrity (ADR 0019), sandbox
containment stays the sandbox's job. Hardening guide row + catalog
advisory triage; residual risk R-03 resolved. e2e: empty-allowlist
compatibility, pinned load, unpinned and tampered installs rejected and
audited, pin drift blocks loading while the admin still sees the
mismatch, version bump needs re-pin. Full api suite 101 files / 561
green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUtYMxwTCMHG9mVHnwbFg8
2026-07-31 21:26:36 +02:00

119 lines
8.7 KiB
JSON

{
"bad_request": "Die Anfrage ist ungültig.",
"unauthorized": "Bitte melde dich an, um fortzufahren.",
"forbidden": "Dir fehlt die Berechtigung für diese Aktion.",
"not_found": "Die angeforderte Ressource existiert nicht.",
"conflict": "Die Anfrage steht im Widerspruch zum aktuellen Zustand.",
"gone": "Diese Ressource ist nicht mehr verfügbar.",
"payload_too_large": "Die übermittelten Daten sind zu groß.",
"rate_limited": "Zu viele Anfragen — bitte versuche es später erneut.",
"internal_error": "Interner Serverfehler.",
"registration_closed": "Die Registrierung ist auf dieser Instanz derzeit geschlossen.",
"token_invalid": "Dieser Link ist ungültig oder abgelaufen.",
"login_failed": "Benutzername/E-Mail oder Passwort ist falsch.",
"login_backoff": "Zu viele Fehlversuche — bitte warte ein paar Minuten.",
"email_unverified": "Bitte bestätige zuerst deine E-Mail-Adresse.",
"account_disabled": "Dieses Konto wurde deaktiviert.",
"password_incorrect": "Das aktuelle Passwort ist falsch.",
"csrf_origin_mismatch": "Die Anfrage kam von einer unerwarteten Herkunft.",
"cannot_revoke_current_session": "Beende deine aktuelle Sitzung über die Abmeldung.",
"personal_pond_undeletable": "Der persönliche Teich kann nicht gelöscht werden.",
"quota_exceeded": "Das Kontingent ist erreicht (Limit: {{limit}}).",
"slug_taken": "Dieser Adressname ist in diesem Teich bereits vergeben.",
"page_document_too_large": "Die Seite ist zu groß (Limit: {{limitBytes}} Bytes).",
"invalid_page_state": "Der übermittelte Seiteninhalt ist ungültig.",
"page_trashed": "Diese Seite wurde in den Papierkorb verschoben.",
"page_cycle": "Eine Seite kann nicht in ihren eigenen Teilbaum verschoben werden.",
"page_depth_exceeded": "Seiten lassen sich höchstens {{max}} Ebenen tief verschachteln.",
"label_name_taken": "Ein Label mit diesem Namen existiert auf dieser Ebene bereits.",
"label_cycle": "Ein Label kann nicht in seinen eigenen Teilbaum verschoben werden.",
"label_depth_exceeded": "Labels lassen sich höchstens {{max}} Ebenen tief verschachteln.",
"label_has_pages": "Diesem Label sind noch Seiten zugeordnet; bitte bestätigen, um sie zu lösen.",
"label_wrong_pond": "Dieses Label gehört zu einem anderen Teich.",
"unsupported_file_type": "Dieser Dateityp wird nicht unterstützt.",
"upload_type_not_allowed": "Dieser Dateityp ist auf dieser Instanz nicht erlaubt.",
"file_too_large": "Die Datei ist zu groß (Limit: {{limitBytes}} Bytes).",
"converter_unavailable": "Der Dokument-Konverter ist derzeit nicht verfügbar. Bitte versuche es später erneut.",
"converter_timeout": "Die Konvertierung hat zu lange gedauert und wurde abgebrochen.",
"conversion_failed": "Dieses Dokument konnte nicht konvertiert werden.",
"renderer_unavailable": "Der PDF-Renderer ist derzeit nicht verfügbar. Bitte versuche es später erneut.",
"render_failed": "Diese Seite konnte nicht als PDF gerendert werden.",
"import_unsupported_format": "Nur Word- (.docx) und OpenDocument-Dokumente (.odt) können importiert werden.",
"import_vault_invalid_zip": "Das Archiv ist kein gültiger Obsidian-Vault (ZIP mit Markdown-Notizen).",
"import_vault_too_large": "Der entpackte Vault ist zu groß für einen Import.",
"network": "Der Server war nicht erreichbar.",
"grant_exists": "Diese Berechtigung existiert bereits.",
"plugin_invalid_zip": "Die hochgeladene Datei ist kein gültiges ZIP-Archiv.",
"plugin_bad_structure": "Das Plugin-Paket hat eine ungültige Struktur.",
"plugin_invalid_manifest": "Das Plugin-Manifest ist ungültig.",
"plugin_api_incompatible": "Dieses Plugin benötigt eine nicht unterstützte Plugin-API-Version.",
"plugin_too_large": "Das Plugin-Paket ist zu groß (Limit: {{limitBytes}} Bytes).",
"plugin_missing_bundle": "Ein Code-Plugin muss ein plugin.js-Bundle enthalten.",
"plugin_missing_styles": "Ein Style-Plugin muss eine styles.css-Datei enthalten.",
"plugin_css_unsafe": "Das Plugin-Stylesheet verwendet nicht erlaubte Konstrukte.",
"plugin_version_not_higher": "Ein Update muss eine höhere Version als das installierte haben.",
"plugin_required_cannot_uninstall": "Ein erforderliches Plugin kann nicht deinstalliert werden.",
"plugin_not_found": "Dieses Plugin ist nicht installiert.",
"plugin_not_optional": "Nur optionale Plugins können pro Teich aktiviert werden.",
"grant_pond_admin_scope": "Eine Teich-Admin-Berechtigung muss für den ganzen Teich und eine bestimmte Person gelten.",
"grant_pond_admin_personal_pond": "Der einzige Administrator eines persönlichen Teichs ist dessen Eigentümer.",
"grant_subject_id_mismatch": "Das Subjekt der Berechtigung ist widersprüchlich.",
"grant_scope_id_mismatch": "Der Geltungsbereich der Berechtigung ist widersprüchlich.",
"grant_scope_not_found": "Das Label oder die Seite, auf die sich diese Berechtigung bezieht, existiert in diesem Teich nicht.",
"grant_subject_not_found": "Diese Person existiert nicht.",
"grant_last_admin": "Die letzte Teich-Admin-Berechtigung kann nicht entfernt werden.",
"member_not_found": "Es existiert keine Person mit diesem Benutzernamen oder dieser E-Mail.",
"member_exists": "Diese Person ist bereits Mitglied dieses Teichs.",
"member_not_a_member": "Diese Person ist kein Mitglied dieses Teichs.",
"member_is_owner": "Die Mitgliedschaft des Teich-Eigentümers kann hier nicht geändert werden.",
"cannot_modify_self": "Du kannst diese Aktion nicht auf dein eigenes Konto anwenden.",
"last_site_admin": "Der letzte Site-Admin kann nicht entfernt werden.",
"setup_required": "Diese Instanz ist noch nicht eingerichtet. Bitte führe zuerst die Ersteinrichtung aus.",
"setup_locked": "Die Ersteinrichtung ist bereits abgeschlossen.",
"setup_admin_exists": "Es existiert bereits ein Site-Admin-Konto.",
"setup_admin_missing": "Lege zuerst das Site-Admin-Konto an.",
"smtp_test_failed": "Der SMTP-Test ist fehlgeschlagen. Bitte prüfe die Verbindungsdaten.",
"validation": {
"required": "Dieses Feld ist erforderlich.",
"taken": "Dieser Wert ist bereits vergeben.",
"username": {
"tooShort": "Der Benutzername braucht mindestens 3 Zeichen.",
"tooLong": "Der Benutzername darf höchstens 32 Zeichen haben.",
"charset": "Erlaubt sind nur Buchstaben, Ziffern und Bindestriche."
},
"password": {
"tooShort": "Das Passwort braucht mindestens 10 Zeichen.",
"tooLong": "Das Passwort darf höchstens 128 Zeichen haben.",
"tooCommon": "Dieses Passwort ist zu verbreitet."
},
"email": {
"invalid": "Bitte gib eine gültige E-Mail-Adresse ein."
},
"displayName": {
"required": "Bitte gib einen Anzeigenamen ein."
},
"labelColor": "Bitte gib eine Farbe wie #a1b2c3 ein.",
"tooLong": "Die Eingabe ist zu lang."
},
"comments_editors_only": "Kommentare sind in diesem Teich auf Bearbeitende beschränkt.",
"comment_not_author": "Nur die Autorin/der Autor kann diesen Kommentar ändern.",
"comment_has_replies": "Dieser Kommentar hat Antworten — den ganzen Thread kann nur eine Teich-Administration löschen.",
"comment_parent_invalid": "Antworten müssen sich auf einen Kommentar der obersten Ebene derselben Seite beziehen.",
"comment_not_root": "Nur Kommentare der obersten Ebene können als erledigt markiert werden.",
"maintenance_mode": "Die Instanz ist im Wartungsmodus, während ein Backup wiederhergestellt wird.",
"backup_connection_failed": "Der Nextcloud-Verbindungstest ist fehlgeschlagen.",
"backup_remote_disabled_by_policy": "Entfernte Backup-Ziele sind durch die Deployment-Richtlinie deaktiviert (BACKUP_ALLOWED_TARGETS ist leer).",
"backup_target_not_allowed": "Dieser Ziel-Host steht nicht in der Deployment-Richtlinie (BACKUP_ALLOWED_TARGETS).",
"backup_restore_confirm_mismatch": "Der Bestätigungstext stimmt nicht mit der Backup-ID überein.",
"backup_restore_running": "Es läuft bereits eine Wiederherstellung.",
"backup_remote_not_configured": "Es ist kein Nextcloud-Backup-Ziel konfiguriert.",
"backup_set_not_found": "Das gewählte Backup-Set wurde nicht gefunden.",
"scope_required": "Dieses API-Token hat nicht den erforderlichen Scope.",
"pond_not_found": "Der Teich existiert nicht.",
"classification_lower_forbidden": "Zum Herabstufen der Einstufung fehlt die Berechtigung (Teich-Admin erforderlich).",
"classified_upload_blocked": "Uploads auf eingestufte Seiten sind auf dieser Instanz blockiert.",
"vs_nfd_profile_violation": "Diese Einstellung würde vom VS-NfD-Referenzprofil abweichen — das Deployment erzwingt das Profil (VS_NFD_MODE=enforced).",
"plugin_not_pinned": "Dieses Plugin steht nicht auf der Allowlist (Hash-Pinning aktiv) — erst pinnen, dann installieren.",
"plugin_hash_mismatch": "Der Bundle-Hash weicht vom gepinnten Hash ab — das Bundle ist nicht das geprüfte (oder eine neue Version braucht ein Re-Pin)."
}