<?php

return [
    'title' => 'Hosts',
    'subtitle' => 'Proxmox-Hosts und Kapazität.',
    'add' => 'Host hinzufügen',
    'empty' => 'Noch keine Hosts. Füge deinen ersten Server hinzu.',
    'no_matches' => 'Keine Hosts für diese Filter.',
    'search_placeholder' => 'Nach Name oder IP suchen …',
    'all_datacenters' => 'Alle Rechenzentren',
    'all_statuses' => 'Alle Status',
    'clear' => 'Zurücksetzen',
    'count' => ':shown von :total',
    'col' => [
        'host' => 'Host',
        'datacenter' => 'RZ',
        'health' => 'Zustand',
        'vpn' => 'VPN',
        'instances' => 'Instanzen',
        'capacity' => 'Kapazität',
        'status' => 'Status',
    ],
    'health' => [
        'online' => 'Online',
        'stale' => 'Verzögert',
        'offline' => 'Offline',
    ],
    'vpn' => [
        'not_configured' => 'Nicht eingerichtet',
        'connected' => 'Verbunden',
        'silent' => 'Still',
        'silent_since' => 'Still · :time',
        'unknown' => 'Unbekannt',
    ],

    'create_title' => 'Host hinzufügen',
    'create_sub' => 'Frischen Server (Debian, nur Root) automatisch als Proxmox-Host aufnehmen.',
    'back' => 'Zurück zu Hosts',
    'cancel' => 'Abbrechen',
    'save' => 'Onboarding starten',

    'field' => [
        'name' => 'Name',
        'name_hint' => 'Vergibt CluPilot fortlaufend. Erreichbar unter :fqdn',
        'datacenter' => 'Rechenzentrum',
        'public_ip' => 'Öffentliche IP',
        'root_password' => 'Root-Passwort (einmalig)',
        'root_password_hint' => 'Nur für den ersten Login. Wird nach dem Deploy des SSH-Schlüssels verworfen — nie dauerhaft gespeichert.',
    ],

    'datacenter' => [
        'fsn' => 'Falkenstein',
        'hel' => 'Helsinki',
    ],

    'capacity' => 'Kapazität',
    'free' => 'frei',
    'unknown' => '—',
    // Kurzform für Zeilen (Host-Liste, Kapazitätsseite) — dieselbe wie in
    // 'detail.reserved_for', aber klein genug für eine Tabellenzelle.
    'reserved_badge' => 'reserviert für :name',
    'meta' => [
        'cores' => 'Kerne',
        'ram' => 'RAM',
        'version' => 'Version',
        'wg_ip' => 'Mgmt-IP',
        'datacenter' => 'RZ',
    ],

    'status' => [
        'pending' => 'Ausstehend',
        'onboarding' => 'Onboarding',
        'active' => 'Aktiv',
        'error' => 'Fehler',
        'disabled' => 'Deaktiviert',
    ],

    'detail' => [
        'health' => 'Zustand',
        'storage' => 'Speicher',
        'compute' => 'Rechenleistung',
        'load' => 'Last',
        'load_hint' => 'letzte Stunde',
        'no_load' => 'Keine Messwerte — der Host antwortet gerade nicht.',
        'no_load_short' => 'keine Messwerte',
        'cpu' => 'CPU',
        'ram' => 'RAM',
        'cpu_load' => 'CPU-Auslastung',
        'ram_load' => 'RAM-Auslastung',
        'net_in' => 'Eingehend',
        'net_out' => 'Ausgehend',
        'public_ip' => 'Öffentliche IP',
        'spec' => 'Ausstattung',
        'build' => 'Bau',
        'onboarding_done' => 'Übernahme abgeschlossen',
        'node' => 'Node',
        'fqdn' => 'Adresse',
        'fqdn_hint' => 'Proxmox-Oberfläche — antwortet nur aus dem WireGuard-Tunnel.',
        'instances' => 'Instanzen',
        'hosted' => 'Gehostete Instanzen',
        'no_instances' => 'Auf diesem Host laufen noch keine Instanzen.',
        'last_seen' => 'Zuletzt gesehen :time',
        'never_seen' => 'Noch nie gesehen',
        'committed' => ':gb GB belegt',
        'reserve' => ':pct % Reserve',
        'reserve_label' => 'Reserve',
        'reserve_hint' => 'Anteil des Speichers, der frei bleibt.',
        'reserve_save' => 'Speichern',
        'reserve_saved' => 'Reserve aktualisiert.',
        'drain' => 'In Wartung',
        'activate' => 'Aktivieren',

        'reserved_general' => 'Allgemeiner Bestand.',
        'reserved_for' => 'Reserviert für :name.',
        'reserved_pick' => 'Kunde wählen …',
        'reserved_save' => 'Reservieren',
        'reserved_saved' => 'Für :name reserviert.',
        'reserved_release' => 'Lösen',
        'reserved_released' => 'Reservierung gelöst.',
    ],

    'istatus' => [
        'active' => 'Aktiv',
        'provisioning' => 'Bereitstellung',
        'failed' => 'Fehler',
        'suspended' => 'Ausgesetzt',
        'cancellation_scheduled' => 'Kündigung',
    ],

    'progress' => 'Fortschritt',
    'events' => 'Ereignisse',
    'no_run' => 'Für diesen Host läuft keine Bereitstellung.',
    'attempt' => 'Versuch',
    'retry' => 'Erneut versuchen',
    'error_title' => 'Onboarding fehlgeschlagen',

    'terminal' => [
        'open' => 'Terminal',
        'hint' => 'Öffnet ein eigenes Fenster mit einer Root-Sitzung auf diesem Host.',

        // Was auf der Bühne steht — dem Bild, das über dem Terminal liegt.
        // Beim Verbinden, beim Ende, beim Abbruch dasselbe Bild, anderer Text.
        // Die vier unteren kennt erst der Browser; sie reisen als JSON mit.
        'stage' => [
            'connecting' => [
                'title' => 'Verbinde mit :host',
                'note' => 'Das Einmal-Ticket wird eingelöst und die Sitzung aufgebaut.',
            ],
            'ended' => [
                'title' => 'Sitzung beendet',
                'note' => 'Die Verbindung zu :host wurde geschlossen. Ein neuer Anlauf öffnet eine frische Sitzung.',
            ],
            'lost' => [
                'title' => 'Keine Verbindung',
                'note' => 'Zu :host kam keine Sitzung zustande. Läuft der Terminal-Dienst, und steht der Tunnel?',
            ],
            'rejected' => [
                'title' => 'Ticket nicht mehr gültig',
                'note' => 'Ein Ticket gilt dreißig Sekunden und genau einmal. Dieses war abgelaufen oder schon eingelöst — ein neuer Anlauf stellt ein frisches aus.',
            ],
            // Absichtlich ohne Festlegung: die Brücke schickt 4502 für JEDE
            // gescheiterte Anmeldung — Maschine still, Fingerabdruck abweichend,
            // Schlüssel abgewiesen, Zeitüberschreitung. „Antwortet nicht" wäre
            // im häufigsten Fall schlicht falsch: nach einem frisch aufgesetzten
            // Host antwortet sie sehr wohl und lehnt ab.
            'unreachable' => [
                'title' => 'Keine Sitzung auf :host',
                'note' => 'Die Brücke kam nicht bis zur Kommandozeile: die Maschine antwortet nicht, ihr Fingerabdruck weicht vom hinterlegten ab, oder sie hat den Flottenschlüssel abgewiesen — Letzteres ist das Wahrscheinlichste, wenn der Host neu aufgesetzt wurde. Was davon, steht im Protokoll des Terminal-Dienstes; dieses Fenster erfährt es absichtlich nicht.',
            ],
            // Die beiden hier stehen für Fälle, die der Browser von sich aus gar
            // nicht auseinanderhalten kann — siehe resources/js/terminal.js.
            'service_down' => [
                'title' => 'Der Terminal-Dienst läuft nicht',
                'note' => 'Die Konsole steht, die Brücke dahinter nicht: nginx meldet für diese Stelle 502. Auf dem Server hilft „docker compose up -d terminal". Sie teilt sich den Netz-Namensraum des Provisioning-Containers und muss nach jedem Neustart des Tunnels selbst mit neu gestartet werden — sonst lauscht sie in einem Namensraum, den es nicht mehr gibt, und meldet dabei weiter „healthy".',
            ],
            'not_here' => [
                'title' => 'Auf diesem Namen gibt es kein Terminal',
                'note' => 'Die Brücke ist Werkzeug der Konsole und antwortet auf öffentlichen Hostnamen mit 404 — dieselbe Regel wie für /admin. Öffne die Konsole unter ihrem eigenen Namen.',
            ],
            'retry' => 'Neu verbinden',
        ],

        // Gründe, die schon der Server kennt. Sie stehen sofort da, statt dass
        // ein Fenster aufgeht und auf eine Verbindung wartet, die es nicht
        // geben kann.
        'problem' => [
            'no_key' => [
                'title' => 'Kein SSH-Schlüssel hinterlegt',
                'note' => 'Ohne den Flottenschlüssel kann sich niemand an einem Host anmelden. Er wird in den Zugangsdaten hinterlegt.',
            ],
            'not_ready' => [
                'title' => 'Dieser Host ist noch nicht so weit',
                'note' => 'Es fehlt die Tunneladresse oder der geprüfte Fingerabdruck. Beides entsteht während der Übernahme — solange die nicht durch ist, kann keine sichere Sitzung entstehen.',
            ],
            'unknown' => [
                'title' => 'Das Terminal lässt sich gerade nicht öffnen',
                'note' => 'Beim Ausstellen des Tickets ist etwas schiefgegangen. Der Vorfall steht im Protokoll; ein neuer Anlauf ist einen Versuch wert.',
            ],
        ],
    ],

    'remove' => 'Host entfernen',
    'remove_title' => 'Host entfernen?',
    'remove_body' => 'Entfernt nur den CluPilot-Eintrag von :name. Der physische Server wird NICHT gelöscht oder zurückgesetzt.',
    'remove_confirm' => 'Entfernen',

    'outcome' => [
        'advanced' => 'Weiter',
        'retry' => 'Wiederholung',
        'failed' => 'Fehler',
        'info' => 'Info',
    ],

    'step' => [
        'validate_host_input' => 'Eingaben prüfen',
        'establish_ssh_trust' => 'SSH-Vertrauen herstellen',
        'prepare_base_system' => 'Basissystem vorbereiten',
        'configure_wireguard' => 'WireGuard einrichten',
        'install_proxmox_ve' => 'Proxmox VE installieren',
        'reboot_into_pve_kernel' => 'In Proxmox-Kernel neu starten',
        'ensure_network_bridge' => 'Netzbrücke vmbr0 bauen',
        'configure_proxmox' => 'Proxmox konfigurieren',
        'create_automation_token' => 'Automation-Token erstellen',
        'verify_proxmox_api' => 'Proxmox-API prüfen',
        'build_vm_template' => 'VM-Vorlage bauen',
        'verify_vm_template' => 'VM-Vorlage prüfen',
        'register_host_dns' => 'Internen DNS-Namen registrieren',
        'register_capacity' => 'Kapazität registrieren',
        'secure_host_firewall' => 'Host-Firewall absichern',
        'complete_host_onboarding' => 'Onboarding abschließen',
    ],
    'release_reservation' => [
        'title' => 'Reservierung lösen?',
        'body' => ':host wird wieder allgemeiner Bestand — bisher reserviert für :customer. Der nächste Startkunde kann darauf landen.',
        'confirm' => 'Lösen',
    ],

    'reissue' => [
        'action' => 'Befehlszeile neu ausstellen',
        'title' => 'Neue Befehlszeile ausstellen?',
        'body' => 'Für :name entsteht ein neuer Einmal-Code und ein neues Schlüsselpaar. Die Zeile wird danach einmal angezeigt.',
        'invalidates' => 'Ein bisher ausgegebener Code wird damit wertlos. Läuft auf der Maschine gerade eine Übernahme, verliert sie mitten im Lauf ihren Ausweis — dann wird sie neu aufgesetzt, nicht nachgebessert.',
        'confirm' => 'Neu ausstellen',
        'done' => 'Fertig',
        'not_eligible' => 'Dieser Host läuft bereits. Eine neue Befehlszeile würde die Maschine neu aufsetzen — dafür wird der Host entfernt und neu angelegt.',
    ],

    'takeover' => [
        'eyebrow' => 'Host-Übernahme',
        'how_title' => 'So läuft eine Host-Übernahme ab',
        'how_sub' => 'Drei Schritte. Nur der erste passiert beim Anbieter.',

        'rail_title' => 'Ablauf',
        'badge_before' => 'vorher',

        // Kurz — sie stehen in der Schiene nebeneinander, nicht als Absatz.
        //
        // Bis hierher standen hier SECHS Schritte, und zwei davon hießen
        // „Rettungssystem". Sie beschrieben den Bootstrap-Weg: Rettungssystem
        // starten, Befehlszeile kopieren, dort einfügen. Beim Speichern läuft
        // aber die Provisionierungs-Pipeline — `EstablishSshTrust` meldet sich
        // schlicht mit dem Root-Passwort an einer LAUFENDEN Debian-Maschine an,
        // dann kommt Proxmox per Paket dazu. Die Seite beschrieb den einen Weg
        // und ging den anderen.
        's1_label' => 'Server bestellen',
        's2_label' => 'Host anlegen',
        's3_label' => 'Zusehen',

        's1_title' => 'Server bestellen',
        's1_body' => 'Dediziert, nicht Cloud, mit vorinstalliertem Debian 13 und Zugang als Root. Ohne /dev/kvm startet später kein Gast.',

        's2_title' => 'Host anlegen',
        's2_body' => 'Rechenzentrum, öffentliche IP, Root-Passwort. Das Passwort gilt nur für die erste Anmeldung und wird verworfen, sobald der Schlüssel liegt.',

        's3_title' => 'Zusehen',
        's3_body' => 'CluPilot meldet sich selbst an, installiert Proxmox, startet in dessen Kernel und baut Netzbrücke, Tunnel und Vorlage. Der Fortschritt läuft auf der Host-Seite mit.',

        'requirements_title' => 'Beim Anbieter, vorher',
        'requirements_sub' => 'Das muss stehen, bevor unten gespeichert wird — danach meldet sich CluPilot an der Maschine an.',

        'form_title' => 'Der Host',
        'form_sub' => 'Drei Angaben. Den Rest holt sich der Server selbst.',

        'command_title' => 'Die Befehlszeile',
        'command_sub' => 'Einfügen im Rettungssystem, als root. Sie trägt alles, was der Server vor dem Tunnel braucht.',

        'after_title' => 'Danach',

        'missing_title' => 'Der Tunnel ist noch nicht eingerichtet',
        'missing_body' => 'Es fehlt: :settings. Ohne diese Werte entsteht eine Zeile, die läuft und in einem Tunnel endet, der nie einen Handshake hat — und das fällt erst auf der Maschine auf.',

        'title' => ':name ist angelegt',
        'subtitle' => 'Noch drei Schritte, dann macht der Server den Rest allein.',

        'once_title' => 'Diese Zeile gibt es nur jetzt',
        'once_body' => 'In der Datenbank steht nur der Hash des Codes, der WireGuard-Schlüssel gar nicht. Neu laden bringt sie nicht zurück, sondern legt einen neuen Code an — der alte ist dann wertlos.',

        'watch' => 'Fortschritt ansehen',
        'copy' => 'Kopieren',
        'copied' => 'Kopiert',

        'footnote' => 'Der Code gilt 24 Stunden und lässt sich einmal einlösen. Bleibt die Übernahme stehen, wird die Maschine neu aufgesetzt statt nachgebessert — siehe docs/runbooks/host-bootstrap.md.',
    ],
];
