'Website visibility', 'site_public' => 'Public', 'site_hidden' => 'Hidden', 'site_public_body' => 'Website and customer portal are reachable by anyone and indexed by search engines.', 'site_hidden_body' => 'Outside visitors only see a placeholder (status 503, noindex). Through the VPN and as a signed-in staff member you still see everything. The console stays reachable either way.', 'site_your_view' => 'Your address :ip —', 'site_via_vpn' => 'through the VPN, you always see the real site.', 'site_not_vpn' => 'not on the VPN. As a signed-in staff member you still see the real site.', 'site_hide' => 'Hide website', 'site_show' => 'Publish website', 'site_now_public' => 'The website is public again.', 'site_now_hidden' => 'The website is hidden now.', 'title' => 'Settings', 'subtitle' => 'Your operator account and team management.', 'save' => 'Save', 'account_title' => 'My account', 'name' => 'Name', 'email' => 'Email', 'twofa_hint' => 'Password & two-factor authentication follow in a separate security area.', 'account_saved' => 'Account updated.', 'staff_title' => 'Team & access', 'staff_sub' => 'Invite staff and set their role. Only the Owner can manage the team.', 'role' => 'Role', 'invite' => 'Invite', 'invite_hint' => 'The account is created; invitation/password delivery follows with the email integration.', 'staff_invited' => 'Staff member created.', 'temp_title' => 'Credentials (shown once)', 'temp_hint' => 'Share these securely with the staff member. A proper invitation link follows with the email integration.', 'temp_password' => 'Temporary password', 'col_person' => 'Person', 'col_actions' => 'Actions', 'you' => 'You', 'revoke' => 'Revoke access', 'role_owner' => 'Owner', 'role_admin' => 'Administrator', 'role_support' => 'Support', 'role_billing' => 'Billing', 'role_read-only' => 'Read-only', 'role_developer' => 'Developer', 'role_updated' => 'Role updated.', 'staff_revoked' => 'Access revoked.', 'not_self' => 'You cannot change your own role.', 'owner_only' => 'Only an Owner may grant or revoke the Owner role.', 'last_owner' => 'The last Owner cannot be changed or removed.', 'not_staff' => 'Only existing staff can be edited.', 'is_customer' => 'This email already belongs to a customer account.', // Console network access — who may reach /admin at all. 'console_title' => 'Console access', 'console_locked_badge' => 'Restricted', 'console_open_badge' => 'Open', 'console_locked_body' => 'Only the VPN and the addresses listed below reach the console. Everyone else gets a 404 — they do not even learn it exists.', 'console_open_body' => 'The console answers wherever its hostname is used. While that is so, only the password protects it.', 'console_your_ip' => 'You are viewing this from :ip', 'console_lock' => 'Restrict', 'console_unlock' => 'Open up', 'console_always' => 'Always allowed', 'console_vpn_note' => 'Management VPN, not removable', 'console_extra' => 'Additionally allowed', 'console_none' => 'No further address yet — without the VPN, nobody gets in.', 'console_add' => 'Add', 'console_remove' => 'Remove', 'console_ip_hint' => 'A single address or a range, e.g. 203.0.113.7 or 203.0.113.0/24.', 'console_ip_invalid' => 'That is not a valid IP address or range.', 'console_ip_added' => ':ip may now reach the console.', 'console_ip_removed' => ':ip removed.', 'console_ip_last' => 'Not removed: you are connecting from :ip yourself and would lock yourself out.', 'console_locked' => 'Console restricted — VPN and listed addresses only.', 'console_unlocked' => 'Restriction lifted.', 'console_lock_refused' => 'Not restricted: :ip is on no list, so this would have locked you out.', 'update_title' => 'Version & update', 'update_version' => 'Running', 'update_source' => 'Source', 'update_deployed' => 'Deployed', 'update_checked' => 'Last checked', 'update_now' => 'Update now', 'update_running' => 'Running', 'update_available' => ':n update(s) available', 'update_current' => 'Up to date', 'update_unknown' => 'Unknown', 'update_requested' => 'Update requested — it starts within a few minutes.', 'update_already_requested' => 'An update has already been requested.', 'update_no_agent' => 'The server-side update service is not running. Set it up once on the server: sudo bash /opt/clupilot/deploy/install-agent.sh', 'update_log' => 'Log of the last run', 'update_error' => [ 'repo_unreachable' => 'The repository cannot be reached from the server.', 'detached_no_release' => 'The checkout is on no branch and pinned to no release.', 'update_failed' => 'The update failed (code :code). See the log.', ], 'update_last_run' => 'Last run: :state, :when.', 'update_state' => [ 'succeeded' => 'succeeded', 'failed' => 'failed', 'running' => 'running', ], // Requested, but the service checks on a timer — without a time an operator // sits in front of it not knowing whether the button did anything. 'update_queued' => 'Requested. The update service starts it by :time at the latest.', 'update_step' => 'Step: :step', 'update_since' => 'Running since :when', 'update_offline_hint' => 'During the update the site is briefly in maintenance mode — this view stays put and comes back on its own afterwards.', 'update_took' => 'Took :duration', 'update_failed_at' => 'Stopped at step: :step', // The steps deploy/update.sh reports. The script writes keys so they are // translated here rather than passed through in English. 'update_phase' => [ 'fetch' => 'Fetching the new version', 'maintenance_on' => 'Enabling maintenance mode', 'checkout' => 'Applying the code', 'image' => 'Rebuilding the container image', 'composer' => 'Installing PHP packages', 'npm' => 'Installing JS packages', 'migrate' => 'Migrating the database', 'assets' => 'Rebuilding assets', 'caches' => 'Rebuilding caches', 'restart' => 'Restarting services', 'maintenance_off' => 'Leaving maintenance mode', ], 'password_title' => 'Change password', 'password_sub' => 'Takes effect immediately. Other sessions stay signed in.', 'password_current' => 'Current password', 'password_new' => 'New password', 'password_repeat' => 'Repeat', 'password_save' => 'Change password', 'password_wrong' => 'The current password is not correct.', 'password_changed' => 'Password changed.', ];