CluPilotCloud/lang/en/admin_settings.php

211 lines
11 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
return [
'site_title' => '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',
'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.',
// Two-factor policy — console.require_2fa. Enrolment itself is its own
// page, admin.two-factor-setup (App\Livewire\Admin\TwoFactorSetup) — see
// RequireOperatorTwoFactor for why only enrolment, and not this whole
// page, is exempt from the redirect this forces.
'saved' => 'Saved.',
'two_factor_title' => 'Two-factor requirement',
'two_factor_body' => 'Applies to every member of staff: anyone who has not set two-factor up can reach the two-factor setup page and nothing else.',
'two_factor_require' => 'Make it compulsory for everyone',
'two_factor_required' => 'Two-factor is compulsory for the console. Please set it up here.',
'two_factor_self_first' => 'Set up your own two-factor confirmation first — otherwise this switch locks you out yourself.',
'update_title' => 'Version & update',
'update_version' => 'Running',
'update_source' => 'Source',
'update_deployed' => 'Deployed',
'update_checked' => 'Last checked',
// Two separate actions instead of one that did both: looking must not
// have to go through a real update and its maintenance window first.
'update_check' => 'Check for updates',
'update_checking' => 'Checking',
'update_now' => 'Update now',
'update_running' => 'Running',
'update_available' => ':n update(s) available',
// With the version number once the agent has named the tag: "Version 1.1.0
// available" is something a person can decide about.
'update_available_release' => 'Version :version available',
// Why the button is grey. Updates only ever go to a tagged version, never
// to the head of a branch — a commit on main is not a release.
'update_only_releases' => 'Updates only ever go to a released version. What lands on main changes nothing here until it is tagged as one.',
'update_nothing_released' => 'There is no newer released version.',
'update_current' => 'Up to date',
'update_unknown' => 'Unknown',
// Kept short, with no time of its own: the live countdown shown right
// after it (update_starts_in) already carries the precision.
'update_requested' => 'Update requested.',
'update_check_requested' => 'Check requested.',
'update_already_requested' => 'Something has already been requested — please wait a moment.',
'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.',
'restart_failed' => 'Restarting the services failed. Please run manually: docker compose restart queue queue-provisioning scheduler reverb.',
],
'update_last_run' => 'Last run: :state, :when.',
'update_state' => [
'succeeded' => 'succeeded',
'failed' => 'failed',
'running' => 'running',
],
// Full-screen view in the console shell (layouts/admin.blade.php) — shown
// on every console page while an update is running, not just Settings.
'update_overlay_title' => 'Update in progress.',
// No countdown any more, for a check or for a run. The old one ran back
// four seconds and snapped to a full minute, because its target was
// recomputed on every poll and landed in the past on every host whose timer
// is longer than the interval the agent reports. Nor is it needed: the
// agent is woken when the request lands.
'update_starting' => 'Starting now.',
// Only for servers where deploy/install-agent.sh has not been re-run — the
// timer collects the request there, and saying so beats promising an
// immediacy that host does not deliver.
'update_starting_queued' => 'Starting as soon as the agent picks the request up.',
'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.',
// ── Automation ───────────────────────────────────────────────────────
'auto_title' => 'Update automatically',
'auto_hint' => 'Takes an available release on its own inside the chosen window. By hand still works at any time — and if you updated earlier, the window finds nothing to do.',
'auto_enabled' => 'Enable automation',
'auto_days' => 'Weekdays',
'auto_from' => 'from',
'auto_to' => 'to',
'auto_saved' => 'Window saved.',
'auto_off' => 'Automation is off — updates by hand only.',
'auto_next' => 'Next window: :days, :from:to.',
'update_by_schedule' => 'Automation',
'weekday' => [
1 => 'Mon', 2 => 'Tue', 3 => 'Wed', 4 => 'Thu', 5 => 'Fri', 6 => 'Sat', 7 => 'Sun',
],
// The page's outline. It had none — eight cards of equal weight in one
// column, with the operator's own password between two platform switches.
'group' => [
'installation' => 'Installation',
'account' => 'My account',
'team' => 'Team & access',
],
// The tab bar. Kept apart from `group` — those were the headings of a
// scrolled page and read as such; a tab is a thing you click, and it has
// room for fewer words.
'tab' => [
'installation' => 'Installation',
'account' => 'My account',
'two_factor' => 'Two-factor',
'team' => 'Team',
],
];