<?php

return [
    'title' => 'Hosts',
    'subtitle' => 'Proxmox hosts and capacity.',
    'add' => 'Add host',
    'empty' => 'No hosts yet. Add your first server.',
    'no_matches' => 'No hosts match these filters.',
    'search_placeholder' => 'Search by name or IP …',
    'all_datacenters' => 'All datacenters',
    'all_statuses' => 'All statuses',
    'clear' => 'Clear',
    'count' => ':shown of :total',
    'col' => [
        'host' => 'Host',
        'datacenter' => 'DC',
        'health' => 'Health',
        'vpn' => 'VPN',
        'instances' => 'Instances',
        'capacity' => 'Capacity',
        'status' => 'Status',
    ],
    'health' => [
        'online' => 'Online',
        'stale' => 'Stale',
        'offline' => 'Offline',
    ],
    'vpn' => [
        'not_configured' => 'Not configured',
        'connected' => 'Connected',
        'silent' => 'Silent',
        'silent_since' => 'Silent · :time',
        'unknown' => 'Unknown',
    ],

    'create_title' => 'Add host',
    'create_sub' => 'Onboard a fresh server (Debian, root only) as a Proxmox host automatically.',
    'back' => 'Back to hosts',
    'cancel' => 'Cancel',
    'save' => 'Start onboarding',

    'field' => [
        'name' => 'Name',
        'name_hint' => 'Assigned by CluPilot in sequence. Reachable at :fqdn',
        'datacenter' => 'Datacenter',
        'public_ip' => 'Public IP',
        'root_password' => 'Root password (one-time)',
        'root_password_hint' => 'Used for the first login only. Discarded after the SSH key is deployed — never stored permanently.',
    ],

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

    'capacity' => 'Capacity',
    'free' => 'free',
    'unknown' => '—',
    // Short form for rows (host list, capacity page) — same idea as
    // 'detail.reserved_for', just small enough for a table cell.
    'reserved_badge' => 'reserved for :name',
    'meta' => [
        'cores' => 'Cores',
        'ram' => 'RAM',
        'version' => 'Version',
        'wg_ip' => 'Mgmt IP',
        'datacenter' => 'DC',
    ],

    'status' => [
        'pending' => 'Pending',
        'onboarding' => 'Onboarding',
        'active' => 'Active',
        'error' => 'Error',
        'disabled' => 'Disabled',
    ],

    'detail' => [
        'health' => 'Health',
        'load' => 'Load',
        'load_hint' => 'last hour',
        'no_load' => 'No measurements — the host is not answering right now.',
        'no_load_short' => 'no measurements',
        'cpu' => 'CPU',
        'ram' => 'RAM',
        'cpu_load' => 'CPU usage',
        'ram_load' => 'RAM usage',
        'net_in' => 'Inbound',
        'net_out' => 'Outbound',
        'public_ip' => 'Public IP',
        'spec' => 'Specification',
        'build' => 'Build',
        'onboarding_done' => 'Onboarding complete',
        'storage' => 'Storage',
        'compute' => 'Compute',
        'node' => 'Node',
        'fqdn' => 'Address',
        'fqdn_hint' => 'Proxmox web UI — answers from inside the WireGuard tunnel only.',
        'instances' => 'Instances',
        'hosted' => 'Hosted instances',
        'no_instances' => 'No instances running on this host yet.',
        'last_seen' => 'Last seen :time',
        'never_seen' => 'Never seen',
        'committed' => ':gb GB committed',
        'reserve' => ':pct % reserve',
        'reserve_label' => 'Reserve',
        'reserve_hint' => 'Share of storage kept free.',
        'reserve_save' => 'Save',
        'reserve_saved' => 'Reserve updated.',
        'drain' => 'Maintenance',
        'activate' => 'Activate',

        'reserved_general' => 'General stock.',
        'reserved_for' => 'Reserved for :name.',
        'reserved_pick' => 'Pick a customer …',
        'reserved_save' => 'Reserve',
        'reserved_saved' => 'Reserved for :name.',
        'reserved_release' => 'Release',
        'reserved_released' => 'Reservation released.',
    ],

    'istatus' => [
        'active' => 'Active',
        'provisioning' => 'Provisioning',
        'failed' => 'Failed',
        'suspended' => 'Suspended',
        'cancellation_scheduled' => 'Cancelling',
    ],

    'progress' => 'Progress',
    'events' => 'Events',
    'no_run' => 'No provisioning run for this host.',
    'attempt' => 'Attempt',
    'retry' => 'Retry',
    'error_title' => 'Onboarding failed',

    'remove' => 'Remove host',
    'remove_title' => 'Remove host?',
    'remove_body' => 'Removes only the CluPilot record for :name. The physical server is NOT deleted or wiped.',
    'remove_confirm' => 'Remove',

    'outcome' => [
        'advanced' => 'Advanced',
        'retry' => 'Retry',
        'failed' => 'Failed',
        'info' => 'Info',
    ],

    'step' => [
        'validate_host_input' => 'Validate input',
        'establish_ssh_trust' => 'Establish SSH trust',
        'prepare_base_system' => 'Prepare base system',
        'configure_wireguard' => 'Configure WireGuard',
        'install_proxmox_ve' => 'Install Proxmox VE',
        'reboot_into_pve_kernel' => 'Reboot into Proxmox kernel',
        'ensure_network_bridge' => 'Build the vmbr0 network bridge',
        'configure_proxmox' => 'Configure Proxmox',
        'create_automation_token' => 'Create automation token',
        'verify_proxmox_api' => 'Verify Proxmox API',
        'build_vm_template' => 'Build VM template',
        'verify_vm_template' => 'Verify VM template',
        'register_host_dns' => 'Register internal DNS name',
        'register_capacity' => 'Register capacity',
        'secure_host_firewall' => 'Secure host firewall',
        'complete_host_onboarding' => 'Complete onboarding',
    ],
    'release_reservation' => [
        'title' => 'Release the reservation?',
        'body' => ':host becomes general stock again — previously reserved for :customer. The next new customer could land on it.',
        'confirm' => 'Release',
    ],

    'reissue' => [
        'action' => 'Re-issue the command line',
        'title' => 'Issue a new command line?',
        'body' => 'A new one-time code and a new key pair are created for :name. The line is then shown once.',
        'invalidates' => 'Any code handed out so far becomes worthless. If a takeover is running on the machine right now, it loses its credentials mid-run — and then it is reinstalled rather than repaired.',
        'confirm' => 'Re-issue',
        'done' => 'Done',
        'not_eligible' => 'This host is already running. A new command line would reinstall the machine — for that, remove the host and create it again.',
    ],

    'takeover' => [
        'eyebrow' => 'Host takeover',
        'how_title' => 'How a host takeover works',
        'how_sub' => 'Six steps, roughly 20 to 40 minutes. The first two happen at the provider.',

        'rail_title' => 'Procedure',
        'badge_before' => 'first',

        's1_label' => 'Order server',
        's2_label' => 'Rescue system',
        's3_label' => 'Add host',
        's4_label' => 'Copy line',
        's5_label' => 'Paste',
        's6_label' => 'Watch',

        's1_title' => 'Order the server',
        's1_body' => 'Dedicated, not cloud. Without /dev/kvm no guest will start, and the script turns the machine away.',

        's2_title' => 'Boot the rescue system',
        's2_body' => 'Enable it AND restart. If the server is still in the old system the script refuses — it overwrites disks.',

        's3_title' => 'Add the host',
        's3_body' => 'The fields below. The one-time code is created after that, and its 24-hour window starts.',

        's4_title' => 'Copy the command line',
        's4_body' => 'It appears after saving and is shown exactly once.',

        's5_title' => 'Paste it into the rescue system',
        's5_body' => 'SSH in as root, paste, press enter. Nothing typed out, nothing filled in.',
        's5_hint' => 'Fetches the installer from :url and starts it. The server downloads nothing else.',

        's6_title' => 'Watch',
        's6_body' => 'Progress appears on the host page. Until the tunnel is up the server reports nothing — then everything arrives at once.',

        'requirements_title' => 'At the provider, first',
        'requirements_sub' => 'Both have to be done before you save below — the code starts expiring the moment you do.',

        'form_title' => 'The host',
        'form_sub' => 'Four fields. The server works out the rest itself.',

        'command_title' => 'The command line',
        'command_sub' => 'Paste into the rescue system as root. It carries everything the server needs before the tunnel.',

        'after_title' => 'Then',

        'missing_title' => 'The tunnel is not set up yet',
        'missing_body' => 'Missing: :settings. Without these the line runs and ends in a tunnel that never handshakes — and that only shows up on the machine.',

        'title' => ':name is created',
        'subtitle' => 'Three steps left, then the server does the rest on its own.',

        'once_title' => 'This line exists only now',
        'once_body' => 'The database holds only the hash of the code, and not the WireGuard key at all. Reloading does not bring it back — it mints a new code, and the old one becomes worthless.',

        'watch' => 'Watch progress',
        'copy' => 'Copy',
        'copied' => 'Copied',

        'footnote' => 'The code is valid for 24 hours and can be redeemed once. If the takeover stops, the machine is reinstalled rather than repaired — see docs/runbooks/host-bootstrap.md.',
    ],
];
