# Fehlercodes

> Alle Fehlercodes, die der Daemon und das SDK zurückgeben, mit ihrer Meldung, erzeugt aus den Übersetzungen des Produkts.

Source: https://pithyx.org/de/docs/reference/errors/
Markdown: https://pithyx.org/de/docs/reference/errors.md

Die API gibt Fehler als RFC-9457-Problem-Details mit stabilem `code`, `params`, englischem `detail` und der `requestId` zurück. Codes, die mit `sdk.` beginnen, kommen vom Transport des SDK im Browser, nicht vom Daemon. Diese Liste wird aus `i18n/de/errors.json` erzeugt; `{name}` steht für einen Parameter.

## app

- `app.app.busy`: Die App {id} wird gerade installiert, aktualisiert oder entfernt. Warte, bis das erledigt ist.
- `app.app.no_previous`: {id} hat keine Version vor dem letzten Update, zu der es zurückgehen kann.
- `app.app.not_found`: Es ist keine App mit der ID {id} installiert.
- `app.backend.endpoint_unknown`: Die App hat keinen Backend-Endpunkt namens {endpoint}.
- `app.backend.missing`: Die App hat kein Backend.
- `app.backend.start_failed`: Das Backend der App ist nicht gestartet. Das Protokoll der App zeigt, was ihre Container geschrieben haben.
- `app.backend.storage_unavailable`: Das Backend der App braucht den Ordner für {storage}, der nicht bereit ist ({reason, select, unmapped {kein Ordner zugeordnet} other {sein Pool fehlt oder ist gesperrt}}).
- `app.backend.unavailable`: Das Backend der App läuft nicht oder antwortet nicht. Versuch es gleich noch einmal.
- `app.backend.unsupported`: Dieser Fehler stammt aus Versionen von Pithyx vor 1.0, die nur Apps ohne Backend installiert haben. Diese Version führt App-Backends aus; aktualisiere die Box, falls du ihn noch siehst.
- `app.compose.key_unsupported`: Die Compose-Datei der App nutzt {key} unter {path}, was Pithyx nicht erlaubt.
- `app.compose.reference_unknown`: Das Backend der App verweist unter {path} auf {name}, das nicht deklariert ist.
- `app.compose.right_missing`: Die Compose-Datei der App braucht unter {path} das Recht {right}, das ihr Manifest nicht deklariert.
- `app.compose.right_unused`: Das Manifest der App deklariert unter {path} das Recht {right}, das ihre Compose-Datei nicht nutzt.
- `app.compose.storage_mismatch`: Der Speicher {storage} passt nicht zur Compose-Datei unter {path}: {reason, select, not_mounted {der Dienst bindet ihn nicht ein} not_listed {der Dienst bindet ihn ein, ohne im Manifest genannt zu sein} read_only {er ist schreibgeschützt und muss mit :ro eingebunden werden} other {Manifest und Compose-Datei widersprechen sich}}.
- `app.compose.value_invalid`: Die Compose-Datei der App hat unter {path} einen Wert, den Pithyx ablehnt: {reason, select, required {er fehlt} type {er hat den falschen Typ} format {sein Format ist ungültig} range {er liegt außerhalb des erlaubten Bereichs} unpinned {das Image ist nicht mit @sha256 festgelegt} interpolation {er nutzt $ für eine Variable (schreib $$ für ein Dollarzeichen)} no_value {die Variable hat keinen Wert} duplicate {er kommt doppelt vor} reserved {er ist für Pithyx reserviert} host_path {er bindet einen Ordner des Hosts ein} anonymous {das Volume hat keinen Namen} cycle {die Dienste hängen im Kreis voneinander ab} image_and_build {der Dienst hat image und build, nutze nur eins davon} other {er ist ungültig}}.
- `app.compose.yaml_invalid`: Die Compose-Datei der App ist nicht lesbar: {reason, select, too_large {sie ist größer als 64 KB} not_utf8 {sie ist kein UTF-8} character {sie enthält einen Tabulator oder ein anderes nicht erlaubtes Zeichen} syntax {sie ist kein gültiges YAML} documents {sie muss genau ein Dokument enthalten} too_deep {sie ist zu tief verschachtelt} directive {sie enthält eine YAML-Direktive} anchor {sie nutzt Anker oder Aliase} tag {sie nutzt YAML-Tags} duplicate_key {{path} kommt doppelt vor} merge_key {sie nutzt unter {path} einen Merge-Schlüssel} key_not_string {ein Schlüssel unter {path} ist kein Text} other {sie verletzt eine Regel für Compose-Dateien}}.
- `app.docker.unavailable`: Der Container-Dienst antwortet nicht, deshalb können App-Backends gerade nicht laufen.
- `app.elevated.unsupported`: Die App verlangt das Recht {right}, das diese Version von Pithyx nicht vergibt.
- `app.icon.invalid`: Das Symbol der App ist nicht verwendbar: {reason, select, too_large {es ist größer als 64 KB} malformed {es ist keine gültige SVG-Datei} not_svg {es ist kein SVG-Bild} viewbox {seine viewBox fehlt oder ist nicht quadratisch} doctype {es enthält einen DOCTYPE} processing_instruction {es enthält eine Verarbeitungsanweisung} element_forbidden {es enthält das Element {element}} event_attribute {es enthält das Ereignisattribut {attribute}} external_href {es verweist auf etwas außerhalb der Datei} style_import {seine Styles nutzen @import} style_url {es lädt mit url() etwas außerhalb der Datei} style_escape {seine Styles enthalten Escape-Sequenzen} other {es verletzt eine Regel für Symbole}}.
- `app.image.mismatch`: Das Image {image} ist nicht das, das im Paket der App steht. Pithyx führt es nicht aus.
- `app.image.unavailable`: Das Image {image} des App-Backends konnte nicht geladen oder heruntergeladen werden.
- `app.manifest.cron_invalid`: Der Zeitplan unter {path} ist kein gültiger Cron-Ausdruck: {cron}
- `app.manifest.duplicate`: Das Manifest enthält {value} doppelt (unter {path}).
- `app.manifest.id_invalid`: Die App-ID {id} ist ungültig. Sie besteht aus der umgekehrten Domain des Autors und dem App-Namen, zum Beispiel com.example.chat.
- `app.manifest.id_reserved`: Die App-ID {id} ist für die Apps reserviert, die mit Pithyx kommen.
- `app.manifest.invalid_json`: Das Manifest der App (pithyx.json) ist kein gültiges JSON.
- `app.manifest.pithyx_invalid`: Der Pithyx-Versionsbereich {pithyx} im Manifest ist ungültig.
- `app.manifest.reference_unknown`: Das Manifest verweist unter {path} auf {name}, das es nicht deklariert.
- `app.manifest.schema_violation`: Das Manifest der App ist unter {path} ungültig ({keyword}).
- `app.manifest.sdk_invalid`: Der SDK-Versionsbereich {sdk} im Manifest ist ungültig.
- `app.manifest.version_unsupported`: Diese App braucht eine neuere Version von Pithyx (Manifest-Version {version}, diese Box liest Version {supported}).
- `app.manifest.window_size_invalid`: Die kleinste Fenstergröße der App ist größer als ihre Standardgröße.
- `app.mapping.invalid`: Der Ordner kann nicht für den Speicher {storage} verwendet werden: {reason, select, unknown {die App fragt nicht nach diesem Speicher} access {die App will ihn nur lesen, darum kann sie keinen Schreibzugriff bekommen} other {die Anfrage ist ungültig}}.
- `app.package.box_too_old`: Diese Version braucht Pithyx {range}; diese Box hat {version}. Aktualisiere zuerst Pithyx.
- `app.package.downgrade_unsupported`: Diese ältere Version kann die Daten der App nicht lesen (installiert Datenversion {installed}, in dieser Version {target}). Nutze nach einem Update stattdessen „Zurück zur vorigen Version“.
- `app.package.invalid`: Die Datei ist kein gültiges App-Paket: {reason, select, gzip {sie ist nicht mit gzip komprimiert oder beschädigt} format {sie ist kein tar-Archiv, das diese Box liest} checksum {ein Header ist beschädigt} truncated {sie endet zu früh} trailing_data {nach ihrem Ende folgen noch Daten} entry_type {{path} ist ein Link oder eine Spezialdatei} extended_header {sie hat einen erweiterten Header, der nicht erlaubt ist} name_mismatch {der lange Name von {path} passt nicht zu seinem eigenen Namen} other {sie kann nicht gelesen werden}}.
- `app.package.layout_invalid`: Das App-Paket ist ungültig: {reason, select, missing {{path} fehlt} unsafe {der Pfad {path} ist nicht erlaubt} duplicate {{path} ist doppelt enthalten} unexpected {{path} gehört nicht in ein App-Paket} reserved {{path} nutzt einen Namen, der für das Backend reserviert ist} other {{path} ist nicht erlaubt}}.
- `app.package.lock_invalid`: Die Liste der Backend-Images der App passt nicht ({reason, select, missing {sie fehlt} invalid {sie ist ungültig} stale {sie passt nicht zum Backend} other {nichts für {architecture}}}).
- `app.package.not_found`: Das geprüfte Paket ist nicht mehr da. Lade die Datei noch einmal hoch.
- `app.package.too_large`: Das App-Paket ist zu groß: {reason, select, size {die Datei darf höchstens {limit} MB haben} unpacked {ihre Dateien dürfen zusammen höchstens {limit} MB haben} files {es darf höchstens {limit} Dateien enthalten} manifest {pithyx.json darf höchstens {limit} KB haben} other {es überschreitet eine Grenze}}.
- `app.permission.denied`: Die App darf das nicht ({permission}).
- `app.permission.not_requested`: Die App fragt nicht nach der Berechtigung {permission}.
- `app.pool.fixed`: Apps liegen auf dem Pool {pool}. Solange eine App installiert ist, können sie nicht auf einen anderen Pool umziehen.
- `app.pool.required`: Wähle einen Pool für die Daten der Apps.
- `app.pool.unavailable`: Der Pool {pool} kann gerade keine Apps aufnehmen: {reason, select, missing {er ist nicht importiert} offline {er ist nicht online} read_only {er ist schreibgeschützt} locked {er ist gesperrt} not_prepared {er wurde nicht von Pithyx eingerichtet} other {er ist nicht verfügbar}}.
- `app.storage.key_invalid`: Die App hat einen Schlüssel benutzt, der leer oder länger als {maxLength} Zeichen ist.
- `app.storage.not_found`: Den Speicher {storage} der App gibt es nicht, oder ihm ist noch kein Ordner zugewiesen.
- `app.storage.too_large`: Die App wollte mehr speichern, als sie behalten darf. Die Grenze liegt bei {maxKb} KB.
- `app.token.invalid`: Der Zugang der App ist abgelaufen. Schließ die App und öffne sie erneut.

