<?php
return [
    'app.title' => 'My Application',
    'app.welcome' => 'Welcome',
    'app.copyright' => '© {year} {app}',
    'app.description' => 'Web application with user management',
    'nav.home' => 'Home',
    'nav.about' => 'About',
    'nav.doc' => 'Documentation',
    'doc.title' => 'Documentation',
    'doc.cat_general_admin' => 'General administration',
    'doc.cat_module_admin' => 'Module administration',
    'doc.cat_general_user' => 'General user guide',
    'doc.cat_module_user' => 'Module user guides',
    'doc.empty' => 'No documentation available for your profile.',
    'doc.back' => 'Back to documentation',
    'nav.login' => 'Login',
    'nav.logout' => 'Logout',
    'nav.profile' => 'My Profile',
    'nav.admin' => 'Administration',
    'nav.settings' => 'Settings',
    'nav.users' => 'Users',
    'auth.username' => 'Username or email',
    'auth.password' => 'Password',
    'auth.password_new' => 'New password',
    'auth.password_conf' => 'Confirm password',
    'auth.password_keep' => 'Leave blank to keep current password',
    'auth.login' => 'Sign in',
    'auth.logout' => 'Sign out',
    'auth.remember' => 'Remember me',
    'auth.login_title' => 'Sign In',
    'auth.login_error' => 'Invalid username or password.',
    'auth.too_many_attempts' => 'Too many login attempts. Please try again in a few minutes.',
    'auth.login_inactive' => 'This account is disabled.',
    'auth.logout_success' => 'You have been signed out.',
    'auth.no_access' => 'Access denied. Insufficient permissions.',
    'auth.method' => 'Authentication method',
    'auth.method_local' => 'Local account',
    'auth.method_oauth' => 'OAuth / SSO',
    'auth.method_ldap' => 'LDAP / Active Directory',
    'auth.or_use' => 'Or sign in with:',
    'user.list' => 'User list',
    'user.create' => 'Create user',
    'user.edit' => 'Edit',
    'user.delete' => 'Delete',
    'user.confirm_delete' => 'Are you sure you want to delete user "{username}"?',
    'user.profile' => 'Role',
    'user.roles' => 'Roles',
    'user.roles_hint' => 'Select one or more roles. app_admin (system) grants all rights on all modules.',
    'user.roles_system' => 'System',
    'user.role_self_locked' => 'locked: you cannot remove your own admin role',
    'user.language' => 'Language',
    'user.theme' => 'Theme',
    'user.postgresql_prefs' => 'PostgreSQL preferences',
    'user.postgresql_landing' => 'Landing page after picking a database',
    'user.postgresql_landing_hint' => 'Page you land on after choosing a PostgreSQL database. Can also be set in one click from the floating button on report pages.',
    'user.oracle_prefs' => 'Oracle preferences',
    'user.oracle_landing' => 'Landing page after picking a database',
    'user.oracle_landing_hint' => 'Page you land on after selecting an Oracle database.',
    'user.oracle_report_format' => 'Oracle reports format',
    'user.oracle_format_html' => 'Static HTML',
    'user.oracle_format_active' => 'Dynamic (when available)',
    'user.oracle_format_hint' => 'Applies to ASH and SQL Monitor. AWR has no dynamic format.',
    'user.active' => 'Active',
    'user.inactive' => 'Inactive',
    'user.created_at' => 'Created',
    'user.last_login' => 'Last login',
    'user.email' => 'Email',
    'user.password' => 'Password',
    'user.save' => 'Save',
    'user.cancel' => 'Cancel',
    'user.never' => 'Never',
    'user.actions' => 'Actions',
    'role.app_admin' => 'Application Administrator',
    'role.oracle_admin' => 'Oracle Administrator',
    'role.oracle_user' => 'Oracle User',
    'role.cmdb_admin' => 'CMDB Administrator',
    'role.cmdb_user' => 'CMDB User',
    'role.cnp_admin' => 'CNP Administrator',
    'role.cnp_user' => 'CNP User',
    'theme.label' => 'Theme',
    'theme.os' => 'OS Default',
    'theme.light' => 'Light',
    'theme.dark' => 'Dark',
    'theme.colorblind' => 'High Contrast / Colorblind',
    'theme.custom' => 'Custom',
    'lang.label' => 'Language',
    'lang.fr' => 'Français',
    'lang.en' => 'English',
    'lang.pl' => 'Polski',
    'lang.it' => 'Italiano',
    'lang.es' => 'Español',
    'lang.ro' => 'Română',
    'lang.de' => 'Deutsch',
    'settings.title' => 'Application Settings',
    'settings.app_name' => 'Application name',
    'settings.app_logo' => 'Logo',
    'settings.app_logo_hint' => 'PNG, JPG, SVG, WebP — max 2 MB',
    'settings.app_favicon' => 'Favicon',
    'settings.app_favicon_hint' => 'PNG, ICO, SVG — max 512 KB. Recommended: 32×32 px',
    'settings.app_logo_del' => 'Remove logo',
    'settings.app_favicon_del' => 'Remove favicon',
    'settings.appearance' => 'Appearance',
    'settings.default_theme' => 'Default theme',
    'settings.default_lang' => 'Default language',
    'settings.auth_methods' => 'Authentication methods',
    'settings.smtp_title' => 'Email (SMTP)',
    'settings.smtp_hint' => 'SMTP server configuration for sending emails (notifications, alerts).',
    'settings.smtp_host' => 'SMTP server',
    'settings.smtp_port' => 'Port',
    'settings.smtp_encryption' => 'Encryption',
    'settings.smtp_enc_none' => 'None',
    'settings.smtp_auth_enabled' => 'SMTP authentication',
    'settings.smtp_auth_hint' => 'Uncheck if the server is an internal relay that does not require credentials.',
    'settings.smtp_username' => 'Username',
    'settings.smtp_password' => 'Password',
    'settings.smtp_from_address' => 'From address',
    'settings.smtp_from_name' => 'From name',
    'settings.smtp_test' => 'Test connection',
    'settings.smtp_test_send' => 'Send test',
    'settings.smtp_test_ok' => 'SMTP connection successful.',
    'settings.smtp_test_sent' => 'Test e-mail sent. Check your inbox.',
    'settings.smtp_test_rcpt_placeholder' => 'recipient@example.com',
    'settings.smtp_test_rcpt_required' => 'Enter a recipient e-mail address for the test.',
    'settings.smtp_test_subject' => 'SMTP configuration validated',
    'settings.smtp_test_body' => 'If you receive this e-mail, the application SMTP configuration is correct.',
    'settings.smtp_host_required' => 'SMTP server is not configured.',
    'report_sub.title' => 'Report Subscriptions',
    'report_sub.schedules_title' => 'Report Schedules',
    'report_sub.matrix_title' => 'User Subscriptions',
    'report_sub.save' => 'Save',
    'report_sub.saved' => 'Subscriptions saved.',
    'report_sub.col_user' => 'User',
    'report_sub.col_email' => 'Email',
    'report_sub.no_users' => 'No active users with an email address.',
    'report_sub.frequency_daily' => 'Daily',
    'report_sub.frequency_weekly' => 'Weekly',
    'report_sub.frequency_monthly' => 'Monthly',
    'report_sub.day_of_month' => 'Day of month',
    'report_sub.logical_day' => 'Logical day',
    'report_sub.dow_1' => 'Monday',
    'report_sub.dow_2' => 'Tuesday',
    'report_sub.dow_3' => 'Wednesday',
    'report_sub.dow_4' => 'Thursday',
    'report_sub.dow_5' => 'Friday',
    'report_sub.dow_6' => 'Saturday',
    'report_sub.dow_7' => 'Sunday',
    'report_sub.logical_first_monday' => 'First Monday',
    'report_sub.logical_first_tuesday' => 'First Tuesday',
    'report_sub.logical_first_wednesday' => 'First Wednesday',
    'report_sub.logical_first_thursday' => 'First Thursday',
    'report_sub.logical_first_friday' => 'First Friday',
    'report_sub.logical_last_monday' => 'Last Monday',
    'report_sub.logical_last_friday' => 'Last Friday',
    'report_sub.logical_last_day' => 'Last day',
    'report_sub.report_cnp_ad_anomalies' => 'AD Anomalies (CNP)',
    'report_sub.report_cmdb_db_inventory' => 'Database Inventory (CMDB)',
    'report_sub.report_cnp_cmdb_sync' => 'CMDB/Oracle Sync (CNP)',
    'report_sub.subject_cnp_ad_anomalies' => 'Report: AD Anomalies',
    'report_sub.subject_cmdb_db_inventory' => 'Report: Database Inventory',
    'report_sub.subject_cnp_cmdb_sync' => 'Report: CMDB / Oracle Sync',
    'report_sub.view_online' => 'View online',
    'report_sub.total_databases' => 'Total databases',
    'report_sub.log_title' => 'Recent sends',
    'report_sub.log_date' => 'Date',
    'report_sub.log_report' => 'Report',
    'report_sub.log_recipients' => 'Recipients',
    'report_sub.log_status' => 'Status',
    'report_sub.no_active_module' => 'No report to offer: they all depend on modules that are currently disabled. Enable the relevant module to get its schedule and subscribers back — they are preserved.',
    'settings.oauth_config' => 'OAuth Configuration',
    'settings.ldap_config' => 'LDAP Configuration',
    'settings.save' => 'Save settings',
    'settings.debug_mode' => 'Debug mode',
    'settings.trace_mode' => 'Trace mode',
    'settings.session_section' => 'Session',
    'settings.session_lifetime' => 'Session duration',
    'settings.session_lifetime_unit' => 'seconds',
    'settings.session_lifetime_hint' => 'Between 300 (5 min) and 86,400 (24 h). Default: 3,600 (1 h).',
    'settings.enabled' => 'Enabled',
    'settings.disabled' => 'Disabled',
    'settings.client_id' => 'Client ID',
    'settings.client_secret' => 'Client Secret',
    'settings.redirect_uri' => 'Redirect URI',
    'settings.auth_url' => 'Authorization URL',
    'settings.token_url' => 'Token URL',
    'settings.ldap_host' => 'LDAP Host',
    'settings.ldap_port' => 'LDAP Port',
    'settings.ldap_base_dn' => 'Base DN',
    'settings.ldap_bind_dn' => 'Bind DN',
    'settings.ldap_bind_pass' => 'Bind Password',
    'settings.ldap_user_dn_pattern' => 'User DN pattern',
    'settings.ldap_user_dn_pattern_hint' => 'Placeholders: {user}, {base_dn}, {domain}. E.g. OpenLDAP: uid={user},{base_dn} — AD UPN: {user}@{domain}',
    'settings.ldap_tls_insecure' => 'Skip TLS certificate verification (LDAPS)',
    'settings.ldap_tls_insecure_hint' => 'Use for diagnosis only; in production, install the CA in the web server\'s trust store.',
    'settings.ldap_test_section' => 'Configuration test',
    'settings.ldap_test_btn' => 'Test configuration',
    'settings.ldap_test_user' => 'Test username',
    'settings.ldap_test_user_hint' => 'Optional — to test a real user bind',
    'settings.ldap_test_pass' => 'Test password',
    'settings.ldap_test_running' => 'Running test…',
    'settings.ldap_test_ok' => 'LDAP configuration valid',
    'settings.ldap_test_ko' => 'LDAP test failed',
    'settings.ldap_test_step_ext_ko' => 'PHP ldap extension missing — enable extension=ldap in php.ini',
    'settings.ldap_test_step_ext_ok' => 'PHP ldap extension loaded',
    'settings.ldap_test_step_host_ko' => 'LDAP host not set',
    'settings.ldap_test_step_connect_ko' => 'ldap_connect() failed — invalid parameters',
    'settings.ldap_test_step_connect_ok' => 'Connection initialised (LDAPv3, 5s timeout)',
    'settings.ldap_test_step_svc_ok' => 'Service bind successful',
    'settings.ldap_test_step_svc_ko' => 'Service bind failed',
    'settings.ldap_test_step_anon_ok' => 'Anonymous bind successful',
    'settings.ldap_test_step_anon_warn' => 'Anonymous bind refused (normal on Active Directory)',
    'settings.ldap_test_step_user_ok' => 'User bind successful',
    'settings.ldap_test_step_user_ko' => 'User bind failed',
    'settings.ldap_test_step_user_no_base' => 'Missing Base DN — cannot build user DN',
    'admin.title' => 'Administration',
    'admin.dashboard' => 'Dashboard',
    'admin.total_users' => 'Total users',
    'admin.active_users' => 'Active users',
    'admin.welcome' => 'Welcome to the administration panel.',
    'msg.save' => 'Save',
    'msg.cancel' => 'Cancel',
    'msg.saved' => 'Changes saved successfully.',
    'msg.error' => 'An error occurred.',
    'msg.warning' => 'Warning',
    'msg.deleted' => 'Deleted successfully.',
    'msg.access_denied' => 'Access denied.',
    'msg.not_found' => 'Page not found.',
    'msg.server_error' => 'Internal server error.',
    'msg.required_fields' => 'Please fill in all required fields.',
    'msg.passwords_mismatch' => 'Passwords do not match.',
    'msg.password_changed' => 'Password changed successfully.',
    'msg.user_created' => 'User created successfully.',
    'msg.user_updated' => 'User updated successfully.',
    'msg.user_deleted' => 'User deleted successfully.',
    'msg.username_taken' => 'This username is already taken.',
    'msg.ldap_user_not_found' => 'This username does not exist in the LDAP directory.',
    'module.title' => 'Modules',
    'module.list' => 'Module list',
    'module.manage' => 'Manage modules',
    'module.name' => 'Module',
    'module.status' => 'Status',
    'module.active' => 'Active',
    'module.inactive' => 'Inactive',
    'module.active_count' => 'active module(s)',
    'module.enable' => 'Enable',
    'module.enable_required' => 'Enable {module} and its dependencies',
    'module.enable_required_confirm' => 'Enable module "{module}" and all modules it depends on?',
    'module.enable_required_summary' => '{n} module(s) enabled: {list}.',
    'module.enable_required_none' => 'The module and its dependencies are already active.',
    'module.enable_required_failed' => '{n} module(s) could not be enabled:',
    'module.disable' => 'Disable',
    'module.open' => 'Open',
    'module.roles' => 'Roles',
    'module.depends_on' => 'Depends on',
    'module.none_registered' => 'No modules registered.',
    'module.confirm_disable' => 'Disable module "{label}"?',
    'module.warn_users_linked' => '{n} active user(s) have the "{role}" role. They will lose access to the module.',
    'module.deps_missing' => 'Cannot enable "{module}": required module(s) not active — {deps}',
    'module.deps_dependents' => 'Cannot disable "{module}": still used by {dependents}',
    'module.enable_failed' => 'Module activation failed',
    'module.provision_summary' => '{created} user(s) created, {roles} role(s) assigned.',
    'module.add_title' => 'Add or update a module',
    'module.add_hint' => 'Upload a ZIP archive containing a single module directory (with its module.php at the directory root). If the module does not exist yet it is added disabled; if it already exists it is updated in place — its roles and their user assignments, its configuration and its data are preserved. The previous version is backed up before replacement.',
    'module.zip_label' => 'Module ZIP archive',
    'module.add_apply' => 'Apply',
    'module.remove' => 'Remove',
    'module.confirm_delete' => 'Delete module "{label}" and all its data (roles, config)?',
    'module.cannot_delete_active' => 'Cannot remove an active module. Disable it first.',
    'module.upload_error' => 'File upload error.',
    'module.upload_invalid_zip' => 'The file is not a valid ZIP archive.',
    'module.upload_bad_structure' => 'The ZIP must contain a single module directory at its root.',
    'module.upload_no_descriptor' => 'The ZIP has no module.php at the module directory root.',
    'module.upload_exists' => 'A module "{name}" already exists.',
    'module.upload_extract_failed' => 'Module extraction failed.',
    'module.upload_success' => 'Module "{name}" added (disabled). Enable it to use it.',
    'module.update_success' => 'Module "{name}" updated (v{from} → v{to}). Its roles, configuration and data were preserved. Backup of the previous version: {backup}',
    'module.update_failed' => 'Updating module "{name}" failed: the existing directory could not be moved aside. Nothing was changed.',
    'module.update_backup_failed' => 'Backing up the installed version failed. The update was cancelled, nothing was changed.',
    'module.update_rollback' => 'Updating module "{name}" failed; the previous version has been restored.',
    'module.update_rollback_failed' => 'Updating module "{name}" failed AND the previous version could not be restored. The application stays in maintenance mode: restore backup {backup} (upload it here), then clear maintenance mode.',
    'module.update_name_mismatch' => 'Inconsistent archive: the directory is "{name}" but the descriptor declares "{decl}". Nothing was changed.',
    'module.update_on_enable_warn' => 'Module "{name}" updated, but its initialisation reported an error: {error}',
    'module.delete_success' => 'Module removed.',
    'module.delete_failed' => 'The module directory "{name}" could not be fully removed.',
    'module.dev_php_env' => 'PHP Environment',
    'module.dev_ini' => 'php.ini Configuration',
    'module.dev_session' => 'Current Session',
    'module.dev_extensions' => 'Loaded Extensions',
    'module.dev_logs' => 'Recent Logs',
    'module.dev_no_logs' => 'No log entries found.',
    'module.dev_db_file' => 'Database',
    'home.title' => 'Home',
    'home.logged_in' => 'You are signed in as <strong>{username}</strong> ({role}).',
    'home.visitor' => 'You are browsing as a visitor. <a href="/login.php">Sign in</a> to access more features.',
    'admin.maintenance' => 'Maintenance',

    // ── Batches / Scheduling ──────────────────────────────────────────────
    'batch.title' => 'Batches / Scheduling',
    'batch.card_desc' => 'Task scheduling (crontab / Windows scheduler), status and logs.',
    'batch.manage' => 'Manage batches',
    'batch.schedule_title' => 'Proposed schedule',
    'batch.schedule_intro' => 'Application scheduled tasks and their frequency.',
    'batch.col_job' => 'Task',
    'batch.col_schedule' => 'Schedule (cron)',
    'batch.col_command' => 'Command',
    'batch.col_state' => 'State',
    'batch.state_active' => 'Active',
    'batch.state_inactive' => 'Inactive',
    'batch.job_logrotate' => 'Log rotation',
    'batch.job_backup' => 'Backup',
    'batch.job_collect_ash' => 'ASH collection',
    'batch.job_collect_cmdb' => 'CMDB collection',
    'batch.job_collect_rman' => 'RMAN collection',
    'batch.job_collect_users' => 'Oracle user inventory',
    'batch.job_schedule_reports' => 'Scheduled report sending',
    'batch.job_remediate' => 'Oracle user remediation',
    'batch.job_provision' => 'Oracle user provisioning',
    'batch.install' => 'Enable (install crontab)',
    'batch.uninstall' => 'Disable (remove from crontab)',
    'batch.confirm_install' => 'Install the tasks in the apache user crontab?',
    'batch.confirm_uninstall' => 'Remove the application tasks from the crontab?',
    'batch.apache_note' => 'Operates on the web server user crontab (apache).',
    'batch.crontab_title' => 'Current crontab',
    'batch.crontab_empty' => 'No crontab for the current user.',
    'batch.windows_title' => 'Windows (Task Scheduler)',
    'batch.windows_intro' => 'schtasks commands to run in an Administrator prompt (Windows host).',
    'batch.logs_title' => 'Recent runs',
    'batch.logs_rman' => 'RMAN collection',
    'batch.logs_ash' => 'ASH collection',
    'batch.logs_backups' => 'Backups',
    'batch.logs_applog' => 'Application log',
    'batch.logs_none' => 'No data.',
    'batch.col_when' => 'When',
    'batch.col_result' => 'Result',
    'batch.col_source' => 'Source',
    'batch.col_day' => 'Day',
    'batch.col_rows' => 'Rows',
    'batch.failed' => 'Failed',
    'batch.shell_unavailable' => 'Shell execution unavailable (crontab not manageable from the web).',
    'batch.already_installed' => 'All tasks are already present in the crontab.',
    'batch.install_ok' => '{n} task(s) added to the crontab.',
    'batch.uninstall_ok' => 'Application tasks removed from the crontab.',
    'batch.crontab_error' => 'Could not update the crontab.',
    'backup.title' => 'Backup & Restore',
    'backup.overview' => 'Application metadata',
    'backup.overview_hint' => 'Contents of the secure directory: database, encryption key, Oracle Cloud wallets.',
    'backup.files_count' => 'Files',
    'backup.total_size' => 'Total size',
    'backup.create_title' => 'Create a backup',
    'backup.create_hint' => 'Creates a ZIP archive of the entire secure directory (excluding previous backups). The backup can be stored on the server or downloaded.',
    'backup.save_local' => 'Save on server',
    'backup.download' => 'Download',
    'backup.created_ok' => 'Backup "%s" created (%d files).',
    'backup.restore_title' => 'Restore a backup',
    'backup.restore_hint' => 'Upload a ZIP archive created by this page to restore metadata. A backup of the current state will be created automatically before restoration.',
    'backup.restore_label' => 'Backup ZIP archive',
    'backup.restore_apply' => 'Restore',
    'backup.restore_confirm' => 'Are you sure you want to restore this backup? The current state will be backed up first.',
    'backup.restore_this' => 'Restore this backup',
    'backup.restored_ok' => '%d file(s) restored. Pre-restore backup: %s',
    'backup.local_list' => 'Local backups',
    'backup.no_backups' => 'No local backups.',
    'backup.col_name' => 'File',
    'backup.col_size' => 'Size',
    'backup.col_date' => 'Date',
    'backup.delete_confirm' => 'Delete backup "%s"?',
    'backup.deleted_ok' => 'Backup "%s" deleted.',
    'backup.invalid_file' => 'Invalid filename.',
    'backup.securite_missing' => 'The secure directory does not exist.',
    'backup.create_error' => 'Could not create ZIP archive.',
    'update.title' => 'Application Update',
    'update.current_version' => 'Current version',
    'update.upload_title' => 'Upload an update',
    'update.upload_hint' => 'Select a ZIP archive containing the update files. The database and encryption key will not be overwritten.',
    'update.zip_label' => 'Update ZIP archive',
    'update.apply' => 'Apply update',
    'update.confirm' => 'Are you sure you want to apply this update? A backup will be created automatically.',
    'update.upload_error' => 'File upload error.',
    'update.invalid_zip' => 'The file is not a valid ZIP archive.',
    'update.zip_ext_missing' => 'The PHP ZipArchive extension is not available on this server.',
    'update.empty_archive' => 'The archive contains no files to extract (all files are protected or the archive is empty).',
    'update.success' => '%d file(s) updated successfully.',
    'update.backup_created' => 'Backup created: %s',
    'update.deleted' => '%d item(s) of the previous version removed.',
    'update.full_backup_created' => 'Full backup: %s',
    'update.backup_failed' => 'Pre-update backup failed — update aborted, no file deleted.',
    'update.maintenance_failed' => 'Incomplete extraction: the application stays in maintenance mode. Restore backup %s (Backup/Restore) or re-run the update.',
    'update.maintenance_active' => 'The application is currently in maintenance mode (visible to administrators only).',
    'update.clear_maintenance' => 'Exit maintenance mode',
    'update.maintenance_cleared' => 'Maintenance mode disabled.',
    'update.danger_hint' => 'The update puts the app in maintenance, backs up then DELETES the previous version (except securite/ and log/), then extracts the new one.',
    'update.pruned' => '%d old backup(s) pruned.',
    'update.restore_success' => 'Version restored from %s:',
    'update.backup_deleted' => 'Backup deleted: %s',
    'update.backup_not_found' => 'Backup not found or invalid name.',
    'update.delete_failed' => 'Failed to delete the backup.',
    'update.backups_title' => 'Previous versions (backups)',
    'update.backups_hint' => 'The last 3 versions are kept automatically. You can restore or delete a version.',
    'update.backups_empty' => 'No backup available.',
    'update.backup_latest' => 'latest',
    'update.restore' => 'Restore',
    'update.restore_confirm' => 'Restoring this version will replace the current one (clean replace). Continue?',
    'update.delete_backup' => 'Delete',
    'update.delete_backup_confirm' => 'Permanently delete this backup?',
    'update.protected_dirs' => 'Data and logs always preserved',
    'update.git_kept' => 'Git metadata preserved (Developer module present)',
    'update.git_removed' => 'Git metadata removed (packaged instance)',
    'update.partial_errors' => '%d file(s) could not be extracted:',
    'update.skipped_files' => '%d protected file(s) skipped:',
    'update.protected_title' => 'Protected files',
    'update.protected_hint' => 'The following files will never be overwritten by an update, even if present in the archive:',
    'update.protected_db' => 'Application database',
    'update.protected_key' => 'Master encryption key',
    'update.protected_wallets' => 'Oracle Cloud wallets',
    'maintenance.title' => 'Maintenance in progress',
    'maintenance.message' => 'The application is temporarily unavailable for maintenance. Please try again shortly.',
    'about.title' => 'About',
    'about.version' => 'Version',
    'about.libraries' => 'Third-party libraries',
    'about.lib_name' => 'Library',
    'about.lib_version' => 'Version',
    'about.lib_license' => 'License',
    'about.license_title' => 'License',
    'about.license_rights' => 'All rights reserved.',
    'about.license_grant' => 'This software is provided under a proprietary, non-exclusive and non-transferable license. The author grants the purchaser the right to use the software in its original form, with no transfer of ownership.',
    'about.license_conditions' => 'Subject to the following conditions:',
    'about.license_cond_attribution' => '<strong>Attribution</strong> — The origin of the software and the author\'s name must be retained in the source code and technical documentation. The interface shown to end users may, however, be customized (see "White-labeling").',
    'about.license_cond_no_derivs' => '<strong>No derivatives</strong> — The software\'s code may not be modified, transformed, or used as a basis for derivative works without prior written permission from the author, except for the visual-identity customization (title, logo, favicon, theme) provided by the application.',
    'about.license_cond_commercial' => '<strong>No assignment — white-labeling permitted</strong> — The software may not be assigned, resold, or sublicensed as a product. The purchaser may, however, operate and offer it to their own customers under their own brand (white-label), with no transfer of license ownership.',
    'about.license_disclaimer' => 'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.',
    'about.license_compat' => 'Proprietary, non-transferable license: the software may be operated under a white-label brand but may not be assigned or resold.',
    'backup.include_key' => 'Include the encryption key (master.key) — full disaster recovery',
    'backup.include_key_warn' => '⚠ Without the key, the backup cannot decrypt secrets: back up master.key separately. With the key, protect the file (it holds ALL secrets).',
];
