diff --git a/lang/ar_SA/api_tokens.php b/lang/ar_SA/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/ar_SA/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/ar_SA/auth.php b/lang/ar_SA/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/ar_SA/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/ar_SA/dashboard.php b/lang/ar_SA/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/ar_SA/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/ar_SA/enums.php b/lang/ar_SA/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/ar_SA/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/ar_SA/errors.php b/lang/ar_SA/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/ar_SA/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/ar_SA/general.php b/lang/ar_SA/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/ar_SA/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/ar_SA/passwords.php b/lang/ar_SA/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/ar_SA/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/ar_SA/results.php b/lang/ar_SA/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/ar_SA/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/ar_SA/settings.php b/lang/ar_SA/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/ar_SA/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/ar_SA/settings/data_integration.php b/lang/ar_SA/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/ar_SA/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/ar_SA/settings/notifications.php b/lang/ar_SA/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/ar_SA/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/ar_SA/settings/thresholds.php b/lang/ar_SA/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/ar_SA/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/ar_SA/tools.php b/lang/ar_SA/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/ar_SA/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/ar_SA/users.php b/lang/ar_SA/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/ar_SA/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/ar_SA/validation.php b/lang/ar_SA/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/ar_SA/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/da_DK/api_tokens.php b/lang/da_DK/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/da_DK/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/da_DK/auth.php b/lang/da_DK/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/da_DK/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/da_DK/dashboard.php b/lang/da_DK/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/da_DK/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/da_DK/enums.php b/lang/da_DK/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/da_DK/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/da_DK/errors.php b/lang/da_DK/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/da_DK/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/da_DK/general.php b/lang/da_DK/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/da_DK/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/da_DK/passwords.php b/lang/da_DK/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/da_DK/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/da_DK/results.php b/lang/da_DK/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/da_DK/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/da_DK/settings.php b/lang/da_DK/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/da_DK/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/da_DK/settings/data_integration.php b/lang/da_DK/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/da_DK/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/da_DK/settings/notifications.php b/lang/da_DK/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/da_DK/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/da_DK/settings/thresholds.php b/lang/da_DK/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/da_DK/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/da_DK/tools.php b/lang/da_DK/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/da_DK/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/da_DK/users.php b/lang/da_DK/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/da_DK/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/da_DK/validation.php b/lang/da_DK/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/da_DK/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/de_DE/api_tokens.php b/lang/de_DE/api_tokens.php new file mode 100644 index 000000000..ec533b9f6 --- /dev/null +++ b/lang/de_DE/api_tokens.php @@ -0,0 +1,30 @@ + 'API-Token', + 'label' => 'API-Token', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API-Token', + 'create_api_token' => 'API-Token erstellen', + 'your_token' => 'Dein Token', + 'token_status' => 'Token-Status', + + // Token lists + 'active_tokens' => 'Aktive Token', + 'expired_tokens' => 'Abgelaufene Token', + 'all_tokens' => 'Alle Token', + + // Token properties + 'expires_at' => 'Gültig bis', + 'expires_at_helper_text' => 'Leer lassen, wenn kein Ablaufdatum gewünscht wird', + 'last_used_at' => 'Zuletzt verwendet am', + + // Abilities/Permissions + 'abilities' => 'Fähigkeiten', + 'read_results' => 'Ergebnisse lesen', + 'read_results_description' => 'Das Token hat die Berechtigung zum Lesen von Ergebnissen und Statistiken.', + 'run_speedtest_description' => 'Der Token wird die Berechtigung haben, Geschwindigkeitstest auszuführen.', + 'list_servers_description' => 'Das Token wird die Berechtigung haben, Server zu listen.', +]; diff --git a/lang/de_DE/auth.php b/lang/de_DE/auth.php new file mode 100644 index 000000000..6d83d009e --- /dev/null +++ b/lang/de_DE/auth.php @@ -0,0 +1,20 @@ + 'Diese Zugangsdaten stimmen nicht mit unseren Datensätzen überein.', + 'password' => 'Das angegebene Passwort ist falsch.', + 'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.', + +]; diff --git a/lang/de_DE/dashboard.php b/lang/de_DE/dashboard.php new file mode 100644 index 000000000..093e2caab --- /dev/null +++ b/lang/de_DE/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'Keine Geschwindigkeitstests geplant.', + 'next_speedtest_at' => 'Nächster Geschwindigkeitstest um', + + // Widgets + 'recent_results' => 'Neueste Ergebnisse', + 'statistics' => 'Statistiken', + 'latest_download' => 'Letzter Download', + 'latest_upload' => 'Letzter Upload', + 'latest_ping' => 'Letztes Ping', +]; diff --git a/lang/de_DE/enums.php b/lang/de_DE/enums.php new file mode 100644 index 000000000..c088858bc --- /dev/null +++ b/lang/de_DE/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Prüfe', + 'completed' => 'Abgeschlossen', + 'failed' => 'Fehler', + 'running' => 'Laufend', + 'started' => 'Gestartet', + 'skipped' => 'Übersprungen', + 'waiting' => 'Warten', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/de_DE/errors.php b/lang/de_DE/errors.php new file mode 100644 index 000000000..fc3319ec3 --- /dev/null +++ b/lang/de_DE/errors.php @@ -0,0 +1,23 @@ + 'Serverfehler', + 'oops_server_error' => 'Hoppla, Serverfehler!', + 'error_message' => 'Fehlermeldung', + 'error_fetching_servers' => 'Fehler beim Abrufen der Server', + 'servers_refreshed_successfully' => 'Server erfolgreich aktualisiert', + 'copied_to_clipboard' => 'In Zwischenablage kopiert', + + // Speedtest specific errors + 'ookla_error' => 'Beim Auflisten von Speedtest Servern ist ein Fehler aufgetreten. Überprüfen Sie die Logs.', + 'cron_invalid' => 'Ungültiger Cron-Ausdruck', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Möchten Sie fortfahren?', + 'fail' => 'Befehl abgebrochen.', + 'finished' => '✅ fertig!', + 'info_1' => 'Dies prüft alle Ergebnisse und korrigiert den Status auf "abgeschlossen" oder "fehlgeschlagen" basierend auf den Daten.', + 'info_2' => '📖 Lesen Sie die Dokumentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/de_DE/general.php b/lang/de_DE/general.php new file mode 100644 index 000000000..00ddf0d0d --- /dev/null +++ b/lang/de_DE/general.php @@ -0,0 +1,106 @@ + 'Speichern', + 'cancel' => 'Abbrechen', + 'delete' => 'Löschen', + 'edit' => 'Bearbeiten', + 'create' => 'Anlegen', + 'search' => 'Suchen', + 'filter' => 'Filtern', + 'export' => 'Exportieren', + 'actions' => 'Aktionen', + 'enable' => 'Aktivieren', + 'yes' => 'Ja', + 'no' => 'Nein', + 'options' => 'Optionen', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'E-Mail', + 'email_address' => 'E-Mail-Adresse', + 'password' => 'Passwort', + 'password_confirmation' => 'Passwortbestätigung', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Nachricht', + 'comment' => 'Kommentar', + 'comments' => 'Kommentare', + 'created_at' => 'Erstellt am', + 'updated_at' => 'Aktualisiert am', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Ergebnisse', + 'settings' => 'Einstellungen', + 'users' => 'Benutzer', + 'documentation' => 'Dokumentation', + 'links' => 'Links', + 'donate' => 'Spenden', + + // Roles + 'admin' => 'Admin', + 'user' => 'Benutzer', + 'role' => 'Rolle', + + // Date ranges + 'last_24h' => 'Letzte 24 Stunden', + 'last_week' => 'Letzte Woche', + 'last_month' => 'Letzten Monat', + + // Metrics + 'average' => 'Durchschnitt', + 'high' => 'Hoch', + 'low' => 'Niedrig', + 'faster' => 'schneller', + 'slower' => 'langsamer', + 'healthy' => 'Gesund', + + // Units + 'ms' => 'M', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Hochladen', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Durchschnitt (ms)', + 'high_ms' => 'Hoch (ms)', + 'low_ms' => 'Niedrig (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download-Latenz', + 'upload_latency' => 'Upload-Latenz', + + // Actions + 'run_speedtest' => 'Schnelltest ausführen', + 'list_servers' => 'Server auflisten', + 'export_current_results' => 'Aktuelle Ergebnisse exportieren', + 'test' => 'Testen', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Plattform', + + // Update status + 'update_available' => 'Update verfügbar!', + 'up_to_date' => 'Aktuell', + + // Notifications + 'token_created' => 'Token erstellt', +]; diff --git a/lang/de_DE/passwords.php b/lang/de_DE/passwords.php new file mode 100644 index 000000000..b4625311f --- /dev/null +++ b/lang/de_DE/passwords.php @@ -0,0 +1,20 @@ + 'Ihr Passwort wurde zurückgesetzt!', + 'sent' => 'Wir haben Ihren Link zum Zurücksetzen des Passworts per E-Mail gesendet!', + 'password' => 'Das Passwort und die Bestätigung müssen übereinstimmen und mindestens sechs Zeichen enthalten.', + +]; diff --git a/lang/de_DE/results.php b/lang/de_DE/results.php new file mode 100644 index 000000000..143dbcf2f --- /dev/null +++ b/lang/de_DE/results.php @@ -0,0 +1,73 @@ + 'Ergebnisse', + 'result_overview' => 'Ergebnisübersicht', + + // Metrics + 'download_latency_high' => 'Download-Latenz hoch', + 'download_latency_low' => 'Download-Latenz niedrig', + 'download_latency_iqm' => 'Download-Latenz IQM', + 'download_latency_jitter' => 'Download-Latenz-Jitter', + + 'upload_latency_high' => 'Upload-Latenz hoch', + 'upload_latency_low' => 'Upload-Latenz niedrig', + 'upload_latency_iqm' => 'Upload-Latenz IQM', + 'upload_latency_jitter' => 'Upload-Latenz-Jitter', + + 'ping_details' => 'Ping-Details', + 'ping_jitter' => 'Ping-Jitter', + 'ping_high' => 'Ping hoch', + 'ping_low' => 'Ping niedrig', + + 'packet_loss' => 'Paketverlust', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadaten', + 'server_id' => 'Server-ID', + 'server_host' => 'Server Host', + 'server_name' => 'Servername', + 'server_location' => 'Serverstandort', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP-Adresse', + 'scheduled' => 'Geplant', + + // Filters + 'only_healthy_speedtests' => 'Nur gesunde Geschwindigkeitstests', + 'only_unhealthy_speedtests' => 'Nur ungesunde Geschwindigkeitstests', + 'only_manual_speedtests' => 'Nur manuelle Geschwindigkeitstests', + 'only_scheduled_speedtests' => 'Nur geplante Geschwindigkeitstests', + 'created_from' => 'Erstellt von', + 'created_until' => 'Erstellt bis', + + // Export + 'export_all_results' => 'Alle Ergebnisse exportieren', + 'export_all_results_description' => 'Exportiert jede Spalte für alle Ergebnisse.', + 'export_completed' => 'Export abgeschlossen, :count :rows exportiert.', + 'failed_export' => ':count :rows konnte nicht exportiert werden.', + 'row' => '{1} :count Zeile|[2,*] :count Zeilen', + + // Actions + 'update_comments' => 'Kommentare aktualisieren', + 'truncate_results' => 'Ergebnisse kürzen', + 'truncate_results_description' => 'Sind Sie sicher, dass Sie alle Ergebnisse kürzen möchten? Diese Aktion kann nicht rückgängig gemacht werden.', + 'truncate_results_success' => 'Ergebnistabelle abgeschnitten!', + 'view_on_speedtest_net' => 'Auf Speedtest.net anzeigen', + + // Notifications + 'speedtest_started' => 'Geschwindigkeit gestartet', + 'speedtest_completed' => 'Geschwindigkeit, abgeschlossen', + 'download_threshold_breached' => 'Download-Schwelle gebrochen!', + 'upload_threshold_breached' => 'Upload-Schwelle gebrochen!', + 'ping_threshold_breached' => 'Ping-Schwelle gebrochen!', + + // Run Speedtest Action + 'speedtest' => 'Schnelligkeit', + 'public_dashboard' => 'Öffentliches Dashboard', + 'select_server' => 'Server auswählen', + 'select_server_helper' => 'Leer lassen, um den Speedtest auszuführen, ohne einen Server anzugeben. Blockierte Server werden übersprungen.', + 'manual_servers' => 'Manuelle Server', + 'closest_servers' => 'Closest Server', +]; diff --git a/lang/de_DE/settings.php b/lang/de_DE/settings.php new file mode 100644 index 000000000..0d327fd2b --- /dev/null +++ b/lang/de_DE/settings.php @@ -0,0 +1,13 @@ + 'Einstellungen', + 'label' => 'Einstellungen', + + // Common settings labels + 'triggers' => 'Auslöser', + 'verify_ssl' => 'SSL überprüfen', + 'username' => 'Benutzername', + 'username_placeholder' => 'Benutzername für Basic Auth (optional)', + 'password_placeholder' => 'Passwort für Basic Auth (optional)', +]; diff --git a/lang/de_DE/settings/data_integration.php b/lang/de_DE/settings/data_integration.php new file mode 100644 index 000000000..7f096962d --- /dev/null +++ b/lang/de_DE/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Datenintegration', + 'label' => 'Datenintegration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'Wenn aktiviert, werden alle neuen Speedtest-Ergebnisse auch an InfluxDB gesendet.', + 'influxdb_v2_enabled' => 'Aktivieren', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://dein-influxdb-Instanz', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Eimer', + 'influxdb_v2_bucket_placeholder' => 'speedtest-Tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'SSL überprüfen', + + // Actions + 'test_connection' => 'Verbindung testen', + 'starting_bulk_data_write_to_influxdb' => 'Starte Massendaten in InfluxDB schreiben', + 'sending_test_data_to_influxdb' => 'Senden von Testdaten an InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb-Test fehlgeschlagen', + 'influxdb_test_failed_body' => 'Überprüfen Sie die Protokolle für weitere Details.', + 'influxdb_test_success' => 'Testdaten erfolgreich an Influxdb gesendet', + 'influxdb_test_success_body' => 'Testdaten wurden an InfluxDB gesendet. Überprüfen Sie, ob die Daten empfangen wurden.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Fehler beim Erstellen des Schreibens auf Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Überprüfen Sie die Protokolle für weitere Details.', + 'influxdb_bulk_write_success' => 'Massendatenlade für Influxdb abgeschlossen.', + 'influxdb_bulk_write_success_body' => 'Daten wurden an InfluxDB gesendet. Überprüfen Sie, ob die Daten empfangen wurden.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Eimer', +]; diff --git a/lang/de_DE/settings/notifications.php b/lang/de_DE/settings/notifications.php new file mode 100644 index 000000000..b1ee21035 --- /dev/null +++ b/lang/de_DE/settings/notifications.php @@ -0,0 +1,56 @@ + 'Benachrichtigungen', + 'label' => 'Benachrichtigungen', + + // Database notifications + 'database' => 'Datenbank', + 'database_description' => 'Benachrichtigungen, die an diesen Kanal gesendet werden, werden unter 🔔 Symbol in der Kopfzeile angezeigt.', + 'enable_database_notifications' => 'Datenbank-Benachrichtigungen aktivieren', + 'database_on_speedtest_run' => 'Bei jedem Schnelltest benachrichtigen', + 'database_on_threshold_failure' => 'Benachrichtigen bei Schwellenausfällen', + 'test_database_channel' => 'Datenbankkanal testen', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'E-Mail-Benachrichtigungen aktivieren', + 'recipients' => 'Empfänger', + 'mail_on_speedtest_run' => 'Bei jedem Schnelltest benachrichtigen', + 'mail_on_threshold_failure' => 'Benachrichtigen bei Schwellenausfällen', + 'test_mail_channel' => 'Mail-Kanal testen', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Webhook Benachrichtigungen aktivieren', + 'webhook_on_speedtest_run' => 'Bei jedem Schnelltest benachrichtigen', + 'webhook_on_threshold_failure' => 'Benachrichtigen bei Schwellenausfällen', + 'test_webhook_channel' => 'Webhook-Kanal testen', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Bei jedem Schnelltest benachrichtigen', + 'notify_on_threshold_failures' => 'Benachrichtigen bei Schwellenausfällen', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'Ich sage: Ping', + 'pong' => 'Sie sagen: Pong', + 'received' => 'Testdatenbank-Benachrichtigung erhalten!', + 'sent' => 'Testdatenbank-Benachrichtigung gesendet.', + ], + 'mail' => [ + 'add' => 'E-Mail-Empfänger hinzufügen!', + 'sent' => 'Test-E-Mail-Benachrichtigung gesendet.', + ], + 'webhook' => [ + 'add' => 'Webhook URLs hinzufügen!', + 'sent' => 'Webhook Benachrichtigung gesendet.', + 'payload' => 'Teste Webhook-Benachrichtigung', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Grenzwert-Benachrichtigungen werden an die /fail Route in der URL gesendet.', +]; diff --git a/lang/de_DE/settings/thresholds.php b/lang/de_DE/settings/thresholds.php new file mode 100644 index 000000000..4a47322ff --- /dev/null +++ b/lang/de_DE/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Grenzwerte', + 'label' => 'Grenzwerte', + + // Absolute thresholds + 'absolute' => 'Absolut', + 'absolute_description' => 'Absolute Schwellenwerte berücksichtigen nicht den vorherigen Verlauf und könnten bei jedem Test ausgelöst werden.', + 'absolute_enabled' => 'absolute Schwellenwerte aktivieren', + + // Metrics section + 'metrics' => 'Metriken', + 'metrics_helper_text' => 'Setze Null, um diese Metrik zu deaktivieren.', + + // General threshold labels + 'thresholds' => 'Grenzwerte', + 'threshold_enabled' => 'Grenzwert aktiviert', + 'threshold_download' => 'Schwellen-Download', + 'threshold_upload' => 'Schwellenwert hochladen', + 'threshold_ping' => 'Grenzwert Ping', +]; diff --git a/lang/de_DE/tools.php b/lang/de_DE/tools.php new file mode 100644 index 000000000..a2cfe5d73 --- /dev/null +++ b/lang/de_DE/tools.php @@ -0,0 +1,6 @@ + 'Ookla Server', +]; diff --git a/lang/de_DE/users.php b/lang/de_DE/users.php new file mode 100644 index 000000000..fd70d8582 --- /dev/null +++ b/lang/de_DE/users.php @@ -0,0 +1,15 @@ + 'Benutzer', + 'label' => 'Benutzer', + + // User prompts and messages + 'user_change' => [ + 'info' => 'Benutzerrolle aktualisiert.', + 'password_updated_info' => ':email Passwort aktualisiert.', + 'what_is_password' => 'Was ist das neue Passwort?', + 'what_is_the_email_address' => 'Wie lautet die E-Mail-Adresse?', + 'what_role' => 'Welche Rolle soll der Benutzer spielen?', + ], +]; diff --git a/lang/de_DE/validation.php b/lang/de_DE/validation.php new file mode 100644 index 000000000..d52ae0600 --- /dev/null +++ b/lang/de_DE/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'adresse', + 'age' => 'alt', + 'body' => 'inhalt', + 'cell' => 'zelle', + 'city' => 'stadt', + 'country' => 'land', + 'date' => 'datum', + 'day' => 'tag', + 'excerpt' => 'summary', + 'first_name' => 'vorname', + 'gender' => 'Geschlecht', + 'marital_status' => 'ehelicher Status', + 'profession' => 'Beruf', + 'nationality' => 'Nationalität', + 'hour' => 'std', + 'last_name' => 'Nachname', + 'message' => 'nachricht', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'monat', + 'name' => 'name', + 'zipcode' => 'Postleitzahl', + 'company_name' => 'firmenname', + 'neighborhood' => 'Nachbarschaft', + 'number' => 'anzahl', + 'password' => 'passwort', + 'phone' => 'telefon', + 'second' => 'sekunde', + 'sex' => 'sex', + 'state' => 'status', + 'street' => 'Straße', + 'subject' => 'thema', + 'text' => 'text', + 'time' => 'Zeit', + 'title' => 'titel', + 'username' => 'benutzername', + 'year' => 'jahr', + 'description' => 'beschreibung', + 'password_confirmation' => 'passwort bestätigen', + 'current_password' => 'aktuelles Passwort', + 'complement' => 'ergänzen', + 'modality' => 'modalität', + 'category' => 'kategorie', + 'blood_type' => 'blutiger Typ', + 'birth_date' => 'Geburtsdatum', + ], +]; diff --git a/lang/el_GR/api_tokens.php b/lang/el_GR/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/el_GR/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/el_GR/auth.php b/lang/el_GR/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/el_GR/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/el_GR/dashboard.php b/lang/el_GR/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/el_GR/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/el_GR/enums.php b/lang/el_GR/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/el_GR/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/el_GR/errors.php b/lang/el_GR/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/el_GR/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/el_GR/general.php b/lang/el_GR/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/el_GR/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/el_GR/passwords.php b/lang/el_GR/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/el_GR/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/el_GR/results.php b/lang/el_GR/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/el_GR/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/el_GR/settings.php b/lang/el_GR/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/el_GR/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/el_GR/settings/data_integration.php b/lang/el_GR/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/el_GR/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/el_GR/settings/notifications.php b/lang/el_GR/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/el_GR/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/el_GR/settings/thresholds.php b/lang/el_GR/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/el_GR/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/el_GR/tools.php b/lang/el_GR/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/el_GR/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/el_GR/users.php b/lang/el_GR/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/el_GR/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/el_GR/validation.php b/lang/el_GR/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/el_GR/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/es_ES/api_tokens.php b/lang/es_ES/api_tokens.php new file mode 100644 index 000000000..762784c33 --- /dev/null +++ b/lang/es_ES/api_tokens.php @@ -0,0 +1,30 @@ + 'Tokens API', + 'label' => 'Tokens API', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'Tokens de API', + 'create_api_token' => 'Crear token API', + 'your_token' => 'Tu token', + 'token_status' => 'Estado del token', + + // Token lists + 'active_tokens' => 'Tokens activos', + 'expired_tokens' => 'Tokens caducados', + 'all_tokens' => 'Todos los tokens', + + // Token properties + 'expires_at' => 'Expira el', + 'expires_at_helper_text' => 'Dejar en blanco si no desea una fecha de caducidad', + 'last_used_at' => 'Último usado en', + + // Abilities/Permissions + 'abilities' => 'Habilidades', + 'read_results' => 'Leer resultados', + 'read_results_description' => 'El token tendrá permiso para leer resultados y estadísticas.', + 'run_speedtest_description' => 'El token tendrá permiso para ejecutar el test de velocidad.', + 'list_servers_description' => 'El token tendrá permiso para listar servidores.', +]; diff --git a/lang/es_ES/auth.php b/lang/es_ES/auth.php new file mode 100644 index 000000000..f4b03c1d5 --- /dev/null +++ b/lang/es_ES/auth.php @@ -0,0 +1,20 @@ + 'Estas credenciales no coinciden con nuestros registros.', + 'password' => 'La contraseña proporcionada es incorrecta.', + 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.', + +]; diff --git a/lang/es_ES/dashboard.php b/lang/es_ES/dashboard.php new file mode 100644 index 000000000..b6783d90f --- /dev/null +++ b/lang/es_ES/dashboard.php @@ -0,0 +1,14 @@ + 'Tablero', + 'no_speedtests_scheduled' => 'No hay pruebas de velocidad programadas.', + 'next_speedtest_at' => 'Siguiente prueba de velocidad en', + + // Widgets + 'recent_results' => 'Resultados recientes', + 'statistics' => 'Estadísticas', + 'latest_download' => 'Última descarga', + 'latest_upload' => 'Última subida', + 'latest_ping' => 'Último ping', +]; diff --git a/lang/es_ES/enums.php b/lang/es_ES/enums.php new file mode 100644 index 000000000..3c8089b13 --- /dev/null +++ b/lang/es_ES/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Marcando', + 'checking' => 'Comprobando', + 'completed' => 'Completado', + 'failed' => 'Fallo', + 'running' => 'Ejecutando', + 'started' => 'Iniciado', + 'skipped' => 'Omitido', + 'waiting' => 'Esperando', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/es_ES/errors.php b/lang/es_ES/errors.php new file mode 100644 index 000000000..c11da734d --- /dev/null +++ b/lang/es_ES/errors.php @@ -0,0 +1,23 @@ + 'Error del servidor', + 'oops_server_error' => '¡Uy, error del servidor!', + 'error_message' => 'Mensaje de error', + 'error_fetching_servers' => 'Error obteniendo servidores', + 'servers_refreshed_successfully' => 'Servidores actualizados con éxito', + 'copied_to_clipboard' => 'Copiado al portapapeles', + + // Speedtest specific errors + 'ookla_error' => 'Se ha producido un error al listar servidores de prueba de velocidad, comprobar los registros.', + 'cron_invalid' => 'Expresión cron no válida', + + // Status fix command + 'status_fix' => [ + 'confirm' => '¿Desea continuar?', + 'fail' => 'Comando abortado.', + 'finished' => '✅ ¡Hecho!', + 'info_1' => 'Esto comprobará todos los resultados y corregirá el estado a "completado" o "fallado" basado en los datos.', + 'info_2' => '📖 Lee la documentación: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/es_ES/general.php b/lang/es_ES/general.php new file mode 100644 index 000000000..bf2e3a571 --- /dev/null +++ b/lang/es_ES/general.php @@ -0,0 +1,106 @@ + 'Guardar', + 'cancel' => 'Cancelar', + 'delete' => 'Eliminar', + 'edit' => 'Editar', + 'create' => 'Crear', + 'search' => 'Buscar', + 'filter' => 'Filtro', + 'export' => 'Exportar', + 'actions' => 'Acciones', + 'enable' => 'Activar', + 'yes' => 'Sí', + 'no' => 'Nu', + 'options' => 'Opciones', + 'details' => 'Detalles', + + // Common labels + 'name' => 'Nombre', + 'email' => 'E-mail', + 'email_address' => 'Dirección de email', + 'password' => 'Contraseña', + 'password_confirmation' => 'Confirmación de contraseña', + 'id' => 'ID', + 'status' => 'Estado', + 'message' => 'Mensaje', + 'comment' => 'Comentario', + 'comments' => 'Comentarios', + 'created_at' => 'Creado el', + 'updated_at' => 'Actualizado el', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Tablero', + 'results' => 'Resultados', + 'settings' => 'Ajustes', + 'users' => 'Usuarios', + 'documentation' => 'Documentación', + 'links' => 'Enlaces', + 'donate' => 'Donar', + + // Roles + 'admin' => 'Admin', + 'user' => 'Usuario', + 'role' => 'Rol', + + // Date ranges + 'last_24h' => 'Últimas 24 horas', + 'last_week' => 'Última semana', + 'last_month' => 'Último mes', + + // Metrics + 'average' => 'Promedio', + 'high' => 'Alta', + 'low' => 'Baja', + 'faster' => 'más rápido', + 'slower' => 'más lento', + 'healthy' => 'Saludable', + + // Units + 'ms' => 'm', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Descargar', + 'upload' => 'Subir', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Descargar (Mbps)', + 'upload_mbps' => 'Subir (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Descargar (ms)', + 'upload_ms' => 'Subir (ms)', + 'average_ms' => 'Promedio (ms)', + 'high_ms' => 'Alto (ms)', + 'low_ms' => 'Baja (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Descargar latencia', + 'upload_latency' => 'Cargar latencia', + + // Actions + 'run_speedtest' => 'Ejecutar el test de velocidad', + 'list_servers' => 'Listar servidores', + 'export_current_results' => 'Exportar resultados actuales', + 'test' => 'Prueba', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Rastreador más rápido', + 'platform' => 'Plataforma', + + // Update status + 'update_available' => '¡Actualización disponible!', + 'up_to_date' => 'Actualizado', + + // Notifications + 'token_created' => 'Token creado', +]; diff --git a/lang/es_ES/passwords.php b/lang/es_ES/passwords.php new file mode 100644 index 000000000..c1132d746 --- /dev/null +++ b/lang/es_ES/passwords.php @@ -0,0 +1,20 @@ + '¡Tu contraseña ha sido restablecida!', + 'sent' => '¡Hemos enviado por correo electrónico tu enlace de restablecimiento de contraseña!', + 'password' => 'La contraseña y la confirmación deben coincidir y contener al menos seis caracteres.', + +]; diff --git a/lang/es_ES/results.php b/lang/es_ES/results.php new file mode 100644 index 000000000..9127c6122 --- /dev/null +++ b/lang/es_ES/results.php @@ -0,0 +1,73 @@ + 'Resultados', + 'result_overview' => 'Resumen de resultados', + + // Metrics + 'download_latency_high' => 'Descargar latencia alta', + 'download_latency_low' => 'Descargar latencia baja', + 'download_latency_iqm' => 'Descargar latencia IQM', + 'download_latency_jitter' => 'Descargar jitter de latencia', + + 'upload_latency_high' => 'Subir latencia alta', + 'upload_latency_low' => 'Subir latencia baja', + 'upload_latency_iqm' => 'Cargar latencia IQM', + 'upload_latency_jitter' => 'Subir jitter de latencia', + + 'ping_details' => 'Detalles de ping', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping alto', + 'ping_low' => 'Ping bajo', + + 'packet_loss' => 'Pérdida del paquete', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Servidor y metadatos', + 'server_id' => 'ID del servidor', + 'server_host' => 'Servidor host', + 'server_name' => 'Nombre del servidor', + 'server_location' => 'Ubicación del servidor', + 'service' => 'Servicio', + 'isp' => 'ISP', + 'ip_address' => 'Dirección IP', + 'scheduled' => 'Programado', + + // Filters + 'only_healthy_speedtests' => 'Sólo pruebas de velocidad saludables', + 'only_unhealthy_speedtests' => 'Sólo pruebas de velocidad poco saludables', + 'only_manual_speedtests' => 'Sólo pruebas de velocidad manuales', + 'only_scheduled_speedtests' => 'Sólo pruebas de velocidad programadas', + 'created_from' => 'Creado a partir de', + 'created_until' => 'Creado hasta', + + // Export + 'export_all_results' => 'Exportar todos los resultados', + 'export_all_results_description' => 'Exportará cada columna para todos los resultados.', + 'export_completed' => 'Exportación completada, :count :rows exportadas.', + 'failed_export' => ':count :rows falló al exportar.', + 'row' => '{1} :count fila|[2,*] :count filas', + + // Actions + 'update_comments' => 'Actualizar comentarios', + 'truncate_results' => 'Truncar resultados', + 'truncate_results_description' => '¿Está seguro que desea truncar todos los resultados? Esta acción es irreversible.', + 'truncate_results_success' => '¡Tabla de resultados truncada!', + 'view_on_speedtest_net' => 'Ver en Speedtest.net', + + // Notifications + 'speedtest_started' => 'Velocidad iniciada', + 'speedtest_completed' => 'Velocidad completada', + 'download_threshold_breached' => '¡Umbral de descarga incumplido!', + 'upload_threshold_breached' => '¡Umbral de subida infringido!', + 'ping_threshold_breached' => '¡Umbral de ping infringido!', + + // Run Speedtest Action + 'speedtest' => 'Velocidad', + 'public_dashboard' => 'Panel público', + 'select_server' => 'Seleccionar Servidor', + 'select_server_helper' => 'Dejar en blanco para ejecutar el test de velocidad sin especificar un servidor. Se omitirán los servidores bloqueados.', + 'manual_servers' => 'Servidores manuales', + 'closest_servers' => 'Servidor más cerrado', +]; diff --git a/lang/es_ES/settings.php b/lang/es_ES/settings.php new file mode 100644 index 000000000..102901771 --- /dev/null +++ b/lang/es_ES/settings.php @@ -0,0 +1,13 @@ + 'Ajustes', + 'label' => 'Ajustes', + + // Common settings labels + 'triggers' => 'Disparadores', + 'verify_ssl' => 'Verificar SSL', + 'username' => 'Usuario', + 'username_placeholder' => 'Nombre de usuario para Auth Básica (opcional)', + 'password_placeholder' => 'Contraseña para autenticación básica (opcional)', +]; diff --git a/lang/es_ES/settings/data_integration.php b/lang/es_ES/settings/data_integration.php new file mode 100644 index 000000000..1c3633559 --- /dev/null +++ b/lang/es_ES/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Integración de datos', + 'label' => 'Integración de datos', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'Cuando está activado, todos los nuevos resultados de Speedtest también serán enviados a InfluxDB.', + 'influxdb_v2_enabled' => 'Activar', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://su-instancia-influxdb', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Cubo', + 'influxdb_v2_bucket_placeholder' => 'rastreador de velocidad', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verificar SSL', + + // Actions + 'test_connection' => 'Probar conexión', + 'starting_bulk_data_write_to_influxdb' => 'Iniciando escritura masiva de datos en InfluxDB', + 'sending_test_data_to_influxdb' => 'Enviando datos de prueba a InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Prueba de Influxdb fallida', + 'influxdb_test_failed_body' => 'Revisa los registros para más detalles.', + 'influxdb_test_success' => 'Datos de prueba enviados con éxito a Influxdb', + 'influxdb_test_success_body' => 'Los datos de prueba han sido enviados a InfluxDB, compruebe si los datos han sido recibidos.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Error al construir escritura en Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Revisa los registros para más detalles.', + 'influxdb_bulk_write_success' => 'Carga de datos en masa a Influxdb.', + 'influxdb_bulk_write_success_body' => 'Los datos han sido enviados a InfluxDB, compruebe si los datos han sido recibidos.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Cubo', +]; diff --git a/lang/es_ES/settings/notifications.php b/lang/es_ES/settings/notifications.php new file mode 100644 index 000000000..03edbec00 --- /dev/null +++ b/lang/es_ES/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notificaciones', + 'label' => 'Notificaciones', + + // Database notifications + 'database' => 'Base de datos', + 'database_description' => 'Las notificaciones enviadas a este canal se mostrarán bajo el icono :belell: en el encabezado.', + 'enable_database_notifications' => 'Habilitar notificaciones de base de datos', + 'database_on_speedtest_run' => 'Notificar en cada prueba de velocidad', + 'database_on_threshold_failure' => 'Notificar en los umbrales de fallos', + 'test_database_channel' => 'Probar canal de base de datos', + + // Mail notifications + 'mail' => 'Correo', + 'enable_mail_notifications' => 'Habilitar notificaciones de correo', + 'recipients' => 'Destinatarios', + 'mail_on_speedtest_run' => 'Notificar en cada prueba de velocidad', + 'mail_on_threshold_failure' => 'Notificar en los umbrales de fallos', + 'test_mail_channel' => 'Canal de prueba de correo', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Habilitar notificaciones de webhook', + 'webhook_on_speedtest_run' => 'Notificar en cada prueba de velocidad', + 'webhook_on_threshold_failure' => 'Notificar en los umbrales de fallos', + 'test_webhook_channel' => 'Probar canal webhook', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notificar en cada prueba de velocidad', + 'notify_on_threshold_failures' => 'Notificar en los umbrales de fallos', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'Yo digo: ping', + 'pong' => 'Dice usted: pong', + 'received' => 'Notificación de la base de datos de prueba recibida!', + 'sent' => 'Notificación de prueba de base de datos enviada.', + ], + 'mail' => [ + 'add' => '¡Añadir destinatarios de correo!', + 'sent' => 'Notificación de correo de prueba enviada.', + ], + 'webhook' => [ + 'add' => '¡Añadir URL de webhook!', + 'sent' => 'Prueba de notificación de webhook enviada.', + 'payload' => 'Probando notificación de webhook', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Las notificaciones de umbral se enviarán a la ruta /fail en la URL.', +]; diff --git a/lang/es_ES/settings/thresholds.php b/lang/es_ES/settings/thresholds.php new file mode 100644 index 000000000..8fc4e7748 --- /dev/null +++ b/lang/es_ES/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Umbrales', + 'label' => 'Umbrales', + + // Absolute thresholds + 'absolute' => 'Absoluto', + 'absolute_description' => 'Los umbrales absolutos no tienen en cuenta la historia anterior y podrían ser activados en cada prueba.', + 'absolute_enabled' => 'Habilitar umbrales absolutos', + + // Metrics section + 'metrics' => 'Métricas', + 'metrics_helper_text' => 'Establecer en cero para desactivar esta métrica.', + + // General threshold labels + 'thresholds' => 'Umbrales', + 'threshold_enabled' => 'Umbral habilitado', + 'threshold_download' => 'Umbral de descarga', + 'threshold_upload' => 'Umbral de subida', + 'threshold_ping' => 'Umbral de ping', +]; diff --git a/lang/es_ES/tools.php b/lang/es_ES/tools.php new file mode 100644 index 000000000..249d79aae --- /dev/null +++ b/lang/es_ES/tools.php @@ -0,0 +1,6 @@ + 'Servidores Ookla', +]; diff --git a/lang/es_ES/users.php b/lang/es_ES/users.php new file mode 100644 index 000000000..b3e7c1a88 --- /dev/null +++ b/lang/es_ES/users.php @@ -0,0 +1,15 @@ + 'Usuarios', + 'label' => 'Usuarios', + + // User prompts and messages + 'user_change' => [ + 'info' => 'Rol de usuario actualizado.', + 'password_updated_info' => ':email contraseña actualizada.', + 'what_is_password' => '¿Cuál es la nueva contraseña?', + 'what_is_the_email_address' => '¿Cuál es la dirección de correo electrónico?', + 'what_role' => '¿Qué rol debe tener el usuario?', + ], +]; diff --git a/lang/es_ES/validation.php b/lang/es_ES/validation.php new file mode 100644 index 000000000..9eb5a792a --- /dev/null +++ b/lang/es_ES/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'dirección', + 'age' => 'edad', + 'body' => 'contenido', + 'cell' => 'celda', + 'city' => 'ciudad', + 'country' => 'país', + 'date' => 'fecha', + 'day' => 'día', + 'excerpt' => 'summary', + 'first_name' => 'nombre', + 'gender' => 'género', + 'marital_status' => 'estado civil', + 'profession' => 'profesión', + 'nationality' => 'nacionalidad', + 'hour' => 'hora', + 'last_name' => 'apellido', + 'message' => 'mensaje', + 'minute' => 'minuto', + 'mobile' => 'móvil', + 'month' => 'mes', + 'name' => 'nombre', + 'zipcode' => 'código postal', + 'company_name' => 'nombre de empresa', + 'neighborhood' => 'vecindad', + 'number' => 'número', + 'password' => 'contraseña', + 'phone' => 'teléfono', + 'second' => 'segundo', + 'sex' => 'sexo', + 'state' => 'estado', + 'street' => 'calle', + 'subject' => 'tema', + 'text' => 'texto', + 'time' => 'tiempo', + 'title' => 'título', + 'username' => 'nombre de usuario', + 'year' => 'año', + 'description' => 'descripción', + 'password_confirmation' => 'confirmación de contraseña', + 'current_password' => 'contraseña actual', + 'complement' => 'complemento', + 'modality' => 'modalidad', + 'category' => 'categoría', + 'blood_type' => 'tipo de sangre', + 'birth_date' => 'fecha de nacimiento', + ], +]; diff --git a/lang/fr_FR/api_tokens.php b/lang/fr_FR/api_tokens.php new file mode 100644 index 000000000..1511fc17a --- /dev/null +++ b/lang/fr_FR/api_tokens.php @@ -0,0 +1,30 @@ + 'Jetons API', + 'label' => 'Jetons API', + + // Token management + 'api_token' => 'jeton API', + 'api_tokens' => 'jetons API', + 'create_api_token' => 'Créer un jeton API', + 'your_token' => 'Votre jeton', + 'token_status' => 'Statut du jeton', + + // Token lists + 'active_tokens' => 'Jetons actifs', + 'expired_tokens' => 'Jetons expirés', + 'all_tokens' => 'Tous les jetons', + + // Token properties + 'expires_at' => 'Expire le', + 'expires_at_helper_text' => 'Laisser vide si vous ne voulez pas de date d\'expiration', + 'last_used_at' => 'Dernière utilisation le', + + // Abilities/Permissions + 'abilities' => 'Capacités', + 'read_results' => 'Lire les résultats', + 'read_results_description' => 'Le jeton aura la permission de lire les résultats et les statistiques.', + 'run_speedtest_description' => 'Le jeton aura la permission d\'exécuter des tests de vitesse.', + 'list_servers_description' => 'Le jeton aura la permission de lister les serveurs.', +]; diff --git a/lang/fr_FR/auth.php b/lang/fr_FR/auth.php new file mode 100644 index 000000000..c1a529c3a --- /dev/null +++ b/lang/fr_FR/auth.php @@ -0,0 +1,20 @@ + 'Ces identifiants ne correspondent pas à nos enregistrements.', + 'password' => 'Le mot de passe fourni est incorrect.', + 'throttle' => 'Trop de tentatives de connexion. Veuillez réessayer dans :seconds secondes.', + +]; diff --git a/lang/fr_FR/dashboard.php b/lang/fr_FR/dashboard.php new file mode 100644 index 000000000..7faae0a35 --- /dev/null +++ b/lang/fr_FR/dashboard.php @@ -0,0 +1,14 @@ + 'Tableau de bord', + 'no_speedtests_scheduled' => 'Aucun test de vitesse programmé.', + 'next_speedtest_at' => 'Prochain test de vitesse à', + + // Widgets + 'recent_results' => 'Résultats récents', + 'statistics' => 'Statistiques', + 'latest_download' => 'Dernier téléchargement', + 'latest_upload' => 'Dernier envoi', + 'latest_ping' => 'Dernière latence', +]; diff --git a/lang/fr_FR/enums.php b/lang/fr_FR/enums.php new file mode 100644 index 000000000..c5afd6771 --- /dev/null +++ b/lang/fr_FR/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Évaluation comparative', + 'checking' => 'En cours de vérification', + 'completed' => 'Terminé', + 'failed' => 'Échec', + 'running' => 'En cours d\'exécution', + 'started' => 'Démarré', + 'skipped' => 'Ignoré', + 'waiting' => 'En attente', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/fr_FR/errors.php b/lang/fr_FR/errors.php new file mode 100644 index 000000000..c42fe736a --- /dev/null +++ b/lang/fr_FR/errors.php @@ -0,0 +1,23 @@ + 'Erreur serveur', + 'oops_server_error' => 'Oups, erreur de serveur !', + 'error_message' => 'Message d\'erreur', + 'error_fetching_servers' => 'Erreur lors de la récupération des serveurs', + 'servers_refreshed_successfully' => 'Serveurs actualisés avec succès', + 'copied_to_clipboard' => 'Copié dans le presse-papiers', + + // Speedtest specific errors + 'ookla_error' => 'Une erreur s’est produite pendant la création de la liste des serveurs, vérifiez les logs.', + 'cron_invalid' => 'Expression cron invalide', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Voulez-vous continuer ?', + 'fail' => 'Commande abandonnée.', + 'finished' => '✅ terminé !', + 'info_1' => 'Cela vérifiera tous les résultats et corrigera le statut à "terminé" ou "échec" en fonction des données.', + 'info_2' => '📖 Lisez la documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/fr_FR/general.php b/lang/fr_FR/general.php new file mode 100644 index 000000000..d0e542de7 --- /dev/null +++ b/lang/fr_FR/general.php @@ -0,0 +1,106 @@ + 'Enregistrer', + 'cancel' => 'Abandonner', + 'delete' => 'Supprimer', + 'edit' => 'Modifier', + 'create' => 'Créer', + 'search' => 'Chercher', + 'filter' => 'Filtrer', + 'export' => 'Exporter', + 'actions' => 'Actions', + 'enable' => 'Activer', + 'yes' => 'Oui', + 'no' => 'Non', + 'options' => 'Options', + 'details' => 'Détails', + + // Common labels + 'name' => 'Nom', + 'email' => 'Email', + 'email_address' => 'Adresse e-mail', + 'password' => 'Mot de passe', + 'password_confirmation' => 'Confirmation du mot de passe', + 'id' => 'Identifiant', + 'status' => 'Statut', + 'message' => 'Message', + 'comment' => 'Commentaire', + 'comments' => 'Commentaires', + 'created_at' => 'Créé le', + 'updated_at' => 'Mis à jour le', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Tableau de bord', + 'results' => 'Résultats', + 'settings' => 'Réglages', + 'users' => 'Utilisateurs', + 'documentation' => 'Documentation', + 'links' => 'Liens', + 'donate' => 'Faire un don', + + // Roles + 'admin' => 'Administrateur', + 'user' => 'Utilisateur', + 'role' => 'Rôle', + + // Date ranges + 'last_24h' => 'Dernières 24 heures', + 'last_week' => 'La semaine dernière', + 'last_month' => 'Le mois dernier', + + // Metrics + 'average' => 'Moyenne', + 'high' => 'Élevé', + 'low' => 'Bas', + 'faster' => 'rapide', + 'slower' => 'lent', + 'healthy' => 'Sain', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbit/s', + + // Speed test metrics + 'download' => 'Téléchargement', + 'upload' => 'Envoi', + 'ping' => 'Latence', + 'jitter' => 'Gigue', + + // Metric labels with units + 'download_mbps' => 'Téléchargement (Mbit/s)', + 'upload_mbps' => 'Envoi (Mbit/s)', + 'ping_ms' => 'Latence (ms)', + 'download_ms' => 'Téléchargement (ms)', + 'upload_ms' => 'Envoi (ms)', + 'average_ms' => 'Moyenne (ms)', + 'high_ms' => 'Élevé (ms)', + 'low_ms' => 'Bas (ms)', + 'ping_ms_label' => 'Latence (ms)', + + // Latency + 'download_latency' => 'Délai de téléchargement', + 'upload_latency' => 'Délai d\'envoi', + + // Actions + 'run_speedtest' => 'Test de vitesse', + 'list_servers' => 'Liste des serveurs', + 'export_current_results' => 'Exporter les résultats actuels', + 'test' => 'Tester', + + // Common + 'token' => 'Jeton', + + // Application + 'speedtest_tracker' => 'Suivi de test de vitesse', + 'platform' => 'Plateforme', + + // Update status + 'update_available' => 'Mise à jour disponible !', + 'up_to_date' => 'À jour', + + // Notifications + 'token_created' => 'Jeton créé', +]; diff --git a/lang/fr_FR/passwords.php b/lang/fr_FR/passwords.php new file mode 100644 index 000000000..fc96f7ae3 --- /dev/null +++ b/lang/fr_FR/passwords.php @@ -0,0 +1,20 @@ + 'Votre mot de passe a été réinitialisé !', + 'sent' => 'Nous avons envoyé un e-mail pour réinitialiser votre mot de passe !', + 'password' => 'Le mot de passe et la confirmation doivent correspondre et contenir au moins six caractères.', + +]; diff --git a/lang/fr_FR/results.php b/lang/fr_FR/results.php new file mode 100644 index 000000000..8a9d1a15e --- /dev/null +++ b/lang/fr_FR/results.php @@ -0,0 +1,73 @@ + 'Résultats', + 'result_overview' => 'Aperçu des résultats', + + // Metrics + 'download_latency_high' => 'Latence de téléchargement élevée', + 'download_latency_low' => 'Latence de téléchargement bas', + 'download_latency_iqm' => 'Latence de téléchargement MIQ', + 'download_latency_jitter' => 'Latence de téléchargement gigue', + + 'upload_latency_high' => 'Latence d\'envoi élevée', + 'upload_latency_low' => 'Latence d\'envoi faible', + 'upload_latency_iqm' => 'Latence d\'envoi MIQ', + 'upload_latency_jitter' => 'Latence d\'envoi gigue', + + 'ping_details' => 'Détails des latences', + 'ping_jitter' => 'Latence gigue', + 'ping_high' => 'Latence élevée', + 'ping_low' => 'Latence faible', + + 'packet_loss' => 'Perte de paquets', + 'iqm' => 'MIQ', + + // Server & metadata + 'server_&_metadata' => 'Serveur et Métadonnées', + 'server_id' => 'Identifiant du serveur', + 'server_host' => 'Hôte du serveur', + 'server_name' => 'Nom du serveur', + 'server_location' => 'Emplacement du serveur', + 'service' => 'Service', + 'isp' => 'FAI', + 'ip_address' => 'Adresse IP', + 'scheduled' => 'Planifié', + + // Filters + 'only_healthy_speedtests' => 'Uniquement les tests de vitesse sains', + 'only_unhealthy_speedtests' => 'Uniquement les tests de vitesse ratés', + 'only_manual_speedtests' => 'Uniquement les tests de vitesse manuels', + 'only_scheduled_speedtests' => 'Uniquement les tests de vitesse programmés', + 'created_from' => 'Créé à partir de', + 'created_until' => 'Créé jusqu\'au', + + // Export + 'export_all_results' => 'Exporter tous les résultats', + 'export_all_results_description' => 'Exporte chaque colonne pour tous les résultats.', + 'export_completed' => 'Exportation terminée, :count :rows exportée.', + 'failed_export' => ':count :rows a échoué à l\'exportation.', + 'row' => '{1} :count ligne|[2,*] :count lignes', + + // Actions + 'update_comments' => 'Actualiser les commentaires', + 'truncate_results' => 'Tronquer les résultats', + 'truncate_results_description' => 'Êtes-vous sûr de vouloir tronquer tous les résultats ? Cette action est irréversible.', + 'truncate_results_success' => 'Tableau des résultats tronqué !', + 'view_on_speedtest_net' => 'Voir sur Speedtest.net', + + // Notifications + 'speedtest_started' => 'Test de vitesse démarré', + 'speedtest_completed' => 'Test de vitesse terminé', + 'download_threshold_breached' => 'Seuil de téléchargement dépassé !', + 'upload_threshold_breached' => 'Seuil d\'envoi dépassé !', + 'ping_threshold_breached' => 'Seuil de latence dépassé !', + + // Run Speedtest Action + 'speedtest' => 'Test de vitesse', + 'public_dashboard' => 'Tableau de bord public', + 'select_server' => 'Sélectionner un serveur', + 'select_server_helper' => 'Laisser vide pour exécuter le test de vitesse sans spécifier de serveur. Les serveurs bloqués seront ignorés.', + 'manual_servers' => 'Serveurs manuels', + 'closest_servers' => 'Serveurs les plus proches', +]; diff --git a/lang/fr_FR/settings.php b/lang/fr_FR/settings.php new file mode 100644 index 000000000..3196d8eb5 --- /dev/null +++ b/lang/fr_FR/settings.php @@ -0,0 +1,13 @@ + 'Réglages', + 'label' => 'Réglages', + + // Common settings labels + 'triggers' => 'Déclencheurs', + 'verify_ssl' => 'Vérifier SSL', + 'username' => 'Nom d\'utilisateur', + 'username_placeholder' => 'Nom d\'utilisateur pour l\'authentification de base (facultatif)', + 'password_placeholder' => 'Mot de passe pour l\'authentification de base (facultatif)', +]; diff --git a/lang/fr_FR/settings/data_integration.php b/lang/fr_FR/settings/data_integration.php new file mode 100644 index 000000000..1ae9ffe1a --- /dev/null +++ b/lang/fr_FR/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Intégration des données', + 'label' => 'Intégration des données', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'Lorsque cette option est activée, tous les nouveaux résultats des tests de vitesse seront également envoyés à InfluxDB.', + 'influxdb_v2_enabled' => 'Activer', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://votre-instance-influxdb', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Seau', + 'influxdb_v2_bucket_placeholder' => 'test-de-vitesse-tracker', + 'influxdb_v2_token' => 'Jeton', + 'influxdb_v2_verify_ssl' => 'Vérifier SSL', + + // Actions + 'test_connection' => 'Tester la connexion', + 'starting_bulk_data_write_to_influxdb' => 'Démarrage de l\'écriture de données en masse sur InfluxDB', + 'sending_test_data_to_influxdb' => 'Envoi de données de test à InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Échec du test Influxdb', + 'influxdb_test_failed_body' => 'Consultez les journaux pour plus de détails.', + 'influxdb_test_success' => 'Données de test envoyées à Influxdb avec succès', + 'influxdb_test_success_body' => 'Les données de test ont été envoyées à InfluxDB, vérifiez si les données ont été reçues.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Échec de la construction de l\'écriture sur Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Consultez les journaux pour plus de détails.', + 'influxdb_bulk_write_success' => 'Charge de données en masse terminée sur Influxdb.', + 'influxdb_bulk_write_success_body' => 'Les données ont été envoyées à InfluxDB, vérifiez si les données ont été reçues.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Seau', +]; diff --git a/lang/fr_FR/settings/notifications.php b/lang/fr_FR/settings/notifications.php new file mode 100644 index 000000000..01e42f327 --- /dev/null +++ b/lang/fr_FR/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Base de données', + 'database_description' => 'Les notifications envoyées à ce salon apparaîtront sous l\'icône 🔔 dans l\'entête.', + 'enable_database_notifications' => 'Activer les notifications de base de données', + 'database_on_speedtest_run' => 'Notifier à chaque test de vitesse', + 'database_on_threshold_failure' => 'Notifier en cas de dépassement de seuil', + 'test_database_channel' => 'Tester le canal de base de données', + + // Mail notifications + 'mail' => 'Courrier', + 'enable_mail_notifications' => 'Activer les notifications par courriel', + 'recipients' => 'Destinataires', + 'mail_on_speedtest_run' => 'Notifier à chaque test de vitesse', + 'mail_on_threshold_failure' => 'Notifier en cas de dépassement de seuil', + 'test_mail_channel' => 'Tester le canal de messagerie', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Activer les notifications webhook', + 'webhook_on_speedtest_run' => 'Notifier à chaque test de vitesse', + 'webhook_on_threshold_failure' => 'Notifier en cas de dépassement de seuil', + 'test_webhook_channel' => 'Tester le canal webhook', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notifier à chaque test de vitesse', + 'notify_on_threshold_failures' => 'Notifier en cas de dépassement de seuil', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'Je dis: ping', + 'pong' => 'Vous dites: pong', + 'received' => 'Notification de base de données de test reçue !', + 'sent' => 'Notification de base de données de test envoyée.', + ], + 'mail' => [ + 'add' => 'Ajouter des destinataires d\'e-mail!', + 'sent' => 'Notification de test envoyée par e-mail.', + ], + 'webhook' => [ + 'add' => 'Ajouter des URL de webhook !', + 'sent' => 'Notification de test du webhook envoyée.', + 'payload' => 'Test de la notification de webhook', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Les notifications de seuil seront envoyées à la route /fail dans l\'URL.', +]; diff --git a/lang/fr_FR/settings/thresholds.php b/lang/fr_FR/settings/thresholds.php new file mode 100644 index 000000000..26ee7a23b --- /dev/null +++ b/lang/fr_FR/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Seuils', + 'label' => 'Seuils', + + // Absolute thresholds + 'absolute' => 'Absolu', + 'absolute_description' => 'Les seuils absolus ne tiennent pas compte de l\'historique précédent et peuvent être déclenchés à chaque test.', + 'absolute_enabled' => 'Activer les seuils absolus', + + // Metrics section + 'metrics' => 'Métriques', + 'metrics_helper_text' => 'Mettre à zéro pour désactiver cette métrique.', + + // General threshold labels + 'thresholds' => 'Seuils', + 'threshold_enabled' => 'Seuil activé', + 'threshold_download' => 'Seuil de téléchargement', + 'threshold_upload' => 'Seuil d\'envoi', + 'threshold_ping' => 'Seuil de ping', +]; diff --git a/lang/fr_FR/tools.php b/lang/fr_FR/tools.php new file mode 100644 index 000000000..d579be2eb --- /dev/null +++ b/lang/fr_FR/tools.php @@ -0,0 +1,6 @@ + 'Serveurs Ookla', +]; diff --git a/lang/fr_FR/users.php b/lang/fr_FR/users.php new file mode 100644 index 000000000..d699452c9 --- /dev/null +++ b/lang/fr_FR/users.php @@ -0,0 +1,15 @@ + 'Utilisateurs', + 'label' => 'Utilisateurs', + + // User prompts and messages + 'user_change' => [ + 'info' => 'Rôle de l\'utilisateur mis à jour.', + 'password_updated_info' => 'Mot de passe de l\'adresse mail mis à jour.', + 'what_is_password' => 'Quel est le nouveau mot de passe ?', + 'what_is_the_email_address' => 'Quelle est l\'adresse e-mail ?', + 'what_role' => 'Quel devrait être le rôle de l\'utilisateur ?', + ], +]; diff --git a/lang/fr_FR/validation.php b/lang/fr_FR/validation.php new file mode 100644 index 000000000..292aec82d --- /dev/null +++ b/lang/fr_FR/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'adresse', + 'age' => 'âge', + 'body' => 'contenu', + 'cell' => 'cellule', + 'city' => 'ville', + 'country' => 'pays', + 'date' => 'date', + 'day' => 'jour', + 'excerpt' => 'résumé', + 'first_name' => 'prénom', + 'gender' => 'sexe', + 'marital_status' => 'état civil', + 'profession' => 'profession', + 'nationality' => 'nationalité', + 'hour' => 'heure', + 'last_name' => 'nom de famille', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'portable', + 'month' => 'mois', + 'name' => 'nom', + 'zipcode' => 'code postal', + 'company_name' => 'nom de la société', + 'neighborhood' => 'quartier', + 'number' => 'numéro', + 'password' => 'mot de passe', + 'phone' => 'téléphone', + 'second' => 'seconde', + 'sex' => 'sexe', + 'state' => 'état', + 'street' => 'rue', + 'subject' => 'sujet', + 'text' => 'teste', + 'time' => 'temps', + 'title' => 'titre', + 'username' => 'nom d\'utilisateur', + 'year' => 'année', + 'description' => 'description', + 'password_confirmation' => 'confirmation du mot de passe', + 'current_password' => 'mot de passe actuel', + 'complement' => 'complément', + 'modality' => 'modalité', + 'category' => 'catégorie', + 'blood_type' => 'groupe sanguin', + 'birth_date' => 'date de naissance', + ], +]; diff --git a/lang/hi_IN/api_tokens.php b/lang/hi_IN/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/hi_IN/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/hi_IN/auth.php b/lang/hi_IN/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/hi_IN/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/hi_IN/dashboard.php b/lang/hi_IN/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/hi_IN/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/hi_IN/enums.php b/lang/hi_IN/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/hi_IN/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/hi_IN/errors.php b/lang/hi_IN/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/hi_IN/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/hi_IN/general.php b/lang/hi_IN/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/hi_IN/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/hi_IN/passwords.php b/lang/hi_IN/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/hi_IN/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/hi_IN/results.php b/lang/hi_IN/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/hi_IN/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/hi_IN/settings.php b/lang/hi_IN/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/hi_IN/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/hi_IN/settings/data_integration.php b/lang/hi_IN/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/hi_IN/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/hi_IN/settings/notifications.php b/lang/hi_IN/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/hi_IN/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/hi_IN/settings/thresholds.php b/lang/hi_IN/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/hi_IN/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/hi_IN/tools.php b/lang/hi_IN/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/hi_IN/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/hi_IN/users.php b/lang/hi_IN/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/hi_IN/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/hi_IN/validation.php b/lang/hi_IN/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/hi_IN/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/hr_HR/api_tokens.php b/lang/hr_HR/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/hr_HR/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/hr_HR/auth.php b/lang/hr_HR/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/hr_HR/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/hr_HR/dashboard.php b/lang/hr_HR/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/hr_HR/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/hr_HR/enums.php b/lang/hr_HR/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/hr_HR/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/hr_HR/errors.php b/lang/hr_HR/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/hr_HR/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/hr_HR/general.php b/lang/hr_HR/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/hr_HR/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/hr_HR/passwords.php b/lang/hr_HR/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/hr_HR/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/hr_HR/results.php b/lang/hr_HR/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/hr_HR/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/hr_HR/settings.php b/lang/hr_HR/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/hr_HR/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/hr_HR/settings/data_integration.php b/lang/hr_HR/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/hr_HR/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/hr_HR/settings/notifications.php b/lang/hr_HR/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/hr_HR/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/hr_HR/settings/thresholds.php b/lang/hr_HR/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/hr_HR/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/hr_HR/tools.php b/lang/hr_HR/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/hr_HR/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/hr_HR/users.php b/lang/hr_HR/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/hr_HR/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/hr_HR/validation.php b/lang/hr_HR/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/hr_HR/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/hu_HU/api_tokens.php b/lang/hu_HU/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/hu_HU/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/hu_HU/auth.php b/lang/hu_HU/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/hu_HU/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/hu_HU/dashboard.php b/lang/hu_HU/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/hu_HU/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/hu_HU/enums.php b/lang/hu_HU/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/hu_HU/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/hu_HU/errors.php b/lang/hu_HU/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/hu_HU/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/hu_HU/general.php b/lang/hu_HU/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/hu_HU/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/hu_HU/passwords.php b/lang/hu_HU/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/hu_HU/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/hu_HU/results.php b/lang/hu_HU/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/hu_HU/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/hu_HU/settings.php b/lang/hu_HU/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/hu_HU/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/hu_HU/settings/data_integration.php b/lang/hu_HU/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/hu_HU/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/hu_HU/settings/notifications.php b/lang/hu_HU/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/hu_HU/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/hu_HU/settings/thresholds.php b/lang/hu_HU/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/hu_HU/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/hu_HU/tools.php b/lang/hu_HU/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/hu_HU/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/hu_HU/users.php b/lang/hu_HU/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/hu_HU/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/hu_HU/validation.php b/lang/hu_HU/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/hu_HU/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/it_IT/api_tokens.php b/lang/it_IT/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/it_IT/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/it_IT/auth.php b/lang/it_IT/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/it_IT/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/it_IT/dashboard.php b/lang/it_IT/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/it_IT/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/it_IT/enums.php b/lang/it_IT/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/it_IT/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/it_IT/errors.php b/lang/it_IT/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/it_IT/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/it_IT/general.php b/lang/it_IT/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/it_IT/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/it_IT/passwords.php b/lang/it_IT/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/it_IT/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/it_IT/results.php b/lang/it_IT/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/it_IT/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/it_IT/settings.php b/lang/it_IT/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/it_IT/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/it_IT/settings/data_integration.php b/lang/it_IT/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/it_IT/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/it_IT/settings/notifications.php b/lang/it_IT/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/it_IT/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/it_IT/settings/thresholds.php b/lang/it_IT/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/it_IT/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/it_IT/tools.php b/lang/it_IT/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/it_IT/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/it_IT/users.php b/lang/it_IT/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/it_IT/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/it_IT/validation.php b/lang/it_IT/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/it_IT/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/ja_JP/api_tokens.php b/lang/ja_JP/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/ja_JP/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/ja_JP/auth.php b/lang/ja_JP/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/ja_JP/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/ja_JP/dashboard.php b/lang/ja_JP/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/ja_JP/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/ja_JP/enums.php b/lang/ja_JP/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/ja_JP/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/ja_JP/errors.php b/lang/ja_JP/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/ja_JP/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/ja_JP/general.php b/lang/ja_JP/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/ja_JP/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/ja_JP/passwords.php b/lang/ja_JP/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/ja_JP/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/ja_JP/results.php b/lang/ja_JP/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/ja_JP/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/ja_JP/settings.php b/lang/ja_JP/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/ja_JP/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/ja_JP/settings/data_integration.php b/lang/ja_JP/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/ja_JP/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/ja_JP/settings/notifications.php b/lang/ja_JP/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/ja_JP/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/ja_JP/settings/thresholds.php b/lang/ja_JP/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/ja_JP/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/ja_JP/tools.php b/lang/ja_JP/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/ja_JP/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/ja_JP/users.php b/lang/ja_JP/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/ja_JP/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/ja_JP/validation.php b/lang/ja_JP/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/ja_JP/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/ko_KR/api_tokens.php b/lang/ko_KR/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/ko_KR/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/ko_KR/auth.php b/lang/ko_KR/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/ko_KR/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/ko_KR/dashboard.php b/lang/ko_KR/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/ko_KR/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/ko_KR/enums.php b/lang/ko_KR/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/ko_KR/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/ko_KR/errors.php b/lang/ko_KR/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/ko_KR/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/ko_KR/general.php b/lang/ko_KR/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/ko_KR/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/ko_KR/passwords.php b/lang/ko_KR/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/ko_KR/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/ko_KR/results.php b/lang/ko_KR/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/ko_KR/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/ko_KR/settings.php b/lang/ko_KR/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/ko_KR/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/ko_KR/settings/data_integration.php b/lang/ko_KR/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/ko_KR/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/ko_KR/settings/notifications.php b/lang/ko_KR/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/ko_KR/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/ko_KR/settings/thresholds.php b/lang/ko_KR/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/ko_KR/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/ko_KR/tools.php b/lang/ko_KR/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/ko_KR/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/ko_KR/users.php b/lang/ko_KR/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/ko_KR/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/ko_KR/validation.php b/lang/ko_KR/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/ko_KR/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/nl_NL/api_tokens.php b/lang/nl_NL/api_tokens.php new file mode 100644 index 000000000..fd9683948 --- /dev/null +++ b/lang/nl_NL/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'API-sleutel aanmaken', + 'your_token' => 'Jouw token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Actieve tokens', + 'expired_tokens' => 'Verlopen tokens', + 'all_tokens' => 'Alle tokens', + + // Token properties + 'expires_at' => 'Verloopt op', + 'expires_at_helper_text' => 'Laat leeg als u geen vervaldatum wilt', + 'last_used_at' => 'Laatst gebruikt op', + + // Abilities/Permissions + 'abilities' => 'Vaardigheden', + 'read_results' => 'Lees resultaten', + 'read_results_description' => 'De token zal toestemming hebben om resultaten en statistieken te lezen.', + 'run_speedtest_description' => 'Het token zal toestemming hebben om snelheidstest uit te voeren.', + 'list_servers_description' => 'De token zal toestemming hebben om servers weer te geven.', +]; diff --git a/lang/nl_NL/auth.php b/lang/nl_NL/auth.php new file mode 100644 index 000000000..7667d5e81 --- /dev/null +++ b/lang/nl_NL/auth.php @@ -0,0 +1,20 @@ + 'Deze gegevens komen niet overeen met onze administratie.', + 'password' => 'Het opgegeven wachtwoord is onjuist.', + 'throttle' => 'Te veel inlogpogingen. Probeer het over :seconds seconden opnieuw.', + +]; diff --git a/lang/nl_NL/dashboard.php b/lang/nl_NL/dashboard.php new file mode 100644 index 000000000..24ea8f7b9 --- /dev/null +++ b/lang/nl_NL/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'Geen snelheidtests gepland.', + 'next_speedtest_at' => 'Volgende snelheidstest op', + + // Widgets + 'recent_results' => 'Recente resultaten', + 'statistics' => 'Statistieken', + 'latest_download' => 'Laatste download', + 'latest_upload' => 'Laatste upload', + 'latest_ping' => 'Laatste ping', +]; diff --git a/lang/nl_NL/enums.php b/lang/nl_NL/enums.php new file mode 100644 index 000000000..f66fcdbd3 --- /dev/null +++ b/lang/nl_NL/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Controleren', + 'completed' => 'Voltooid', + 'failed' => 'Mislukt', + 'running' => 'Lopend', + 'started' => 'Gestart', + 'skipped' => 'Overgeslagen', + 'waiting' => 'Wachten', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Zakker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/nl_NL/errors.php b/lang/nl_NL/errors.php new file mode 100644 index 000000000..edf5f4304 --- /dev/null +++ b/lang/nl_NL/errors.php @@ -0,0 +1,23 @@ + 'Server fout', + 'oops_server_error' => 'Oeps, server fout!', + 'error_message' => 'Foutmelding', + 'error_fetching_servers' => 'Fout bij ophalen servers', + 'servers_refreshed_successfully' => 'Servers met succes vernieuwd', + 'copied_to_clipboard' => 'Gekopieerd naar klembord', + + // Speedtest specific errors + 'ookla_error' => 'Er is een fout opgetreden tijdens het weergeven van snelheidstest servers, controleer de logbestanden.', + 'cron_invalid' => 'Ongeldige cron expressie', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Wilt u doorgaan?', + 'fail' => 'Commando afgebroken.', + 'finished' => '✅ klaar!', + 'info_1' => 'Dit zal alle resultaten controleren en de status herstellen naar "voltooid" of "mislukt" op basis van de gegevens.', + 'info_2' => '📖 Lees de documentatie: https://docs.speedtest-tracker.dev/other/commando\'s', + ], +]; diff --git a/lang/nl_NL/general.php b/lang/nl_NL/general.php new file mode 100644 index 000000000..96b2a486a --- /dev/null +++ b/lang/nl_NL/general.php @@ -0,0 +1,106 @@ + 'Opslaan', + 'cancel' => 'Annuleren', + 'delete' => 'Verwijderen', + 'edit' => 'Bewerken', + 'create' => 'Aanmaken', + 'search' => 'Zoeken', + 'filter' => 'Filteren', + 'export' => 'Exporteren', + 'actions' => 'Acties', + 'enable' => 'Inschakelen', + 'yes' => 'Ja', + 'no' => 'Neen', + 'options' => 'Instellingen', + 'details' => 'Beschrijving', + + // Common labels + 'name' => 'Naam', + 'email' => 'E-mailadres', + 'email_address' => 'E-mail adres', + 'password' => 'Wachtwoord', + 'password_confirmation' => 'Wachtwoord bevestiging', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Bericht', + 'comment' => 'Opmerking', + 'comments' => 'Opmerkingen', + 'created_at' => 'Aangemaakt op', + 'updated_at' => 'Bijgewerkt op', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Resultaten', + 'settings' => 'Instellingen', + 'users' => 'Gebruikers', + 'documentation' => 'Documentatie', + 'links' => 'Koppelingen', + 'donate' => 'Doneren', + + // Roles + 'admin' => 'Beheerder', + 'user' => 'Gebruiker', + 'role' => 'Functie', + + // Date ranges + 'last_24h' => 'Afgelopen 24 uur', + 'last_week' => 'Vorige week', + 'last_month' => 'Vorige maand', + + // Metrics + 'average' => 'Gemiddeld', + 'high' => 'Hoog', + 'low' => 'Laag', + 'faster' => 'sneller', + 'slower' => 'langzamer', + 'healthy' => 'Gezond', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Uploaden', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Downloaden (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Downloaden (ms)', + 'upload_ms' => 'Uploaden (ms)', + 'average_ms' => 'Gemiddelde (ms)', + 'high_ms' => 'Hoog (ms)', + 'low_ms' => 'Laag (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latentie', + 'upload_latency' => 'Upload latentie', + + // Actions + 'run_speedtest' => 'Snelheidstest uitvoeren', + 'list_servers' => 'Toon servers', + 'export_current_results' => 'Huidige resultaten exporteren', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update beschikbaar!', + 'up_to_date' => 'Bijgewerkt tot', + + // Notifications + 'token_created' => 'Token aangemaakt', +]; diff --git a/lang/nl_NL/passwords.php b/lang/nl_NL/passwords.php new file mode 100644 index 000000000..8fdab288a --- /dev/null +++ b/lang/nl_NL/passwords.php @@ -0,0 +1,20 @@ + 'Uw wachtwoord is gereset!', + 'sent' => 'We hebben uw wachtwoord reset link gemaild!', + 'password' => 'Het wachtwoord en de bevestiging moeten overeenkomen en minimaal zes tekens bevatten.', + +]; diff --git a/lang/nl_NL/results.php b/lang/nl_NL/results.php new file mode 100644 index 000000000..546f857c3 --- /dev/null +++ b/lang/nl_NL/results.php @@ -0,0 +1,73 @@ + 'Resultaten', + 'result_overview' => 'Overzicht van resultaten', + + // Metrics + 'download_latency_high' => 'Download latency hoog', + 'download_latency_low' => 'Download latency laag', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latentie hoog', + 'upload_latency_low' => 'Upload latency laag', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency Jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping hoog', + 'ping_low' => 'Ping laag', + + 'packet_loss' => 'Pakket verlies', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server naam', + 'server_location' => 'Server locatie', + 'service' => 'Diensten', + 'isp' => 'Internetprovider', + 'ip_address' => 'IP adres', + 'scheduled' => 'Gepland', + + // Filters + 'only_healthy_speedtests' => 'Alleen gezonde snelheidstesten', + 'only_unhealthy_speedtests' => 'Alleen ongezonde snelheidstesten', + 'only_manual_speedtests' => 'Alleen handmatige snelheden', + 'only_scheduled_speedtests' => 'Alleen geplande snelheden', + 'created_from' => 'Aangemaakt vanaf', + 'created_until' => 'Gemaakt tot', + + // Export + 'export_all_results' => 'Alle resultaten exporteren', + 'export_all_results_description' => 'Zal elke kolom exporteren voor alle resultaten.', + 'export_completed' => 'Exporteren voltooid, :count :rows geëxporteerd.', + 'failed_export' => ':count :rows kon niet exporteren.', + 'row' => '{1} :count rij [2,*] :count rijen', + + // Actions + 'update_comments' => 'Reacties bijwerken', + 'truncate_results' => 'Afkappen resultaten', + 'truncate_results_description' => 'Weet je zeker dat je alle resultaten wilt afbreken? Deze actie is onomkeerbaar.', + 'truncate_results_success' => 'Resultatentabel afgekapt!', + 'view_on_speedtest_net' => 'Bekijk op Speedtest.net', + + // Notifications + 'speedtest_started' => 'Snelheidstest gestart', + 'speedtest_completed' => 'Snelheidstest voltooid', + 'download_threshold_breached' => 'Drempelwaarde voor downloaden doorbroken!', + 'upload_threshold_breached' => 'Upload drempelwaarde gelekt!', + 'ping_threshold_breached' => 'Ping drempelwaarde doorgedrukt!', + + // Run Speedtest Action + 'speedtest' => 'Snelheidstest', + 'public_dashboard' => 'Openbaar Dashboard', + 'select_server' => 'Selecteer Server', + 'select_server_helper' => 'Laat leeg om de snelheidstest uit te voeren zonder een server op te geven. Geblokkeerde servers zullen worden overgeslagen.', + 'manual_servers' => 'Handmatige servers', + 'closest_servers' => 'Dichtstbijzijnde servers', +]; diff --git a/lang/nl_NL/settings.php b/lang/nl_NL/settings.php new file mode 100644 index 000000000..148d2d036 --- /dev/null +++ b/lang/nl_NL/settings.php @@ -0,0 +1,13 @@ + 'Instellingen', + 'label' => 'Instellingen', + + // Common settings labels + 'triggers' => 'Trigger', + 'verify_ssl' => 'Controleer SSL', + 'username' => 'Gebruikersnaam', + 'username_placeholder' => 'Gebruikersnaam voor Basis Auth (optioneel)', + 'password_placeholder' => 'Wachtwoord voor basis authenticatie (optioneel)', +]; diff --git a/lang/nl_NL/settings/data_integration.php b/lang/nl_NL/settings/data_integration.php new file mode 100644 index 000000000..3a223f4e5 --- /dev/null +++ b/lang/nl_NL/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data integratie', + 'label' => 'Data integratie', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'Wanneer ingeschakeld, zullen alle nieuwe test resultaten ook worden verzonden naar de InfluxDB.', + 'influxdb_v2_enabled' => 'Inschakelen', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Emmer', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Controleer SSL', + + // Actions + 'test_connection' => 'Verbindingstest testen', + 'starting_bulk_data_write_to_influxdb' => 'Alle resultaten naar InfluxDB sturen', + 'sending_test_data_to_influxdb' => 'Testgegevens verzenden naar InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test mislukt', + 'influxdb_test_failed_body' => 'Bekijk de logs voor meer details.', + 'influxdb_test_success' => 'Test gegevens succesvol verzonden naar Influxdb', + 'influxdb_test_success_body' => 'Test gegevens zijn verzonden naar de InfluxDB, controleer of de gegevens zijn ontvangen.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Kan schrijven naar Influxdb niet maken.', + 'influxdb_bulk_write_failed_body' => 'Bekijk de logs voor meer details.', + 'influxdb_bulk_write_success' => 'Alle resultaten naar InfluxDB sturen afgerond.', + 'influxdb_bulk_write_success_body' => 'Gegevens zijn verzonden naar InfluxDB, controleer of de gegevens zijn ontvangen.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Emmer', +]; diff --git a/lang/nl_NL/settings/notifications.php b/lang/nl_NL/settings/notifications.php new file mode 100644 index 000000000..4afae4543 --- /dev/null +++ b/lang/nl_NL/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notificaties', + 'label' => 'Notificaties', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Meldingen die naar dit kanaal worden verzonden worden weergegeven onder de 🔔 icoon in de header.', + 'enable_database_notifications' => 'Database meldingen inschakelen', + 'database_on_speedtest_run' => 'Notificatie bij elke snelheidstest uitgevoerd', + 'database_on_threshold_failure' => 'Melding bij limiet overschrijding', + 'test_database_channel' => 'Test database notificaties', + + // Mail notifications + 'mail' => 'E-mailen', + 'enable_mail_notifications' => 'Schakel e-mailnotificaties in', + 'recipients' => 'Ontvangers', + 'mail_on_speedtest_run' => 'Notificatie bij elke snelheidstest uitgevoerd', + 'mail_on_threshold_failure' => 'Melding bij limiet overschrijding', + 'test_mail_channel' => 'Test e-mailkanaal', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Webhook meldingen inschakelen', + 'webhook_on_speedtest_run' => 'Notificatie bij elke snelheidstest uitgevoerd', + 'webhook_on_threshold_failure' => 'Melding bij limiet overschrijding', + 'test_webhook_channel' => 'Test webhook kanaal', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notificatie bij elke snelheidstest uitgevoerd', + 'notify_on_threshold_failures' => 'Melding bij drempelfouten', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'Ik zeg: ping', + 'pong' => 'Jij zegt: pong', + 'received' => 'Test database melding ontvangen!', + 'sent' => 'Test database melding verzonden.', + ], + 'mail' => [ + 'add' => 'Ontvangers toevoegen!', + 'sent' => 'Test mail melding verzonden.', + ], + 'webhook' => [ + 'add' => 'Voeg webhook URL\'s toe!', + 'sent' => 'Test webhook melding verzonden.', + 'payload' => 'Webhook melding', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Drempel meldingen worden verzonden naar de /fail route in de URL.', +]; diff --git a/lang/nl_NL/settings/thresholds.php b/lang/nl_NL/settings/thresholds.php new file mode 100644 index 000000000..b03b2974b --- /dev/null +++ b/lang/nl_NL/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Limieten', + 'label' => 'Drempels', + + // Absolute thresholds + 'absolute' => 'Absoluut', + 'absolute_description' => 'Limieten houden geen rekening met de voorgeschiedenis en kunnen bij elke test worden gebruikt.', + 'absolute_enabled' => 'Limieten inschakelen', + + // Metrics section + 'metrics' => 'Statistieken', + 'metrics_helper_text' => 'Ingesteld op nul om deze meting uit te schakelen.', + + // General threshold labels + 'thresholds' => 'Grenswaarden', + 'threshold_enabled' => 'Drempel ingeschakeld', + 'threshold_download' => 'Drempel downloaden', + 'threshold_upload' => 'Drempel uploaden', + 'threshold_ping' => 'Drempel ping', +]; diff --git a/lang/nl_NL/tools.php b/lang/nl_NL/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/nl_NL/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/nl_NL/users.php b/lang/nl_NL/users.php new file mode 100644 index 000000000..0d5c5d5df --- /dev/null +++ b/lang/nl_NL/users.php @@ -0,0 +1,15 @@ + 'Gebruikers', + 'label' => 'Gebruikers', + + // User prompts and messages + 'user_change' => [ + 'info' => 'Gebruikersrol bijgewerkt.', + 'password_updated_info' => ':email wachtwoord bijgewerkt.', + 'what_is_password' => 'Wat is het nieuwe wachtwoord?', + 'what_is_the_email_address' => 'Wat is het e-mailadres?', + 'what_role' => 'Welke rol moet de gebruiker hebben?', + ], +]; diff --git a/lang/nl_NL/validation.php b/lang/nl_NL/validation.php new file mode 100644 index 000000000..509fabd8e --- /dev/null +++ b/lang/nl_NL/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'adres', + 'age' => 'leeftijd', + 'body' => 'inhoud', + 'cell' => 'cel', + 'city' => 'stad', + 'country' => 'land', + 'date' => 'datum', + 'day' => 'dag', + 'excerpt' => 'summary', + 'first_name' => 'voornaam', + 'gender' => 'geslacht', + 'marital_status' => 'burgerlijke staat', + 'profession' => 'beroep', + 'nationality' => 'nationaliteit', + 'hour' => 'uur', + 'last_name' => 'achternaam', + 'message' => 'bericht', + 'minute' => 'minuut', + 'mobile' => 'mobiel', + 'month' => 'maand', + 'name' => 'naam', + 'zipcode' => 'postcode', + 'company_name' => 'bedrijfsnaam', + 'neighborhood' => 'wijk', + 'number' => 'nummer', + 'password' => 'wachtwoord', + 'phone' => 'telefoon', + 'second' => 'seconde', + 'sex' => 'geslacht', + 'state' => 'staat', + 'street' => 'straat', + 'subject' => 'onderwerp', + 'text' => 'tekst', + 'time' => 'tijd', + 'title' => 'titel', + 'username' => 'gebruikersnaam', + 'year' => 'jaar', + 'description' => 'beschrijving', + 'password_confirmation' => 'wachtwoord bevestiging', + 'current_password' => 'huidig wachtwoord', + 'complement' => 'complementair', + 'modality' => 'modaliteit', + 'category' => 'categorie', + 'blood_type' => 'bloed type', + 'birth_date' => 'geboortedatum', + ], +]; diff --git a/lang/pl_PL/api_tokens.php b/lang/pl_PL/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/pl_PL/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/pl_PL/auth.php b/lang/pl_PL/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/pl_PL/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/pl_PL/dashboard.php b/lang/pl_PL/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/pl_PL/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/pl_PL/enums.php b/lang/pl_PL/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/pl_PL/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/pl_PL/errors.php b/lang/pl_PL/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/pl_PL/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/pl_PL/general.php b/lang/pl_PL/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/pl_PL/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/pl_PL/passwords.php b/lang/pl_PL/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/pl_PL/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/pl_PL/results.php b/lang/pl_PL/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/pl_PL/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/pl_PL/settings.php b/lang/pl_PL/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/pl_PL/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/pl_PL/settings/data_integration.php b/lang/pl_PL/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/pl_PL/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/pl_PL/settings/notifications.php b/lang/pl_PL/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/pl_PL/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/pl_PL/settings/thresholds.php b/lang/pl_PL/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/pl_PL/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/pl_PL/tools.php b/lang/pl_PL/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/pl_PL/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/pl_PL/users.php b/lang/pl_PL/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/pl_PL/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/pl_PL/validation.php b/lang/pl_PL/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/pl_PL/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/pt_BR/api_tokens.php b/lang/pt_BR/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/pt_BR/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/pt_BR/auth.php b/lang/pt_BR/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/pt_BR/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/pt_BR/dashboard.php b/lang/pt_BR/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/pt_BR/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/pt_BR/enums.php b/lang/pt_BR/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/pt_BR/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/pt_BR/errors.php b/lang/pt_BR/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/pt_BR/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/pt_BR/general.php b/lang/pt_BR/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/pt_BR/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/pt_BR/passwords.php b/lang/pt_BR/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/pt_BR/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/pt_BR/results.php b/lang/pt_BR/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/pt_BR/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/pt_BR/settings.php b/lang/pt_BR/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/pt_BR/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/pt_BR/settings/data_integration.php b/lang/pt_BR/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/pt_BR/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/pt_BR/settings/notifications.php b/lang/pt_BR/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/pt_BR/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/pt_BR/settings/thresholds.php b/lang/pt_BR/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/pt_BR/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/pt_BR/tools.php b/lang/pt_BR/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/pt_BR/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/pt_BR/users.php b/lang/pt_BR/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/pt_BR/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/pt_BR/validation.php b/lang/pt_BR/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/pt_BR/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/pt_PT/api_tokens.php b/lang/pt_PT/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/pt_PT/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/pt_PT/auth.php b/lang/pt_PT/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/pt_PT/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/pt_PT/dashboard.php b/lang/pt_PT/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/pt_PT/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/pt_PT/enums.php b/lang/pt_PT/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/pt_PT/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/pt_PT/errors.php b/lang/pt_PT/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/pt_PT/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/pt_PT/general.php b/lang/pt_PT/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/pt_PT/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/pt_PT/passwords.php b/lang/pt_PT/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/pt_PT/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/pt_PT/results.php b/lang/pt_PT/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/pt_PT/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/pt_PT/settings.php b/lang/pt_PT/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/pt_PT/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/pt_PT/settings/data_integration.php b/lang/pt_PT/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/pt_PT/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/pt_PT/settings/notifications.php b/lang/pt_PT/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/pt_PT/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/pt_PT/settings/thresholds.php b/lang/pt_PT/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/pt_PT/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/pt_PT/tools.php b/lang/pt_PT/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/pt_PT/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/pt_PT/users.php b/lang/pt_PT/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/pt_PT/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/pt_PT/validation.php b/lang/pt_PT/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/pt_PT/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/ro_RO/api_tokens.php b/lang/ro_RO/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/ro_RO/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/ro_RO/auth.php b/lang/ro_RO/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/ro_RO/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/ro_RO/dashboard.php b/lang/ro_RO/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/ro_RO/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/ro_RO/enums.php b/lang/ro_RO/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/ro_RO/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/ro_RO/errors.php b/lang/ro_RO/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/ro_RO/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/ro_RO/general.php b/lang/ro_RO/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/ro_RO/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/ro_RO/passwords.php b/lang/ro_RO/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/ro_RO/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/ro_RO/results.php b/lang/ro_RO/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/ro_RO/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/ro_RO/settings.php b/lang/ro_RO/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/ro_RO/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/ro_RO/settings/data_integration.php b/lang/ro_RO/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/ro_RO/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/ro_RO/settings/notifications.php b/lang/ro_RO/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/ro_RO/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/ro_RO/settings/thresholds.php b/lang/ro_RO/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/ro_RO/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/ro_RO/tools.php b/lang/ro_RO/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/ro_RO/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/ro_RO/users.php b/lang/ro_RO/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/ro_RO/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/ro_RO/validation.php b/lang/ro_RO/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/ro_RO/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/ru_RU/api_tokens.php b/lang/ru_RU/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/ru_RU/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/ru_RU/auth.php b/lang/ru_RU/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/ru_RU/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/ru_RU/dashboard.php b/lang/ru_RU/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/ru_RU/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/ru_RU/enums.php b/lang/ru_RU/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/ru_RU/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/ru_RU/errors.php b/lang/ru_RU/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/ru_RU/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/ru_RU/general.php b/lang/ru_RU/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/ru_RU/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/ru_RU/passwords.php b/lang/ru_RU/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/ru_RU/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/ru_RU/results.php b/lang/ru_RU/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/ru_RU/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/ru_RU/settings.php b/lang/ru_RU/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/ru_RU/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/ru_RU/settings/data_integration.php b/lang/ru_RU/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/ru_RU/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/ru_RU/settings/notifications.php b/lang/ru_RU/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/ru_RU/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/ru_RU/settings/thresholds.php b/lang/ru_RU/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/ru_RU/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/ru_RU/tools.php b/lang/ru_RU/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/ru_RU/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/ru_RU/users.php b/lang/ru_RU/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/ru_RU/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/ru_RU/validation.php b/lang/ru_RU/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/ru_RU/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/ru_UA/api_tokens.php b/lang/ru_UA/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/ru_UA/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/ru_UA/auth.php b/lang/ru_UA/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/ru_UA/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/ru_UA/dashboard.php b/lang/ru_UA/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/ru_UA/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/ru_UA/enums.php b/lang/ru_UA/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/ru_UA/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/ru_UA/errors.php b/lang/ru_UA/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/ru_UA/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/ru_UA/general.php b/lang/ru_UA/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/ru_UA/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/ru_UA/passwords.php b/lang/ru_UA/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/ru_UA/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/ru_UA/results.php b/lang/ru_UA/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/ru_UA/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/ru_UA/settings.php b/lang/ru_UA/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/ru_UA/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/ru_UA/settings/data_integration.php b/lang/ru_UA/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/ru_UA/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/ru_UA/settings/notifications.php b/lang/ru_UA/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/ru_UA/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/ru_UA/settings/thresholds.php b/lang/ru_UA/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/ru_UA/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/ru_UA/tools.php b/lang/ru_UA/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/ru_UA/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/ru_UA/users.php b/lang/ru_UA/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/ru_UA/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/ru_UA/validation.php b/lang/ru_UA/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/ru_UA/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/sv_SE/api_tokens.php b/lang/sv_SE/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/sv_SE/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/sv_SE/auth.php b/lang/sv_SE/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/sv_SE/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/sv_SE/dashboard.php b/lang/sv_SE/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/sv_SE/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/sv_SE/enums.php b/lang/sv_SE/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/sv_SE/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/sv_SE/errors.php b/lang/sv_SE/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/sv_SE/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/sv_SE/general.php b/lang/sv_SE/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/sv_SE/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/sv_SE/passwords.php b/lang/sv_SE/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/sv_SE/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/sv_SE/results.php b/lang/sv_SE/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/sv_SE/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/sv_SE/settings.php b/lang/sv_SE/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/sv_SE/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/sv_SE/settings/data_integration.php b/lang/sv_SE/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/sv_SE/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/sv_SE/settings/notifications.php b/lang/sv_SE/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/sv_SE/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/sv_SE/settings/thresholds.php b/lang/sv_SE/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/sv_SE/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/sv_SE/tools.php b/lang/sv_SE/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/sv_SE/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/sv_SE/users.php b/lang/sv_SE/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/sv_SE/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/sv_SE/validation.php b/lang/sv_SE/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/sv_SE/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/tr_TR/api_tokens.php b/lang/tr_TR/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/tr_TR/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/tr_TR/auth.php b/lang/tr_TR/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/tr_TR/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/tr_TR/dashboard.php b/lang/tr_TR/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/tr_TR/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/tr_TR/enums.php b/lang/tr_TR/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/tr_TR/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/tr_TR/errors.php b/lang/tr_TR/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/tr_TR/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/tr_TR/general.php b/lang/tr_TR/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/tr_TR/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/tr_TR/passwords.php b/lang/tr_TR/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/tr_TR/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/tr_TR/results.php b/lang/tr_TR/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/tr_TR/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/tr_TR/settings.php b/lang/tr_TR/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/tr_TR/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/tr_TR/settings/data_integration.php b/lang/tr_TR/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/tr_TR/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/tr_TR/settings/notifications.php b/lang/tr_TR/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/tr_TR/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/tr_TR/settings/thresholds.php b/lang/tr_TR/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/tr_TR/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/tr_TR/tools.php b/lang/tr_TR/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/tr_TR/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/tr_TR/users.php b/lang/tr_TR/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/tr_TR/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/tr_TR/validation.php b/lang/tr_TR/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/tr_TR/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +]; diff --git a/lang/zh_TW/api_tokens.php b/lang/zh_TW/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/zh_TW/api_tokens.php @@ -0,0 +1,30 @@ + 'API Tokens', + 'label' => 'API Tokens', + + // Token management + 'api_token' => 'API token', + 'api_tokens' => 'API tokens', + 'create_api_token' => 'Create API token', + 'your_token' => 'Your token', + 'token_status' => 'Token status', + + // Token lists + 'active_tokens' => 'Active tokens', + 'expired_tokens' => 'Expired tokens', + 'all_tokens' => 'All tokens', + + // Token properties + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty if you don\'t want an expiration date', + 'last_used_at' => 'Last used at', + + // Abilities/Permissions + 'abilities' => 'Abilities', + 'read_results' => 'Read results', + 'read_results_description' => 'The token will have permission to read results and statistics.', + 'run_speedtest_description' => 'The token will have permission to run speedtest.', + 'list_servers_description' => 'The token will have permission to list servers.', +]; diff --git a/lang/zh_TW/auth.php b/lang/zh_TW/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/zh_TW/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/zh_TW/dashboard.php b/lang/zh_TW/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/zh_TW/dashboard.php @@ -0,0 +1,14 @@ + 'Dashboard', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'next_speedtest_at' => 'Next speedtest at', + + // Widgets + 'recent_results' => 'Recent Results', + 'statistics' => 'Statistics', + 'latest_download' => 'Latest download', + 'latest_upload' => 'Latest upload', + 'latest_ping' => 'Latest ping', +]; diff --git a/lang/zh_TW/enums.php b/lang/zh_TW/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/zh_TW/enums.php @@ -0,0 +1,21 @@ + [ + 'benchmarking' => 'Benchmarking', + 'checking' => 'Checking', + 'completed' => 'Completed', + 'failed' => 'Failed', + 'running' => 'Running', + 'started' => 'Started', + 'skipped' => 'Skipped', + 'waiting' => 'Waiting', + ], + + // Service enum values + 'service' => [ + 'faker' => 'Faker', + 'ookla' => 'Ookla', + ], +]; diff --git a/lang/zh_TW/errors.php b/lang/zh_TW/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/zh_TW/errors.php @@ -0,0 +1,23 @@ + 'Server Error', + 'oops_server_error' => 'Oops, server error!', + 'error_message' => 'Error message', + 'error_fetching_servers' => 'Error fetching servers', + 'servers_refreshed_successfully' => 'Servers refreshed successfully', + 'copied_to_clipboard' => 'Copied to clipboard', + + // Speedtest specific errors + 'ookla_error' => 'An error occurred when listing speedtest servers, check the logs.', + 'cron_invalid' => 'Invalid cron expression', + + // Status fix command + 'status_fix' => [ + 'confirm' => 'Do you wish to continue?', + 'fail' => 'Command aborted.', + 'finished' => '✅ done!', + 'info_1' => 'This will check all results and fix the status to "completed" or "failed" based on the data.', + 'info_2' => '📖 Read the documentation: https://docs.speedtest-tracker.dev/other/commands', + ], +]; diff --git a/lang/zh_TW/general.php b/lang/zh_TW/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/zh_TW/general.php @@ -0,0 +1,106 @@ + 'Save', + 'cancel' => 'Cancel', + 'delete' => 'Delete', + 'edit' => 'Edit', + 'create' => 'Create', + 'search' => 'Search', + 'filter' => 'Filter', + 'export' => 'Export', + 'actions' => 'Actions', + 'enable' => 'Enable', + 'yes' => 'Yes', + 'no' => 'No', + 'options' => 'Options', + 'details' => 'Details', + + // Common labels + 'name' => 'Name', + 'email' => 'Email', + 'email_address' => 'Email address', + 'password' => 'Password', + 'password_confirmation' => 'Password confirmation', + 'id' => 'ID', + 'status' => 'Status', + 'message' => 'Message', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'created_at' => 'Created at', + 'updated_at' => 'Updated at', + 'url' => 'URL', + + // Navigation + 'dashboard' => 'Dashboard', + 'results' => 'Results', + 'settings' => 'Settings', + 'users' => 'Users', + 'documentation' => 'Documentation', + 'links' => 'Links', + 'donate' => 'Donate', + + // Roles + 'admin' => 'Admin', + 'user' => 'User', + 'role' => 'Role', + + // Date ranges + 'last_24h' => 'Last 24 hours', + 'last_week' => 'Last week', + 'last_month' => 'Last month', + + // Metrics + 'average' => 'Average', + 'high' => 'High', + 'low' => 'Low', + 'faster' => 'faster', + 'slower' => 'slower', + 'healthy' => 'Healthy', + + // Units + 'ms' => 'ms', + 'mbps' => 'Mbps', + + // Speed test metrics + 'download' => 'Download', + 'upload' => 'Upload', + 'ping' => 'Ping', + 'jitter' => 'Jitter', + + // Metric labels with units + 'download_mbps' => 'Download (Mbps)', + 'upload_mbps' => 'Upload (Mbps)', + 'ping_ms' => 'Ping (ms)', + 'download_ms' => 'Download (ms)', + 'upload_ms' => 'Upload (ms)', + 'average_ms' => 'Average (ms)', + 'high_ms' => 'High (ms)', + 'low_ms' => 'Low (ms)', + 'ping_ms_label' => 'Ping (ms)', + + // Latency + 'download_latency' => 'Download latency', + 'upload_latency' => 'Upload latency', + + // Actions + 'run_speedtest' => 'Run speedtest', + 'list_servers' => 'List servers', + 'export_current_results' => 'Export current results', + 'test' => 'Test', + + // Common + 'token' => 'Token', + + // Application + 'speedtest_tracker' => 'Speedtest Tracker', + 'platform' => 'Platform', + + // Update status + 'update_available' => 'Update available!', + 'up_to_date' => 'Up to date', + + // Notifications + 'token_created' => 'Token Created', +]; diff --git a/lang/zh_TW/passwords.php b/lang/zh_TW/passwords.php new file mode 100644 index 000000000..6c82e5827 --- /dev/null +++ b/lang/zh_TW/passwords.php @@ -0,0 +1,20 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'password' => 'The password and confirmation must match and contain at least six characters.', + +]; diff --git a/lang/zh_TW/results.php b/lang/zh_TW/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/zh_TW/results.php @@ -0,0 +1,73 @@ + 'Results', + 'result_overview' => 'Result overview', + + // Metrics + 'download_latency_high' => 'Download latency high', + 'download_latency_low' => 'Download latency low', + 'download_latency_iqm' => 'Download latency IQM', + 'download_latency_jitter' => 'Download latency jitter', + + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_low' => 'Upload latency low', + 'upload_latency_iqm' => 'Upload latency IQM', + 'upload_latency_jitter' => 'Upload latency jitter', + + 'ping_details' => 'Ping details', + 'ping_jitter' => 'Ping jitter', + 'ping_high' => 'Ping high', + 'ping_low' => 'Ping low', + + 'packet_loss' => 'Packet loss', + 'iqm' => 'IQM', + + // Server & metadata + 'server_&_metadata' => 'Server & Metadata', + 'server_id' => 'Server ID', + 'server_host' => 'Server host', + 'server_name' => 'Server name', + 'server_location' => 'Server location', + 'service' => 'Service', + 'isp' => 'ISP', + 'ip_address' => 'IP address', + 'scheduled' => 'Scheduled', + + // Filters + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + + // Export + 'export_all_results' => 'Export all results', + 'export_all_results_description' => 'Will export every column for all results.', + 'export_completed' => 'Export completed, :count :rows exported.', + 'failed_export' => ':count :rows failed to export.', + 'row' => '{1} :count row|[2,*] :count rows', + + // Actions + 'update_comments' => 'Update comments', + 'truncate_results' => 'Truncate results', + 'truncate_results_description' => 'Are you sure you want to truncate all results? This action is irreversible.', + 'truncate_results_success' => 'Results table truncated!', + 'view_on_speedtest_net' => 'View on Speedtest.net', + + // Notifications + 'speedtest_started' => 'Speedtest started', + 'speedtest_completed' => 'Speedtest completed', + 'download_threshold_breached' => 'Download threshold breached!', + 'upload_threshold_breached' => 'Upload threshold breached!', + 'ping_threshold_breached' => 'Ping threshold breached!', + + // Run Speedtest Action + 'speedtest' => 'Speedtest', + 'public_dashboard' => 'Public Dashboard', + 'select_server' => 'Select Server', + 'select_server_helper' => 'Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.', + 'manual_servers' => 'Manual servers', + 'closest_servers' => 'Closest servers', +]; diff --git a/lang/zh_TW/settings.php b/lang/zh_TW/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/zh_TW/settings.php @@ -0,0 +1,13 @@ + 'Settings', + 'label' => 'Settings', + + // Common settings labels + 'triggers' => 'Triggers', + 'verify_ssl' => 'Verify SSL', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth (optional)', + 'password_placeholder' => 'Password for Basic Auth (optional)', +]; diff --git a/lang/zh_TW/settings/data_integration.php b/lang/zh_TW/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/zh_TW/settings/data_integration.php @@ -0,0 +1,39 @@ + 'Data Integration', + 'label' => 'Data Integration', + + // InfluxDB v2 + 'influxdb_v2' => 'InfluxDB v2', + 'influxdb_v2_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'influxdb_v2_enabled' => 'Enable', + 'influxdb_v2_url' => 'URL', + 'influxdb_v2_url_placeholder' => 'http://your-influxdb-instance', + 'influxdb_v2_org' => 'Org', + 'influxdb_v2_bucket' => 'Bucket', + 'influxdb_v2_bucket_placeholder' => 'speedtest-tracker', + 'influxdb_v2_token' => 'Token', + 'influxdb_v2_verify_ssl' => 'Verify SSL', + + // Actions + 'test_connection' => 'Test connection', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to InfluxDB', + 'sending_test_data_to_influxdb' => 'Sending test data to InfluxDB', + + // Test connection notifications + 'influxdb_test_failed' => 'Influxdb test failed', + 'influxdb_test_failed_body' => 'Check the logs for more details.', + 'influxdb_test_success' => 'Successfully sent test data to Influxdb', + 'influxdb_test_success_body' => 'Test data has been sent to InfluxDB, check if the data was received.', + + // Bulk write notifications + 'influxdb_bulk_write_failed' => 'Failed to build write to Influxdb.', + 'influxdb_bulk_write_failed_body' => 'Check the logs for more details.', + 'influxdb_bulk_write_success' => 'Finished bulk data load to Influxdb.', + 'influxdb_bulk_write_success_body' => 'Data has been sent to InfluxDB, check if the data was received.', + + // Common labels + 'org' => 'Org', + 'bucket' => 'Bucket', +]; diff --git a/lang/zh_TW/settings/notifications.php b/lang/zh_TW/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/zh_TW/settings/notifications.php @@ -0,0 +1,56 @@ + 'Notifications', + 'label' => 'Notifications', + + // Database notifications + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'enable_database_notifications' => 'Enable database notifications', + 'database_on_speedtest_run' => 'Notify on every speedtest run', + 'database_on_threshold_failure' => 'Notify on threshold failures', + 'test_database_channel' => 'Test database channel', + + // Mail notifications + 'mail' => 'Mail', + 'enable_mail_notifications' => 'Enable mail notifications', + 'recipients' => 'Recipients', + 'mail_on_speedtest_run' => 'Notify on every speedtest run', + 'mail_on_threshold_failure' => 'Notify on threshold failures', + 'test_mail_channel' => 'Test mail channel', + + // Webhook + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'webhook_on_speedtest_run' => 'Notify on every speedtest run', + 'webhook_on_threshold_failure' => 'Notify on threshold failures', + 'test_webhook_channel' => 'Test webhook channel', + + // Common notification messages + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + + // Test notification messages + 'test_notifications' => [ + 'database' => [ + 'ping' => 'I say: ping', + 'pong' => 'You say: pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'mail' => [ + 'add' => 'Add email recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'webhook' => [ + 'add' => 'Add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Testing webhook notification', + ], + ], + + // Helper text + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail route in the URL.', +]; diff --git a/lang/zh_TW/settings/thresholds.php b/lang/zh_TW/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/zh_TW/settings/thresholds.php @@ -0,0 +1,22 @@ + 'Thresholds', + 'label' => 'Thresholds', + + // Absolute thresholds + 'absolute' => 'Absolute', + 'absolute_description' => 'Absolute thresholds do not take into account previous history and could be triggered on each test.', + 'absolute_enabled' => 'Enable absolute thresholds', + + // Metrics section + 'metrics' => 'Metrics', + 'metrics_helper_text' => 'Set to zero to disable this metric.', + + // General threshold labels + 'thresholds' => 'Thresholds', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', +]; diff --git a/lang/zh_TW/tools.php b/lang/zh_TW/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/zh_TW/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/zh_TW/users.php b/lang/zh_TW/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/zh_TW/users.php @@ -0,0 +1,15 @@ + 'Users', + 'label' => 'Users', + + // User prompts and messages + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => ':email password updated.', + 'what_is_password' => 'What is the new password?', + 'what_is_the_email_address' => 'What is the email address?', + 'what_role' => 'What role should the user have?', + ], +]; diff --git a/lang/zh_TW/validation.php b/lang/zh_TW/validation.php new file mode 100644 index 000000000..1db044439 --- /dev/null +++ b/lang/zh_TW/validation.php @@ -0,0 +1,91 @@ + [ + 'attribute-name' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [ + 'address' => 'address', + 'age' => 'age', + 'body' => 'content', + 'cell' => 'cell', + 'city' => 'city', + 'country' => 'country', + 'date' => 'date', + 'day' => 'day', + 'excerpt' => 'summary', + 'first_name' => 'first name', + 'gender' => 'gender', + 'marital_status' => 'marital status', + 'profession' => 'profession', + 'nationality' => 'nationality', + 'hour' => 'hour', + 'last_name' => 'last name', + 'message' => 'message', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'zipcode' => 'zipcode', + 'company_name' => 'company name', + 'neighborhood' => 'neighborhood', + 'number' => 'number', + 'password' => 'password', + 'phone' => 'phone', + 'second' => 'second', + 'sex' => 'sex', + 'state' => 'state', + 'street' => 'street', + 'subject' => 'subject', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'username' => 'username', + 'year' => 'year', + 'description' => 'description', + 'password_confirmation' => 'password confirmation', + 'current_password' => 'current password', + 'complement' => 'complement', + 'modality' => 'modality', + 'category' => 'category', + 'blood_type' => 'blood type', + 'birth_date' => 'birth date', + ], +];