## auth

- `auth.account.disabled`: Dieses Konto ist deaktiviert. Bitte eine Administratorin oder einen Administrator, es wieder zu aktivieren.
- `auth.challenge.expired`: Der Anmeldeschritt ist abgelaufen. Melde dich bitte erneut an.
- `auth.credentials.invalid`: Benutzername oder Passwort ist falsch.
- `auth.csrf.header_missing`: Die Anfrage wurde abgelehnt, weil ein Sicherheits-Header fehlt.
- `auth.desktop.not_allowed`: Du darfst dich nicht am Desktop anmelden. Bitte eine Administratorin oder einen Administrator um das Recht zur Desktop-Anmeldung.
- `auth.display_name.invalid`: Dein Anzeigename darf höchstens {maxLength} Zeichen und keine Steuerzeichen enthalten.
- `auth.password.too_common`: Dieses Passwort ist zu bekannt. Wähle eines, das schwerer zu erraten ist.
- `auth.password.too_long`: Dein Passwort darf höchstens {maxLength} Zeichen lang sein.
- `auth.password.too_short`: Dein Passwort muss mindestens {minLength} Zeichen lang sein.
- `auth.permission.denied`: Dir fehlt die Berechtigung für diese Aktion.
- `auth.rate.limited`: Zu viele Versuche. Versuch es in {retryAfterSeconds, plural, one {# Sekunde} other {# Sekunden}} erneut.
- `auth.recovery.invalid`: Benutzername oder Wiederherstellungsschlüssel ist falsch.
- `auth.session.expired`: Deine Sitzung ist abgelaufen. Melde dich bitte erneut an.
- `auth.setup.already_done`: Dieses System ist bereits eingerichtet.
- `auth.totp.already_enabled`: Die Zwei-Faktor-Authentifizierung ist bereits aktiviert.
- `auth.totp.invalid`: Der Code ist falsch oder wurde bereits verwendet.
- `auth.totp.not_enrolled`: Die Zwei-Faktor-Authentifizierung wurde noch nicht eingerichtet.
- `auth.username.invalid`: Benutzernamen beginnen mit einem Kleinbuchstaben oder Unterstrich und enthalten nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche, höchstens 32 Zeichen.
- `auth.username.reserved`: Den Benutzernamen {username} verwendet das System selbst. Wähle einen anderen.

## desktop

- `desktop.device.not_found`: Für dieses Gerät wurde kein gespeicherter Desktop gefunden. Er ist vielleicht abgelaufen.
- `desktop.item.conflict`: Dieses Desktop-Objekt wurde inzwischen auf einem anderen Gerät geändert.
- `desktop.item.invalid`: Das Desktop-Objekt konnte nicht gespeichert werden, weil sein Format unbekannt ist.
- `desktop.item.limit_reached`: Der Desktop ist voll. Er fasst höchstens {max} Objekte.
- `desktop.item.not_found`: Dieses Desktop-Objekt gibt es nicht mehr. Es wurde vielleicht auf einem anderen Gerät gelöscht.
- `desktop.layout.conflict`: Das Desktop-Layout wurde inzwischen aus einem anderen Tab gespeichert.
- `desktop.layout.invalid`: Das Desktop-Layout konnte nicht gespeichert werden, weil sein Format unbekannt ist.
- `desktop.layout.too_large`: Das Desktop-Layout ist zu groß zum Speichern. Gespeichert werden höchstens {maxWindows} Fenster und {maxAppDataKb} KB App-Daten.
- `desktop.note.too_long`: Die Notiz ist zu lang. Eine Notiz fasst höchstens {maxLength} Zeichen.

## fileservices

- `fileservices.service.unavailable`: {service, select, smb {SMB} sftp {SFTP} other {Dieser Dienst}} lässt sich nicht einschalten: Sein Programm ist auf diesem System nicht installiert.
- `fileservices.workgroup.invalid`: Gib eine Arbeitsgruppe aus 1 bis {max} Buchstaben, Ziffern, Punkten, Bindestrichen oder Unterstrichen ein, die mit einem Buchstaben oder einer Ziffer beginnt.

## fs

- `fs.cursor.invalid`: Die Listenposition ist nicht mehr gültig. Lade den Ordner neu.
- `fs.entry.access_denied`: Das System erlaubt keinen Zugriff auf dieses Element.
- `fs.entry.exists`: „{name}“ gibt es hier schon.
- `fs.entry.is_folder`: Das ist ein Ordner, keine Datei.
- `fs.entry.not_folder`: Das ist eine Datei, kein Ordner.
- `fs.entry.not_found`: Die Datei oder der Ordner wurde nicht gefunden. Vielleicht wurde sie verschoben oder gelöscht.
- `fs.folder.not_empty`: Der Ordner ist nicht leer.
- `fs.io.failed`: Das Dateisystem hat einen Fehler gemeldet (errno {errno}).
- `fs.name.invalid`: Dieser Name geht nicht. Namen dürfen nicht leer sein, keinen Schrägstrich enthalten und höchstens 255 Bytes lang sein.
- `fs.operation.into_itself`: Ein Ordner kann nicht in sich selbst kopiert oder verschoben werden.
- `fs.operation.invalid`: Dieser Dateivorgang ist nicht gültig.
- `fs.path.invalid`: Dieser Pfad ist ungültig. Pfade gehen vom Share aus, ohne „.“ oder „..“, und sind höchstens {maxBytes} Bytes lang.
- `fs.range.not_satisfiable`: Den angefragten Teil der Datei gibt es nicht.
- `fs.share.data_choice_required`: Wähle, was mit den Daten passiert: behalten oder endgültig löschen.
- `fs.share.dataset_name_invalid`: Aus „{name}“ lässt sich kein Dataset-Name bilden. Nutze mindestens einen Buchstaben von a bis z oder eine Ziffer.
- `fs.share.description_invalid`: Die Beschreibung darf höchstens {max} Zeichen und keine Zeilenumbrüche haben.
- `fs.share.exists`: Einen Share mit diesem Namen gibt es schon.
- `fs.share.folder_dev_only`: Vorhandene Ordner lassen sich nur auf einem Entwicklungsrechner als Share eintragen. Lege stattdessen einen freigegebenen Ordner an; er bekommt ein eigenes Dataset.
- `fs.share.invalid`: Der Share konnte nicht angelegt werden. Er braucht einen Namen und einen vorhandenen Ordner außerhalb der Systemverzeichnisse.
- `fs.share.name_mismatch`: Der eingegebene Name stimmt nicht. Gib genau {name} ein.
- `fs.share.name_reserved`: Den Namen {name} nutzt Pithyx selbst. Wähle einen anderen Namen.
- `fs.share.no_dataset`: Dieser freigegebene Ordner ist ein einfacher Ordner, kein Dataset. Seine Dateien können nur behalten werden.
- `fs.share.not_found`: Der Share wurde nicht gefunden, oder du hast keinen Zugriff darauf.
- `fs.share.path_taken`: Unter {path} ist schon etwas anderes eingehängt. Wähle einen anderen Namen.
- `fs.share.pool_not_prepared`: Der Pool {pool} hat keinen Platz für freigegebene Ordner (pithyx/shares), deshalb lässt sich dort keiner anlegen.
- `fs.share.read_only`: In diesem Share darfst du nur lesen.
- `fs.share.unavailable`: {name} lässt sich gerade nicht öffnen: {reason, select, pool_missing {sein Pool ist nicht angeschlossen} pool_unavailable {sein Pool ist angehalten, weil Platten fehlen} other {sein Ordner ist nicht eingehängt}}. Er kommt von selbst zurück, sobald seine Platten wieder da sind.
- `fs.thumbnail.not_found`: Für diese Datei gibt es noch keine Vorschau.
- `fs.thumbnail.too_many`: Frag höchstens {max} Vorschauen auf einmal an.
- `fs.trash.retention_invalid`: Der Papierkorb behält Elemente zwischen 0 und {max} Tagen (0 behält sie, bis er geleert wird).
- `fs.upload.incomplete`: Der Upload wurde unterbrochen. Es wurde nichts gespeichert.
- `fs.version.not_found`: Diese Version gibt es nicht mehr. Vielleicht wurde der Snapshot gelöscht; lade die Liste neu.
- `fs.volume.full`: Es ist nicht genug Platz frei.
- `fs.volume.read_only`: Der Speicher ist schreibgeschützt.

## homes

- `homes.choice.invalid`: Wähle, was mit dem Home-Ordner passiert: einen freigegebenen Ordner für seine Dateien, oder gib zum Löschen den Benutzernamen ein.
- `homes.home.in_use`: Dieser Home-Ordner gehört noch einem Benutzer. Nur der Home-Ordner eines gelöschten Benutzers lässt sich allein löschen oder verschieben, und der Home-Ordner eines Benutzers nur, solange sein Pool fehlt.
- `homes.home.name_mismatch`: Gib zur Bestätigung genau {name} ein.
- `homes.home.not_found`: Diesen Home-Ordner gibt es nicht (mehr).
- `homes.move.running`: Die Home-Ordner ziehen schon auf einen anderen Pool um. Warte, bis der Umzug fertig ist.
- `homes.pool.no_space`: Der Pool hat zu wenig freien Platz für die Home-Ordner: {neededBytes, number} Bytes werden gebraucht, {availableBytes, number} sind frei.
- `homes.pool.taken`: Auf dem Ziel-Pool gibt es schon einen Home-Ordner namens {folder}.
- `homes.pool.unavailable`: Der Pool {pool} kann gerade keine Home-Ordner aufnehmen: {reason, select, missing {er ist nicht importiert} offline {er ist nicht online} read_only {er ist nur lesbar} locked {er ist gesperrt} not_prepared {er wurde nicht von Pithyx eingerichtet} not_mounted {seine Home-Ordner sind nicht eingehängt} other {er ist nicht verfügbar}}.
- `homes.pool.unchanged`: Die Home-Ordner liegen schon auf diesem Pool.
- `homes.quota.invalid`: Eine Quota ist mindestens 1 MiB groß, oder es gibt keine Grenze.

## installer

- `installer.check.failed`: Dieser Computer erfüllt eine Voraussetzung von Pithyx nicht. Die erste Seite des Installers zeigt, welche.
- `installer.claim.required`: Ein anderer Browser führt diese Installation. Um neu zu beginnen, starte den Computer erneut vom USB-Stick.
- `installer.claim.taken`: Diese Installation wird schon in einem anderen Browser ausgeführt. Um neu zu beginnen, starte den Computer erneut vom USB-Stick.
- `installer.disk.count`: Wähle eine Festplatte oder zwei verschiedene für einen Spiegel.
- `installer.disk.unsuitable`: Auf dieser Festplatte kann Pithyx nicht installiert werden. Wähle eine andere.
- `installer.erase.not_confirmed`: Bestätige, dass alle Daten auf den gewählten Festplatten gelöscht werden.
- `installer.hostname.invalid`: Verwende für den Namen Kleinbuchstaben, Ziffern und Bindestriche, höchstens 63 Zeichen, ohne Bindestrich am Anfang oder Ende.
- `installer.install.failed`: Die Installation ist fehlgeschlagen. Nichts wurde vollständig installiert; du kannst es erneut versuchen. Das Protokoll des Installers enthält die Details.
- `installer.install.running`: Die Installation läuft bereits oder ist abgeschlossen.
- `installer.keyboard.invalid`: Wähle ein Tastaturlayout aus der Liste.
- `installer.reboot.not_ready`: Der Computer kann erst neu starten, wenn die Installation abgeschlossen ist.

## jobs

- `jobs.job.not_found`: Diese Aufgabe gibt es nicht oder sie wurde bereits entfernt.

## logs

- `logs.app.invalid`: Die App-Kennung {app} ist ungültig.
- `logs.archive.pool_unavailable`: Der Pool {pool} kann das Protokollarchiv gerade nicht aufnehmen. Vielleicht fehlt er, ist gesperrt oder schreibgeschützt.
- `logs.batch.too_large`: Eine App kann höchstens {max} Protokolleinträge auf einmal senden.
- `logs.query.invalid`: Der Protokollfilter ist ungültig. Prüfe den Zeitraum.
- `logs.settings.invalid`: {field} muss zwischen {min} und {max} liegen.

## network

- `network.address.invalid`: Die {field, select, ipv6Address {IPv6-Adresse} other {IPv4-Adresse}} von {name} ist ungültig. Gib sie mit Präfixlänge ein, zum Beispiel {field, select, ipv6Address {2001:db8::10/64} other {192.168.1.10/24}}.
- `network.apply.failed`: Die Netzwerkänderung konnte nicht angewendet werden ({command} ist fehlgeschlagen) und wurde zurückgenommen. Details stehen im Protokollcenter.
- `network.bond.member_invalid`: {member} kann dem Bond {name} nicht beitreten: {reason, select, not_card {sie ist keine Netzwerkkarte} configured {sie hat eigene Einstellungen; entferne sie zuerst} other_bond {sie gehört zu einem anderen Bond} vlan_parent {sie trägt ein VLAN} other {sie ist nicht verfügbar}}.
- `network.bond.members_missing`: Der Bond {name} braucht mindestens eine Netzwerkkarte.
- `network.bond.primary_invalid`: Die primäre Karte des Bonds {name} muss eine seiner Karten sein.
- `network.change.empty`: Das sind schon die Einstellungen der Box.
- `network.change.not_found`: Diese Änderung wartet nicht mehr auf eine Bestätigung: Sie wurde behalten, rückgängig gemacht oder zurückgenommen.
- `network.change.pending`: Eine andere Netzwerkänderung wartet auf ihre Bestätigung. Behalte sie oder mach sie zuerst rückgängig.
- `network.config.unreachable`: Nach dieser Änderung hätte keine Schnittstelle eine Adresse, und niemand könnte die Box mehr erreichen.
- `network.default_interface.invalid`: {name} kann die Standardroute nicht tragen: Die Schnittstelle braucht eigene Einstellungen, muss eingeschaltet sein und ein Gateway bekommen.
- `network.dns.invalid`: „{server}“ ist keine IPv4- oder IPv6-Adresse.
- `network.dns.too_many`: Gib höchstens {max} Nameserver ein.
- `network.firewall.failed`: Die Firewall-Regeln konnten nicht angewendet werden. Die Einstellung ist gespeichert; Details stehen im Protokollcenter.
- `network.gateway.invalid`: Das {field, select, ipv6Gateway {IPv6} other {IPv4}}-Gateway von {name} muss eine Adresse in seinem Netz sein.
- `network.global.not_changeable`: Auf einem Entwicklungsrechner ändert Pithyx weder Hostnamen noch Nameserver oder Standardroute.
- `network.host_name.invalid`: Ein Hostname hat 1 bis 63 Buchstaben, Ziffern und Bindestriche und beginnt und endet nicht mit einem Bindestrich.
- `network.interface.duplicate`: Der Name {name} ist schon vergeben.
- `network.interface.kind_invalid`: Die Einstellungen passen nicht zu {name}.
- `network.interface.name_invalid`: „{name}“ kann kein Name eines Bonds oder VLANs sein: Nimm 1 bis 15 Kleinbuchstaben, Ziffern, Punkte, Binde- oder Unterstriche, beginnend mit einem Buchstaben.
- `network.interface.not_changeable`: Pithyx darf {name} auf diesem Rechner nicht ändern.
- `network.interface.unknown`: Diese Box hat keine Netzwerkkarte {name}.
- `network.mtu.invalid`: Die MTU von {name} muss zwischen {min} und {max} Bytes liegen.
- `network.search_domain.invalid`: „{domain}“ ist kein gültiger Domainname.
- `network.search_domain.too_many`: Gib höchstens {max} Suchdomains ein.
- `network.vlan.duplicate`: {parent} hat schon ein VLAN mit der ID {id}.
- `network.vlan.id_invalid`: Die VLAN-ID von {name} muss zwischen 1 und 4094 liegen.
- `network.vlan.parent_invalid`: {parent} kann das VLAN {name} nicht tragen: Wähle eine Netzwerkkarte oder einen Bond.

## notifications

- `notifications.message.invalid`: Die Benachrichtigung wurde nicht gesendet: {field, select, app {die App-ID ist ungültig} title {der Titel ist leer oder länger als {maxLength} Zeichen} other {der Text ist länger als {maxLength} Zeichen}}.
- `notifications.notification.not_found`: Diese Benachrichtigung gibt es nicht mehr.

## permissions

- `permissions.grant.invalid`: Das Recht „{resource}“ lässt sich so nicht vergeben: Es ist unbekannt, doppelt angegeben oder die Stufe passt nicht (Lesen oder Lesen und Schreiben für einen freigegebenen Ordner).

## proxy

- `proxy.access.denied`: Du darfst {host} nicht öffnen. Ein Administrator kann dich beim Proxy-Host zulassen.
- `proxy.address.denied`: Deine Adresse darf diese Seite nicht öffnen.
- `proxy.address.invalid`: „{value}“ ist keine IP-Adresse und kein Bereich wie 192.168.1.0/24.
- `proxy.auth.required`: Melde dich zuerst an.
- `proxy.basic_auth.invalid`: Der Basic-Auth-Benutzer „{username}“ ist ungültig: Der Name braucht 1 bis 64 Zeichen ohne Doppelpunkt und darf nur einmal vorkommen, das Passwort 1 bis 1024 Zeichen.
- `proxy.basic_auth.password_missing`: Gib ein Passwort für den neuen Benutzer „{username}“ ein.
- `proxy.certificate.missing`: Lade das Zertifikat und seinen privaten Schlüssel hoch.
- `proxy.certificate.name_mismatch`: Das Zertifikat deckt {name} nicht ab.
- `proxy.domain.invalid`: „{name}“ ist keine gültige Domain.
- `proxy.domain.taken`: Ein anderer Host beantwortet {name} bereits.
- `proxy.domains.missing`: Gib mindestens eine Domain ein.
- `proxy.domains.too_many`: {max, plural, one {Gib höchstens # Domain ein.} other {Gib höchstens # Domains ein.}}
- `proxy.header.invalid`: Der Header „{name}“ ist nicht erlaubt. Prüfe Name und Wert; manche Header setzt der Proxy selbst, und jeder darf nur einmal vorkommen.
- `proxy.headers.too_many`: {max, plural, one {Setze höchstens # Header.} other {Setze höchstens # Header.}}
- `proxy.host.not_found`: Es gibt keinen Proxy-Host mit der Nummer {id}.
- `proxy.host.unknown`: Dieser Name ist auf dieser Box nicht eingerichtet.
- `proxy.limit.out_of_range`: Der Wert muss zwischen {min} und {max} liegen.
- `proxy.loop.detected`: Der Proxy-Host führt auf sich selbst zurück.
- `proxy.redirect.not_found`: Es gibt keinen Weiterleitungs-Host mit der Nummer {id}.
- `proxy.redirect.status_invalid`: {status} ist kein Weiterleitungsstatus. Nimm 301, 302, 307 oder 308.
- `proxy.redirect.target_invalid`: „{target}“ ist keine vollständige http- oder https-Adresse.
- `proxy.sign_in.address_invalid`: „{address}“ ist keine Adresse wie https://nas.home.arpa:7484.
- `proxy.sign_in.group_not_found`: Es gibt keine Gruppe namens {name}.
- `proxy.sign_in.user_not_found`: Es gibt keinen Benutzer namens {name}.
- `proxy.stream.name_invalid`: {max, plural, one {Der Name darf höchstens # Zeichen und keine Steuerzeichen haben.} other {Der Name darf höchstens # Zeichen und keine Steuerzeichen haben.}}
- `proxy.stream.not_found`: Es gibt keinen Stream mit der Nummer {id}.
- `proxy.stream.port_in_use`: Ein anderes Programm nutzt Port {port} bereits.
- `proxy.stream.port_privileged`: Port {port} liegt unter 1024. Bestätige, dass du ihn nutzen willst.
- `proxy.stream.port_reserved`: Port {port} gehört zu einem Dienst der Box.
- `proxy.stream.port_taken`: Ein anderer Stream nutzt Port {port} bereits.
- `proxy.stream.protocol_missing`: Wähle TCP, UDP oder beides.
- `proxy.target.invalid`: „{host}“ ist kein gültiger Hostname und keine IP-Adresse.
- `proxy.target.loop`: Das Ziel ist diese Box auf Port {port}, auf dem der Proxy selbst antwortet.
- `proxy.target.on_box`: {host}:{port} ist diese Box. Bestätige, dass der Host zu einem Dienst der Box selbst führen soll.
- `proxy.target.timeout`: Das Ziel hat nicht rechtzeitig geantwortet.
- `proxy.target.unavailable`: Das Ziel ist nicht erreichbar.
- `proxy.ticket.target_invalid`: Diese Adresse gehört zu keinem Proxy-Host mit der Pithyx-Anmeldung.
- `proxy.websockets.disabled`: Dieser Host leitet keine WebSockets weiter.

## realtime

- `realtime.message.invalid`: Die Live-Verbindung hat eine unverständliche Nachricht erhalten.
- `realtime.topic.invalid`: {topic} ist kein gültiger Topic-Name und kein gültiges Muster.
- `realtime.topic.unknown`: Es gibt kein Live-Daten-Topic namens {topic}.
- `realtime.upgrade.required`: Diese Adresse akzeptiert nur WebSocket-Verbindungen.

## request

- `request.body.invalid`: Die Anfrage enthält ungültige Daten.
- `request.media_type.unsupported`: Die Anfrage verwendet einen Inhaltstyp, den der Server nicht akzeptiert.
- `request.method.not_allowed`: Dieser API-Endpunkt unterstützt die Anfragemethode nicht.
- `request.route.not_found`: Diesen API-Endpunkt gibt es nicht.

## sdk

- `sdk.backend.endpoint_unknown`: Die App hat eine Backend-Verbindung angefragt, die sie nicht hat ({endpoint}).
- `sdk.backend.unreachable`: Die App hat ihr Backend nicht erreicht ({endpoint}). Prüf die Verbindung zur Box.
- `sdk.method.unknown`: Diese Pithyx-Version unterstützt nicht, was die App angefragt hat ({method}).
- `sdk.protocol.unsupported`: Diese App braucht eine andere Pithyx-Version (Protokoll {protocol}, unterstützt {min} bis {max}).
- `sdk.request.invalid`: Die App hat eine Anfrage geschickt, die der Desktop nicht verarbeiten kann ({method}).
- `sdk.request.timeout`: Der Desktop hat der App nicht rechtzeitig geantwortet ({method}).
- `sdk.transfer.cancelled`: Die Übertragung wurde abgebrochen.
- `sdk.transport.closed`: Die Verbindung zwischen App und Desktop ist getrennt. Öffne die App noch einmal.

## storage

- `storage.alert.not_found`: Dieser Hinweis ist nicht mehr aktiv. Seine Ursache ist behoben.
- `storage.command.failed`: Der Speicherbefehl {command} ist fehlgeschlagen (Exit-Code {exitCode}). Danach wurde nichts mehr ausgeführt; Details stehen im Protokoll.
- `storage.command.timed_out`: {command} ist nicht innerhalb von {minutes, plural, one {# Minute} other {# Minuten}} fertig geworden. Wahrscheinlich antwortet eine Platte des Pools nicht mehr und ZFS wartet auf sie. Prüfe die Platten unter Speicher. Reagieren auch andere Pools nicht mehr, starte die Box neu.
- `storage.dataset.compression_invalid`: Die Kompression {compression} setzt Pithyx nicht. Wähle off, lz4, zle, zstd (Stufen 1 bis 19) oder gzip (Stufen 1 bis 9).
- `storage.dataset.exists`: Es gibt schon ein Dataset namens {name}.
- `storage.dataset.in_use_by_share`: Die Freigabe {share} hat ihren Ordner in {dataset}. Lösche zuerst die Freigabe auf der Seite der freigegebenen Ordner; dort entscheidest du, was mit ihren Daten passiert.
- `storage.dataset.limit_invalid`: {property, select, quota {Das Kontingent} other {Die Reservierung}} kann nicht negativ sein. Nimm 0, wenn es keine Grenze geben soll.
- `storage.dataset.managed`: Pithyx findet {dataset} über seinen Namen (ein Home-Ordner, eine App oder Systemdaten), deshalb lässt es sich hier weder umbenennen noch löschen.
- `storage.dataset.name_invalid`: Dataset-Namen bestehen aus Buchstaben, Ziffern, ., - und _, beginnen mit einem Buchstaben oder einer Ziffer und haben bis zu 64 Zeichen.
- `storage.dataset.name_mismatch`: Gib zur Bestätigung genau den vollständigen Dataset-Namen {name} ein.
- `storage.dataset.not_found`: Es gibt kein Dataset namens {dataset}. Lade die Seite neu.
- `storage.dataset.property_unsupported`: {dataset} nimmt die Einstellung {property} nicht an. Volumes, die Wurzel des Pools und die Datasets des Pithyx-Layouts nehmen nur eine Kompression, und die Record-Größe gibt es nur für Dateisysteme.
- `storage.dataset.protected`: {dataset} ist die Wurzel des Pools oder Teil des Pithyx-Layouts. Pithyx benennt es nicht um und löscht es nicht.
- `storage.dataset.quota_below_used`: Das Kontingent muss mindestens so groß sein wie der Platz, den das Dataset jetzt belegt, mit Snapshots und Unter-Datasets.
- `storage.dataset.record_size_invalid`: Die Record-Größe muss eine Zweierpotenz von 4 KiB bis 1 MiB sein.
- `storage.dataset.reservation_too_large`: So viel kann der Pool für dieses Dataset gerade nicht reservieren. Wähle eine kleinere Reservierung.
- `storage.dataset.unchanged`: Es gibt nichts zu ändern: {dataset} hat diese Einstellungen schon.
- `storage.disk.not_found`: Die Platte ist nicht mehr vorhanden. Lade die Liste neu und wähle noch einmal.
- `storage.disk.refused`: Die Platte darf nicht verwendet werden: {reason, select, system_disk {sie enthält das System} mounted {ein Dateisystem darauf ist in Benutzung} pool_member {sie gehört zu einem Pool} not_test_disk {sie ist keine eingetragene Testplatte} other {sie ist nicht sicher verwendbar}}.
- `storage.encryption.unavailable`: Verschlüsselung kommt mit dem Schlüsseltresor im nächsten Update. Ein Pool lässt sich nur beim Anlegen verschlüsseln; leg ihn also nur dann unverschlüsselt an, wenn das für seine Daten in Ordnung ist.
- `storage.import.device_unknown`: Das Gerät {device} dieses Pools liegt auf keiner Platte, die Pithyx kennt, deshalb kann Pithyx es nicht prüfen. Es wurde nichts importiert.
- `storage.import.force_required`: Der Pool {name} wurde zuletzt von einem anderen System benutzt. Importiere ihn nur, wenn dieses System ihn nicht mehr benutzt: Wähle den erzwungenen Import und gib den Pool-Namen ein.
- `storage.import.not_found`: Dieser Pool ist auf den Platten nicht mehr zu finden. Such noch einmal.
- `storage.import.not_importable`: Der Pool {name} lässt sich nicht importieren ({state}). Schließ die fehlenden Platten an und such noch einmal.
- `storage.import.preview_required`: Importiere den Pool {name} zuerst schreibgeschützt und prüf seine Datasets, dann importiere ihn zur Nutzung.
- `storage.plan.action_invalid`: Unbekannte Speicheraktion.
- `storage.plan.expired`: Dieser Plan ist älter als 10 Minuten. Zeig ihn noch einmal an, damit die Platten erneut geprüft werden.
- `storage.plan.not_found`: Diesen Plan gibt es nicht mehr (er lief schon, ist abgelaufen oder der Daemon wurde neu gestartet). Zeig ihn noch einmal an.
- `storage.plan.stale`: Eine Platte hat sich geändert, nachdem der Plan angezeigt wurde. Es wurde nichts verändert; zeig den Plan noch einmal an.
- `storage.pool.disk_count`: {layout} braucht mindestens {min, plural, one {# Platte} other {# Platten}}; {count, plural, one {# ist} other {# sind}} ausgewählt.
- `storage.pool.disks_missing`: Platten von {name} sind nicht angeschlossen, deshalb lässt er sich gerade weder löschen noch abmelden: Der Befehl würde den Pool anhalten und hängen bleiben, bis die Box neu startet. Schließ die Platten erst wieder an, oder starte die Box neu, damit sie den Pool vergisst.
- `storage.pool.encryption_required`: Beantworte zuerst die Frage zur Verschlüsselung: Sie lässt sich nur beim Anlegen des Pools entscheiden.
- `storage.pool.expanding`: Der Pool {name} wird schon erweitert. Die nächste Platte kannst du hinzufügen, wenn das fertig ist.
- `storage.pool.layout_invalid`: Unbekanntes Pool-Layout.
- `storage.pool.name_invalid`: Pool-Namen beginnen mit einem Kleinbuchstaben und bestehen aus bis zu 32 Kleinbuchstaben, Ziffern, - und _. Namen wie mirror oder raidz sind reserviert.
- `storage.pool.name_mismatch`: Gib zur Bestätigung genau den Pool-Namen {name} ein.
- `storage.pool.name_taken`: Es gibt schon einen Pool namens {name}.
- `storage.pool.not_found`: Es gibt keinen Pool namens {name}.
- `storage.pool.not_prepared`: Pithyx hat den Pool {pool} nicht eingerichtet (er hat kein pithyx-Dataset), deshalb legt es darauf nichts an.
- `storage.pool.read_only`: Der Pool {name} ist schreibgeschützt importiert und lässt sich nicht ändern. Importiere ihn zuerst zur Nutzung.
- `storage.pool.suspended`: {name} hat alle Lese- und Schreibzugriffe angehalten, weil zu viele seiner Platten fehlen. Löschen oder Abmelden würde jetzt hängen bleiben, bis die Box neu startet. Schließ die Platten wieder an; Pithyx setzt den Pool dann von selbst fort.
- `storage.schedule.invalid`: Dieser Zeitplan lässt sich nicht setzen. Wähle Aus, Wöchentlich oder Monatlich für einen vorhandenen Pool.
- `storage.scrub.not_running`: Pool {pool} wird gerade nicht geprüft.
- `storage.scrub.running`: Pool {pool} wird schon geprüft.
- `storage.snapshot.confirmation_mismatch`: Der eingegebene Name passt nicht zum Dataset. Es wurde nichts zurückgesetzt.
- `storage.snapshot.dataset_not_found`: Es gibt kein Dataset namens {dataset}. Lade die Seite neu.
- `storage.snapshot.exists`: Es gibt schon einen Snapshot namens {name}. Warte eine Sekunde und versuch es noch einmal.
- `storage.snapshot.held`: Der Snapshot {name} wird festgehalten und kann nicht gelöscht werden. Gib ihn zuerst frei.
- `storage.snapshot.newer_exist`: Die neueren Snapshots haben sich seit der Vorschau geändert: Das Dataset hat jetzt {count, plural, one {# neueren Snapshot} other {# neuere Snapshots}}. Es wurde nichts zurückgesetzt; zeig den Plan noch einmal an.
- `storage.snapshot.not_found`: Es gibt keinen Snapshot namens {name}. Lade die Liste neu.
- `storage.snapshot.not_pithyx`: Pithyx löscht nur Snapshots, die es selbst angelegt hat. {name} stammt von jemand anderem und bleibt.
- `storage.snapshot.schedule_invalid`: Jeder Zeitplan ist stündlich, täglich, wöchentlich oder monatlich, jeweils einmal, und behält zwischen 1 und {max} Snapshots.
- `storage.vdev.not_found`: Der Pool hat dieses Gerät nicht (mehr). Lade neu und wähle noch einmal.
- `storage.vdev.not_raidz`: Nur eine RAID-Z-Gruppe lässt sich um eine Platte erweitern; {vdev} ist keine.
- `storage.volume.size_invalid`: Ein Volume braucht mindestens 1 MiB.
- `storage.volume.too_large`: Das Volume passt nicht in den freien Platz des Pools. Mach es kleiner oder leg es als Sparse-Volume an.
- `storage.zfs.unavailable`: ZFS hat nicht rechtzeitig geantwortet oder einen Fehler gemeldet, deshalb kann Pithyx nicht zeigen, was sich ändern würde. Versuch es gleich noch einmal. Wenn es so bleibt, wartet vielleicht ein Pool auf Platten, die fehlen: sieh im Speicher nach.

## store

- `store.app.not_found`: Der Katalog hat keine App {id} {version} für diese Box.
- `store.catalog.architecture_missing`: Der Katalog führt unter {path} ein Image ohne die Architektur {architecture}.
- `store.catalog.built_in`: Die Kataloge des Pithyx-Projekts lassen sich nicht entfernen, nur ausschalten.
- `store.catalog.busy`: Der Katalog {catalog} wird schon geprüft.
- `store.catalog.data_version_decreased`: Der Katalog senkt unter {path} die Datenversion auf {dataVersion}, nach {previous} in einer älteren Version.
- `store.catalog.exists`: Diese Box hat den Katalog {catalog} schon.
- `store.catalog.id_reserved`: Der Katalog nutzt unter {path} die ID {id}, die nur der offizielle Pithyx-Katalog nutzen darf.
- `store.catalog.invalid_json`: Die Datei {file} des Katalogs ist kein gültiges JSON.
- `store.catalog.mismatch`: Der Index des Katalogs hat unter {path} den Wert {value}, diese Box erwartet aber {expected}.
- `store.catalog.not_found`: Diese Box hat keinen Katalog {catalog}, oder er ist ausgeschaltet.
- `store.catalog.rule_violation`: Der Pull Request verletzt eine Regel des Katalogs: {rule, select, one_app {{path} liegt außerhalb des einen App-Ordners, den ein Pull Request ändern darf} required_file {{path} fehlt} file_type {{path} ist eine Dateiart, die ein Katalog nicht annimmt} binary {{path} ist binär oder kein UTF-8} minified {{path} sieht minifiziert oder generiert aus} media {{path} ist nicht das Bild oder die Schrift, die der Name angibt} unpinned {Zeile {line} von {path} nutzt das Image {image}, das nicht mit @sha256 festgelegt ist} screenshot {{path} ist kein Screenshot direkt in screenshots/ als PNG-, JPEG- oder WebP-Datei mit kleingeschriebenem Namen und höchstens 1 MB} screenshots {{path} enthält mehr als {limit} Screenshots} app_size {{path} ist größer als {limit} Byte} folder_id {der Ordner von {path} muss wie die ID der App heißen: {id}} manifest_field {das Manifest {path} braucht das Feld {field}} license {{license} in {path} ist keine von der OSI anerkannte Lizenz} version_not_higher {Version {version} in {path} ist nicht höher als die veröffentlichte {published}} maintainer {{author} gehört nicht zu den Maintainern der App} maintainers_invalid {{path} ist keine gültige Liste von Maintainern} other {{path} verletzt eine Regel}}.
- `store.catalog.schema_violation`: Die Datei {file} des Katalogs ist unter {path} ungültig ({keyword}).
- `store.catalog.sequence_old`: Der Index des Katalogs ist älter (Sequenz {sequence}) als einer, den diese Box schon geprüft hat ({known}). Die Box behält ihre Kopie.
- `store.catalog.signature_invalid`: Der Index des Katalogs ist nicht korrekt signiert ({reason, select, missing {die Signatur fehlt} malformed {die Signaturdatei ist ungültig} untrusted {keine Signatur stammt von einem Schlüssel, dem diese Box für ihren Kanal vertraut} mismatch {eine Signatur passt nicht zum Index} other {die Signatur belegt ihn nicht}}). Die Box behält ihre zuletzt geprüfte Kopie.
- `store.catalog.unreachable`: Der Katalog lässt sich nicht abrufen: {reason, select, timeout {der Server hat nicht rechtzeitig geantwortet} auth {das Repository hat den Zugriff verweigert; prüfe die URL und den Deploy-Key} host_key {der Schlüssel des Servers ist ein anderer als der, den diese Box gespeichert hat} branch {er hat für diesen Kanal noch nichts veröffentlicht} other {der Abruf ist fehlgeschlagen}}. Die Box behält ihre letzte geprüfte Kopie.
- `store.catalog.url_invalid`: Das ist keine Katalog-URL, die die Box abruft: {reason, select, scheme {nutze https:// oder SSH (git@host:besitzer/repository.git)} host {der Host fehlt oder ist nicht erlaubt} other {der Pfad ist nicht erlaubt}}.
- `store.catalog.version_unsupported`: Die Datei {file} des Katalogs hat die Formatversion {version}, diese Box liest Version {supported}. Aktualisiere Pithyx, um diesen Katalog zu nutzen.
- `store.package.hash_mismatch`: Eine Datei des Katalogs passt nicht zu seinem Index ({path}). Die Box installiert sie nicht.

## system

- `system.backup.category_missing`: Dieses Backup enthält {category, select, users {die Benutzer} sharedFolders {die freigegebenen Ordner} storage {die Speicher-Einstellungen} system {die Systemeinstellungen} certificates {die Zertifikate und Schlüssel} apps {die Apps} other {{category}}} nicht.
- `system.backup.invalid`: Diese Datei ist kein Pithyx-Konfigurationsbackup oder sie ist beschädigt.
- `system.backup.password_wrong`: Das Backup-Passwort ist falsch.
- `system.backup.restore_expired`: Das geprüfte Backup ist nicht mehr verfügbar. Wähle die Datei noch einmal aus.
- `system.backup.restore_failed`: Die Wiederherstellung konnte nicht angewendet werden. Es wurde nichts geändert; die Details stehen im Log Center.
- `system.backup.restore_running`: Es läuft bereits eine Wiederherstellung.
- `system.backup.too_large`: Diese Datei ist größer, als ein Konfigurationsbackup sein kann (höchstens {maxMb} MB).
- `system.backup.too_new`: Eine neuere Pithyx-Version ({version}) hat dieses Backup erstellt. Aktualisiere zuerst diese Box.
- `system.internal.unexpected`: Auf dem Server ist ein Fehler aufgetreten. Die Details stehen in den Logs.
- `system.origin.forbidden`: Die Anfrage kam von einer anderen Website und wurde abgelehnt.
- `system.time.apply_failed`: Die Zeiteinstellung konnte nicht übernommen werden ({command} endete mit Exit-Code {exitCode}). Die Details stehen im Log.
- `system.time.server_invalid`: „{server}“ ist weder ein Hostname noch eine Adresse.
- `system.time.servers_too_many`: Gib höchstens {max} Zeitserver an.
- `system.time.zone_invalid`: Das System kennt die Zeitzone „{zone}“ nicht.

## tls

- `tls.custom.expired`: Das Zertifikat ist gerade nicht gültig: Es hat noch nicht begonnen oder ist schon abgelaufen.
- `tls.custom.invalid`: Das ist kein Zertifikat im PEM-Format, oder es ist größer als 64 KiB.
- `tls.custom.key_mismatch`: Der private Schlüssel ist nicht lesbar, mit einem Passwort geschützt oder gehört nicht zum Zertifikat.
- `tls.issued.not_found`: Es gibt kein ausgestelltes Zertifikat mit der Nummer {id}.
- `tls.name.invalid`: {name} ist kein gültiger DNS-Name und keine IP-Adresse.
- `tls.name.not_permitted`: Die Zertifizierungsstelle der Box darf {name} nicht signieren. Lege eine neue Zertifizierungsstelle an, die den Namen einschließt, oder nutze ein eigenes Zertifikat.
- `tls.names.missing`: Gib mindestens einen Namen oder eine Adresse ein.
- `tls.names.too_many`: {max, plural, one {Gib höchstens # Namen ein.} other {Gib höchstens # Namen ein.}}
- `tls.validity.out_of_range`: Die Gültigkeit muss zwischen {min} und {max} Tagen liegen.

## update

- `update.apply.failed`: Das Update ist {step, select, snapshot {beim Snapshot} install {beim Installieren der Pakete} debian {bei den Debian-Updates} bootloader {beim Schreiben von GRUB auf die Platten} health {bei der Prüfung der neuen Version} other {bei {step}}} fehlgeschlagen ({command}, Exit-Code {exitCode}). Kam es über den Snapshot hinaus, ist die Box zur vorherigen Version zurückgekehrt.
- `update.apply.running`: Ein Update oder ein Rollback läuft bereits. Warte, bis die Box neu gestartet ist.
- `update.channel.invalid`: Die Datei des Update-Kanals lässt sich nicht lesen; die Box behält, was sie kannte.
- `update.channel.mismatch`: Die Update-Quelle antwortet mit dem Kanal {channel}, diese Box folgt aber {expected}.
- `update.channel.sequence_old`: Die Update-Quelle hat eine ältere Kanaldatei ({sequence}) geschickt, als die Box schon kannte ({known}). Sie wurde ignoriert.
- `update.channel.signature_invalid`: Die Signatur des Update-Kanals ist {reason, select, missing {nicht vorhanden} malformed {beschädigt} untrusted {von einem Schlüssel, dem diese Box nicht vertraut} other {falsch}}. Die Box ignoriert ihn.
- `update.download.mismatch`: Die heruntergeladene Update-Datei ist nicht die, die der Kanal nennt. Nichts wurde installiert; versuche es später noch einmal.
- `update.file.architecture`: Diese Update-Datei ist für {architecture}, diese Box ist aber {box}.
- `update.file.channel`: Das ist eine Update-Datei für {channel}, diese Box folgt aber dem Kanal {boxChannel}. Stell den Kanal unter Einstellungen > Updates um, um sie zu installieren.
- `update.file.hash_mismatch`: Die Update-Datei ist beschädigt: {path} passt nicht zu ihrem Manifest. Lade sie neu herunter.
- `update.file.invalid`: Das ist keine Pithyx-Update-Datei, oder sie ist beschädigt.
- `update.file.minimum`: Dieses Update braucht mindestens Pithyx {minimum}; diese Box hat {installed}. Installiere zuerst eine Version dazwischen.
- `update.file.missing_entry`: Die Update-Datei ist unvollständig: {path} fehlt.
- `update.file.not_found`: Es gibt keine hochgeladene Update-Datei mehr. Lade sie noch einmal hoch.
- `update.file.older`: Diese Update-Datei bringt Pithyx {version}, die Box hat aber schon {installed}. Eine ältere Version kommt nur über ein Rollback zurück.
- `update.file.signature_invalid`: Die Signatur der Update-Datei ist {reason, select, missing {nicht vorhanden} malformed {beschädigt} untrusted {von einem Schlüssel, dem diese Box nicht vertraut} other {falsch}}. Nichts wurde geändert.
- `update.file.too_large`: Die Update-Datei ist größer als {limit, number} Bytes.
- `update.file.unexpected_entry`: Die Update-Datei enthält {path}, das ihr Manifest nicht nennt. Nichts wurde geändert.
- `update.none.available`: Auf diesem Kanal gibt es keine neuere Version.
- `update.rollback.unconfirmed`: Die eingegebene Version passt nicht zu {version}. Nichts wurde geändert.
- `update.snapshot.not_found`: Den Snapshot {snapshot} gibt es nicht mehr.
- `update.source.invalid`: Die Datei der Update-Quelle besteht die Prüfung nicht ({reason, select, json {kein JSON oder größer als 64 KB} url {die URL muss https verwenden und '{channel}' enthalten} schema {ein Feld fehlt, ist unbekannt oder fehlerhaft, oder ein öffentlicher Schlüssel hat nicht 32 Byte} duplicate_key {eine Key-ID kommt zweimal vor} other {{reason}}}).
- `update.source.unreachable`: Die Update-Quelle ist nicht erreichbar ({reason, select, network {keine Verbindung} timeout {keine Antwort in der Zeit} status {Antwort {status}} missing {der Kanal hat noch kein Release} scheme {nur https ist erlaubt} other {{reason}}}). Die Box versucht es morgen wieder; du kannst stattdessen eine Update-Datei hochladen.
- `update.space.insufficient`: Die Systemplatte hat {free, number} Bytes frei, das Update braucht {needed, number}.
- `update.system.unsupported`: Updates gelten nur für eine Box, die mit dem Pithyx-Installer installiert wurde. Diese Maschine ist anders aufgebaut ({reason}).

## users

- `users.account.refused`: Das Linux-Konto {username} kann nicht angelegt werden ({reason}). Vielleicht nutzt ein Systemkonto diesen Namen schon.
- `users.gid.exhausted`: Es sind keine Gruppen-IDs mehr frei. Jede ID von 30000 bis 39999 wurde schon einmal vergeben.
- `users.group.builtin`: Die Gruppe users enthält alle Benutzer. Sie lässt sich nicht umbenennen, löschen oder mit Mitgliedern füllen.
- `users.group.description_invalid`: Die Beschreibung darf höchstens {max} Zeichen in einer Zeile haben.
- `users.group.exists`: Es gibt schon eine Gruppe namens {name}.
- `users.group.name_invalid`: Verwende Kleinbuchstaben, Ziffern, Bindestriche und Unterstriche, beginnend mit einem Buchstaben oder Unterstrich, höchstens 32 Zeichen.
- `users.group.name_reserved`: Der Name {name} gehört dem System. Wähle einen anderen.
- `users.group.not_found`: Die Gruppe wurde nicht gefunden. Vielleicht hat sie jemand gelöscht.
- `users.group.refused`: Die Linux-Gruppe {name} kann nicht angelegt werden ({reason}). Vielleicht verwendet eine Systemgruppe diesen Namen schon.
- `users.uid.exhausted`: Es sind keine Benutzer-IDs mehr frei. Jede ID von 20000 bis 29999 wurde schon einmal vergeben.
- `users.user.exists`: Es gibt schon einen Benutzer namens {username}.
- `users.user.last_admin`: Der letzte Administrator kann weder gelöscht werden noch das Administratorrecht verlieren.
- `users.user.not_found`: Der Benutzer wurde nicht gefunden. Vielleicht hat ihn jemand gelöscht.
- `users.user.self`: Du kannst dein eigenes Konto nicht löschen.

