Add neutral diagnostic framework for future reporting modules: - DiagnosticReporterInterface, Registry, Manager, PayloadSanitizer - Laravel exception hook in bootstrap/app.php - Module permission declarations (requires_permissions in module.json) - Core diagnostic report points (module boot/install/update failures) - Module documentation update (moduldoku.md) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
187 lines
12 KiB
PHP
187 lines
12 KiB
PHP
<?php
|
|
|
|
return [
|
|
'page_list' => 'Manage Drivers',
|
|
'page_create' => 'Create Driver',
|
|
'page_edit' => 'Edit Driver',
|
|
'page_archived' => 'Archived Drivers',
|
|
'btn_create' => 'Create Driver',
|
|
'col_name' => 'Name',
|
|
'col_email' => 'Email',
|
|
'col_role' => 'Role',
|
|
'col_dsgvo' => 'GDPR Status',
|
|
'col_actions' => 'Actions',
|
|
'empty_heading' => 'No drivers created yet.',
|
|
'empty_body' => 'Create drivers and set up their OwnTracks credentials for GPS tracking.',
|
|
'empty_cta' => 'Create first driver',
|
|
'empty_archived_heading' => 'No archived drivers.',
|
|
'empty_archived_body' => 'Anonymized driver records will appear here for evidence retention.',
|
|
'field_name' => 'Name',
|
|
'field_email' => 'Email',
|
|
'field_password' => 'Password',
|
|
'field_phone' => 'Phone',
|
|
'field_notes' => 'Notes',
|
|
'fieldset_master_data' => 'Master Data',
|
|
'fieldset_vehicle' => 'Vehicle',
|
|
'field_default_vehicle' => 'Default vehicle',
|
|
'field_default_vehicle_none' => '— No default vehicle —',
|
|
'field_default_vehicle_hint' => 'Shown as pre-selection when starting a job.',
|
|
'fieldset_contact' => 'Contact',
|
|
'password_hint_edit' => 'Leave blank to keep current password.',
|
|
'field_owntracks_username' => 'OwnTracks Username',
|
|
'field_owntracks_password_display' => 'OwnTracks Password (shown once)',
|
|
'flash_created' => 'Driver ":name" has been created. OwnTracks credentials have been generated — write down the password now.',
|
|
'flash_updated' => 'Driver ":name" has been updated.',
|
|
'flash_anonymized' => 'Driver has been anonymized. The record is retained anonymously for evidence preservation.',
|
|
'flash_rotated' => 'A new OwnTracks password has been generated. The old password is now invalid.',
|
|
'error_owntracks_username_taken' => 'This OwnTracks username is already taken. Please choose a different one.',
|
|
'error_password_already_revealed' => 'The password has already been displayed and cannot be retrieved again for security reasons. Generate a new password if needed.',
|
|
'btn_copy_password' => 'Copy password to clipboard',
|
|
'btn_rotate_password' => 'Generate new password…',
|
|
'modal_rotate_title' => 'Generate New Password',
|
|
'modal_rotate_body1' => 'The current OwnTracks password for <strong>:name</strong> will be invalidated immediately.',
|
|
'modal_rotate_body2' => 'The driver must reconfigure OwnTracks on their device with the new credentials — otherwise no GPS points will be received.',
|
|
'modal_rotate_submit' => 'Generate new password',
|
|
'modal_anonymize_title' => 'Anonymize Driver',
|
|
'modal_anonymize_body1' => 'This action is permanent. Personal data for <strong>:name</strong> will be irrevocably removed.',
|
|
'modal_anonymize_body2' => 'Jobs, service records, and GPS tracks for this driver will be retained anonymously — they remain valid as legal proof of traffic safety obligation but can no longer be attributed to a specific person.',
|
|
'modal_anonymize_confirm_label' => 'Confirm by entering the driver\'s name:',
|
|
'modal_anonymize_confirm_placeholder'=> 'Driver name for confirmation',
|
|
'modal_anonymize_reason_label' => 'Reason for anonymization',
|
|
'modal_anonymize_reason_placeholder' => 'e.g. "Employee left on 2026-03-15"',
|
|
'modal_anonymize_reason_helper' => 'Logged for GDPR audit purposes.',
|
|
'modal_anonymize_submit' => 'Anonymize driver',
|
|
'anonymized_display_name' => 'Driver #:id (anonymized)',
|
|
'empty_confirmations_heading' => 'No GDPR confirmation yet.',
|
|
'empty_confirmations_body' => 'This driver has not yet confirmed the data protection briefing. It will be enforced at the next login.',
|
|
'profile_export_card_heading' => 'Data Export',
|
|
'profile_export_card_body' => 'Download a ZIP file containing all your data.',
|
|
'profile_export_cta' => 'Export my data as ZIP',
|
|
'profile_dsgvo_card_heading' => 'GDPR Confirmation',
|
|
'profile_dsgvo_card_sub' => 'Last confirmed on :date at :time · Template version :version',
|
|
'profile_dsgvo_view_link' => 'View confirmation text',
|
|
'profile_export_fail' => 'The data export could not be generated. Please try again or contact the administrator.',
|
|
'admin_delete_self_disabled' => 'The admin account cannot be deleted from this page.',
|
|
'welcome_message' => 'Welcome, :name!',
|
|
'page_dashboard' => 'My Dashboard',
|
|
'your_role' => 'Your role: :role',
|
|
'col_owntracks' => 'OwnTracks',
|
|
'dsgvo_status_confirmed' => 'Confirmed',
|
|
'dsgvo_status_pending' => 'Pending',
|
|
'owntracks_section_title' => 'OwnTracks Credentials',
|
|
'owntracks_no_credentials' => 'Credentials will be generated automatically when the driver is created.',
|
|
'credentials_page_title' => 'OwnTracks Credentials',
|
|
'credentials_heading' => 'Credentials for :name',
|
|
'credentials_warning' => 'This password is only shown once. Write it down now.',
|
|
'credentials_server_url' => 'Server URL',
|
|
'credentials_mode' => 'Mode',
|
|
'credentials_print' => 'Print Credentials',
|
|
'credentials_back' => 'Back to Driver List',
|
|
'credentials_qr_heading' => 'Configure OwnTracks App',
|
|
'credentials_qr_instruction' => '1. Open OwnTracks app 2. Scan QR code 3. Done — the app is configured',
|
|
'credentials_qr_copy_url' => 'Copy configuration URL',
|
|
'credentials_qr_url_copied' => 'URL copied',
|
|
'credentials_https_warning' => 'Warning: Your server does not use HTTPS. OwnTracks may refuse to connect.',
|
|
'credentials_print_instruction' => 'Instructions: 1. Open OwnTracks app — 2. Scan QR code — 3. Done',
|
|
'btn_copy' => 'Copy',
|
|
'btn_copied' => 'Copied!',
|
|
'btn_export' => 'Export data',
|
|
'btn_export_all' => 'Export all drivers',
|
|
'btn_anonymize' => 'Anonymize driver…',
|
|
'col_anonymized_at' => 'Anonymized on',
|
|
'col_reason' => 'Reason',
|
|
'export_section_heading' => 'Data Export (GDPR Art. 15/20)',
|
|
'export_section_body' => 'Download all stored data for this driver as a ZIP file.',
|
|
|
|
'nav_logout' => 'Log out',
|
|
'shift_active' => 'Shift active',
|
|
'shift_inactive' => 'No shift',
|
|
|
|
'dash_no_shift' => 'No active shift',
|
|
'dash_no_shift_hint' => 'Start a shift to begin logging jobs.',
|
|
'dash_shift_start' => 'Start shift',
|
|
'dash_shift_end' => 'End shift',
|
|
'dash_shift_since' => 'Shift since',
|
|
'dash_shift_duration' => 'Duration',
|
|
'dash_select_customer' => 'Select customer',
|
|
'dash_no_customers' => 'No customers available.',
|
|
'dash_select_object' => 'Select site',
|
|
'dash_select_type' => 'Select job type',
|
|
'dash_select_vehicle' => 'Select vehicle',
|
|
'dash_no_vehicles' => 'No vehicles available.',
|
|
'dash_vehicle_none' => 'No vehicle',
|
|
'dash_job_start' => 'Start job',
|
|
'dash_job_end' => 'End job',
|
|
'dash_job_active' => 'Job active',
|
|
'dash_customer' => 'Customer',
|
|
'dash_object' => 'Site',
|
|
'dash_job_type' => 'Job type',
|
|
'dash_job_since' => 'Since',
|
|
'dash_job_duration' => 'Duration',
|
|
'dash_gps_points' => 'GPS points',
|
|
'dash_notes_label' => 'Notes (optional)',
|
|
'dash_notes_placeholder' => 'Any issues, obstacles, …',
|
|
|
|
'dash_photos' => 'Photos',
|
|
'dash_photo_capture' => 'Take photo',
|
|
'dash_photo_uploading' => 'Uploading…',
|
|
'dash_photo_alt' => 'Job photo',
|
|
'dash_photos_empty' => 'No photos taken yet.',
|
|
'dash_photo_limit_reached' => 'Photo limit reached',
|
|
'dash_photo_offline_hint' => 'Photo upload only available with internet connection.',
|
|
|
|
'connectivity_online' => 'Online',
|
|
'connectivity_offline' => 'Offline',
|
|
'connectivity_syncing' => 'Syncing…',
|
|
'connectivity_pending_count' => ':count pending',
|
|
|
|
'offline_queued' => 'Action will be synced when connection is restored.',
|
|
|
|
'history_title' => 'My Jobs',
|
|
'history_empty_heading' => 'No jobs yet',
|
|
'history_empty_body' => 'Completed jobs will appear here.',
|
|
'history_col_date' => 'Date',
|
|
'history_col_customer' => 'Customer',
|
|
'history_col_type' => 'Type',
|
|
'history_col_duration' => 'Duration',
|
|
'history_col_photos' => 'Photos',
|
|
'history_duration_active' => 'active',
|
|
'history_detail_title' => 'Job Details',
|
|
'history_detail_customer' => 'Customer',
|
|
'history_detail_address' => 'Address',
|
|
'history_detail_type' => 'Job Type',
|
|
'history_detail_started' => 'Start',
|
|
'history_detail_ended' => 'End',
|
|
'history_detail_duration' => 'Duration',
|
|
'history_detail_notes' => 'Notes',
|
|
'history_detail_no_notes' => 'No notes.',
|
|
'history_detail_weather' => 'Weather',
|
|
'history_detail_weather_start' => 'At Start',
|
|
'history_detail_weather_end' => 'At End',
|
|
'history_detail_temperature' => 'Temperature',
|
|
'history_detail_precipitation' => 'Precipitation',
|
|
'history_detail_snow_depth' => 'Snow Depth',
|
|
'history_detail_photos' => 'Photos',
|
|
'history_detail_gps_points' => 'GPS Points',
|
|
'history_detail_back' => 'Back to list',
|
|
'nav_history' => 'My Jobs',
|
|
|
|
'gps_overview_title' => 'GPS Status',
|
|
'gps_overview_heading' => 'GPS Status of All Drivers',
|
|
'gps_col_driver' => 'Driver',
|
|
'gps_col_status' => 'GPS Status',
|
|
'gps_col_last_seen' => 'Last Seen',
|
|
'gps_col_battery' => 'Battery',
|
|
'gps_col_active_job' => 'Active Job',
|
|
'gps_col_credentials' => 'Credentials',
|
|
'gps_status_online' => 'Online',
|
|
'gps_status_idle' => 'Idle',
|
|
'gps_status_offline' => 'Offline',
|
|
'gps_status_no_data' => 'No GPS Data',
|
|
'gps_status_not_configured' => 'Not Configured',
|
|
'gps_credentials_configured' => 'Configured',
|
|
'gps_credentials_not_configured' => 'Not Configured',
|
|
'gps_no_drivers' => 'No drivers available.',
|
|
'gps_no_active_job' => '—',
|
|
'gps_auto_refresh_note' => 'This page refreshes automatically every 60 seconds.',
|
|
];
|