From 116f83a367d6ea43ed3903be4fcc0f99886636e4 Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Fri, 14 Nov 2025 14:43:51 +0100 Subject: [PATCH 1/8] Crowdin support for translations (#2410) Co-authored-by: Alex Justesen --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + .github/ISSUE_TEMPLATE/feature_request.yml | 1 + README.md | 9 + .../SendDatabaseTestNotification.php | 16 +- .../SendMailTestNotification.php | 4 +- .../SendWebhookTestNotification.php | 6 +- app/Enums/ResultService.php | 6 +- app/Enums/ResultStatus.php | 12 +- app/Enums/UserRole.php | 6 +- app/Filament/Pages/Dashboard.php | 14 +- .../Pages/Settings/DataIntegration.php | 38 ++- app/Filament/Pages/Settings/Notification.php | 52 ++-- app/Filament/Pages/Settings/Thresholds.php | 36 ++- app/Filament/Pages/Tools/ListOoklaServers.php | 6 +- .../Resources/ApiTokens/ApiTokenResource.php | 10 +- .../ApiTokens/Pages/ListApiTokens.php | 6 +- .../ApiTokens/Schemas/ApiTokenForm.php | 20 +- .../ApiTokens/Tables/ApiTokenTable.php | 27 +- .../Resources/Results/ResultResource.php | 15 + .../Resources/Results/Schemas/ResultForm.php | 62 ++-- .../Resources/Results/Tables/ResultTable.php | 71 +++-- .../Resources/Users/Schemas/UserForm.php | 12 +- .../Resources/Users/Tables/UserTable.php | 8 +- app/Filament/Resources/Users/UserResource.php | 10 + .../Widgets/RecentDownloadChartWidget.php | 11 +- .../RecentDownloadLatencyChartWidget.php | 13 +- .../Widgets/RecentJitterChartWidget.php | 13 +- .../Widgets/RecentPingChartWidget.php | 11 +- .../Widgets/RecentUploadChartWidget.php | 11 +- .../RecentUploadLatencyChartWidget.php | 13 +- app/Filament/Widgets/StatsOverviewWidget.php | 24 +- app/Jobs/Influxdb/v2/BulkWriteResults.php | 8 +- app/Jobs/Influxdb/v2/TestConnectionJob.php | 8 +- app/Jobs/TruncateResults.php | 2 +- .../SendSpeedtestCompletedNotification.php | 2 +- .../SendSpeedtestThresholdNotification.php | 6 +- app/Livewire/Topbar/RunSpeedtestAction.php | 18 +- app/Providers/Filament/AdminPanelProvider.php | 16 +- app/Rules/Cron.php | 2 +- crowdin.yml | 11 + lang/de_DE/auth.php | 20 -- lang/de_DE/pagination.php | 19 -- lang/de_DE/passwords.php | 23 -- lang/de_DE/validation.php | 230 -------------- lang/en/api_tokens.php | 30 ++ lang/{zh_TW => en}/auth.php | 6 +- lang/en/dashboard.php | 14 + lang/en/enums.php | 21 ++ lang/en/errors.php | 23 ++ lang/en/general.php | 106 +++++++ lang/en/results.php | 73 +++++ lang/en/settings.php | 13 + lang/en/settings/data_integration.php | 39 +++ lang/en/settings/notifications.php | 56 ++++ lang/en/settings/thresholds.php | 22 ++ lang/en/tools.php | 6 + lang/en/users.php | 15 + lang/es_ES/auth.php | 20 -- lang/es_ES/pagination.php | 19 -- lang/es_ES/passwords.php | 20 -- lang/es_ES/validation.php | 91 ------ lang/fr_FR/auth.php | 20 -- lang/fr_FR/pagination.php | 19 -- lang/fr_FR/passwords.php | 23 -- lang/fr_FR/validation.php | 230 -------------- lang/hr_HR/auth.php | 20 -- lang/hr_HR/pagination.php | 19 -- lang/hr_HR/passwords.php | 22 -- lang/hr_HR/translations.php | 290 ------------------ lang/hr_HR/validation.php | 230 -------------- lang/hu_HU/auth.php | 20 -- lang/hu_HU/pagination.php | 19 -- lang/hu_HU/passwords.php | 22 -- lang/hu_HU/translations.php | 289 ----------------- lang/hu_HU/validation.php | 230 -------------- lang/it_IT/auth.php | 20 -- lang/it_IT/pagination.php | 19 -- lang/it_IT/passwords.php | 23 -- lang/it_IT/validation.php | 230 -------------- lang/nl_NL/auth.php | 20 -- lang/nl_NL/pagination.php | 19 -- lang/nl_NL/passwords.php | 23 -- lang/nl_NL/validation.php | 230 -------------- lang/pt_BR/auth.php | 20 -- lang/pt_BR/pagination.php | 19 -- lang/pt_BR/passwords.php | 23 -- lang/pt_BR/validation.php | 230 -------------- lang/tr_TR/auth.php | 20 -- lang/tr_TR/pagination.php | 19 -- lang/tr_TR/passwords.php | 23 -- lang/tr_TR/validation.php | 230 -------------- lang/zh_TW/pagination.php | 19 -- lang/zh_TW/passwords.php | 20 -- lang/zh_TW/validation.php | 91 ------ resources/views/errors/500.blade.php | 4 +- 95 files changed, 814 insertions(+), 3424 deletions(-) create mode 100644 crowdin.yml delete mode 100644 lang/de_DE/auth.php delete mode 100644 lang/de_DE/pagination.php delete mode 100644 lang/de_DE/passwords.php delete mode 100644 lang/de_DE/validation.php create mode 100644 lang/en/api_tokens.php rename lang/{zh_TW => en}/auth.php (69%) create mode 100644 lang/en/dashboard.php create mode 100644 lang/en/enums.php create mode 100644 lang/en/errors.php create mode 100644 lang/en/general.php create mode 100644 lang/en/results.php create mode 100644 lang/en/settings.php create mode 100644 lang/en/settings/data_integration.php create mode 100644 lang/en/settings/notifications.php create mode 100644 lang/en/settings/thresholds.php create mode 100644 lang/en/tools.php create mode 100644 lang/en/users.php delete mode 100644 lang/es_ES/auth.php delete mode 100644 lang/es_ES/pagination.php delete mode 100644 lang/es_ES/passwords.php delete mode 100644 lang/es_ES/validation.php delete mode 100644 lang/fr_FR/auth.php delete mode 100644 lang/fr_FR/pagination.php delete mode 100644 lang/fr_FR/passwords.php delete mode 100644 lang/fr_FR/validation.php delete mode 100644 lang/hr_HR/auth.php delete mode 100644 lang/hr_HR/pagination.php delete mode 100644 lang/hr_HR/passwords.php delete mode 100644 lang/hr_HR/translations.php delete mode 100644 lang/hr_HR/validation.php delete mode 100644 lang/hu_HU/auth.php delete mode 100644 lang/hu_HU/pagination.php delete mode 100644 lang/hu_HU/passwords.php delete mode 100644 lang/hu_HU/translations.php delete mode 100644 lang/hu_HU/validation.php delete mode 100644 lang/it_IT/auth.php delete mode 100644 lang/it_IT/pagination.php delete mode 100644 lang/it_IT/passwords.php delete mode 100644 lang/it_IT/validation.php delete mode 100644 lang/nl_NL/auth.php delete mode 100644 lang/nl_NL/pagination.php delete mode 100644 lang/nl_NL/passwords.php delete mode 100644 lang/nl_NL/validation.php delete mode 100644 lang/pt_BR/auth.php delete mode 100644 lang/pt_BR/pagination.php delete mode 100644 lang/pt_BR/passwords.php delete mode 100644 lang/pt_BR/validation.php delete mode 100644 lang/tr_TR/auth.php delete mode 100644 lang/tr_TR/pagination.php delete mode 100644 lang/tr_TR/passwords.php delete mode 100644 lang/tr_TR/validation.php delete mode 100644 lang/zh_TW/pagination.php delete mode 100644 lang/zh_TW/passwords.php delete mode 100644 lang/zh_TW/validation.php diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 6070ad3fd..cf8b5abcb 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -11,6 +11,7 @@ body: Please note: - For **feature requests or changes**, use the [feature request form](https://github.com/alexjustesen/speedtest-tracker/issues/new?template=feature_request.yml). - For **general questions**, **setup or configuration help**, or if you’re not sure this is a bug, please use **[GitHub Discussions](https://github.com/alexjustesen/speedtest-tracker/discussions)** instead. + - Any isseus with translations should be reported/solved within the [crowdin project](https://crowdin.com/project/speedtest-tracker). - type: checkboxes attributes: label: Pre-work diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 439014ec8..aa13ebc08 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -7,6 +7,7 @@ body: attributes: value: | You should only use this form to request a change or new feature, to report a bug or issue use the [bug report form](https://github.com/alexjustesen/speedtest-tracker). + Any reqeusts for new translations should be reqeusted within the [crowdin project](https://crowdin.com/project/speedtest-tracker). - type: checkboxes attributes: label: Pre-work diff --git a/README.md b/README.md index af39aca34..b5c8275f7 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Speedtest Tracker is a self-hosted application that monitors the performance and - **Detailed Metrics**: Capture download and upload speeds, ping, packet loss and more. - **Historical Data**: View historical data and trends to identify patterns and issues with your internet connection. - **Notifications**: Receive notifications when your internet performance drops below a certain threshold. +- **Multi-Language Support**: Available in multiple languages with community translations via [Crowdin](https://crowdin.com/project/speedtest-tracker). ## Getting Started @@ -20,4 +21,12 @@ Speedtest Tracker is containerized so you can run it anywhere you run your conta - [Notifications](https://docs.speedtest-tracker.dev/settings/notifications) channels alert you when issues happen. - [Frequently Asked Questions](https://docs.speedtest-tracker.dev/help/faqs) are common questions that can help you resolve issues. +## Translations + +Speedtest Tracker supports multiple languages thanks to our community translators! + +**Request a new language**: Visit our [Crowdin project](https://crowdin.com/project/speedtest-tracker) and request a new language directly in crowdin. + +**Help translate**: Join our [Crowdin project](https://crowdin.com/project/speedtest-tracker) to contribute translations in your language. All translation levels are welcome! + [![Star History Chart](https://api.star-history.com/svg?repos=alexjustesen/speedtest-tracker&type=Date)](https://star-history.com/#alexjustesen/speedtest-tracker&Date) diff --git a/app/Actions/Notifications/SendDatabaseTestNotification.php b/app/Actions/Notifications/SendDatabaseTestNotification.php index 6611ad491..86e8e7374 100644 --- a/app/Actions/Notifications/SendDatabaseTestNotification.php +++ b/app/Actions/Notifications/SendDatabaseTestNotification.php @@ -12,17 +12,15 @@ class SendDatabaseTestNotification public function handle(User $user) { - $user->notify( - Notification::make() - ->title('Test database notification received!') - ->body('You say pong') - ->success() - ->toDatabase(), - ); + Notification::make() + ->title(__('settings/notifications.test_notifications.database.received')) + ->body(__('settings/notifications.test_notifications.database.pong')) + ->success() + ->sendToDatabase($user); Notification::make() - ->title('Test database notification sent.') - ->body('I say ping') + ->title(__('settings/notifications.test_notifications.database.sent')) + ->body(__('settings/notifications.test_notifications.database.ping')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendMailTestNotification.php b/app/Actions/Notifications/SendMailTestNotification.php index df293ef6b..6bcad272d 100644 --- a/app/Actions/Notifications/SendMailTestNotification.php +++ b/app/Actions/Notifications/SendMailTestNotification.php @@ -15,7 +15,7 @@ public function handle(array $recipients) { if (! count($recipients)) { Notification::make() - ->title('You need to add mail recipients!') + ->title(__('settings/notifications.test_notifications.mail.add')) ->warning() ->send(); @@ -28,7 +28,7 @@ public function handle(array $recipients) } Notification::make() - ->title('Test mail notification sent.') + ->title(__('settings/notifications.test_notifications.mail.sent')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendWebhookTestNotification.php b/app/Actions/Notifications/SendWebhookTestNotification.php index 834a1d0cc..9ae6d922d 100644 --- a/app/Actions/Notifications/SendWebhookTestNotification.php +++ b/app/Actions/Notifications/SendWebhookTestNotification.php @@ -17,7 +17,7 @@ public function handle(array $webhooks) { if (! count($webhooks)) { Notification::make() - ->title('You need to add webhook URLs!') + ->title(__('settings/notifications.test_notifications.webhook.add')) ->warning() ->send(); @@ -32,7 +32,7 @@ public function handle(array $webhooks) ->url($webhook['url']) ->payload([ 'result_id' => Str::uuid(), - 'site_name' => 'Webhook Notification Testing', + 'site_name' => __('settings/notifications.test_notifications.webhook.payload'), 'isp' => $fakeResult->data['isp'], 'ping' => $fakeResult->ping, 'download' => $fakeResult->download, @@ -46,7 +46,7 @@ public function handle(array $webhooks) } Notification::make() - ->title('Test webhook notification sent.') + ->title(__('settings/notifications.test_notifications.webhook.sent')) ->success() ->send(); } diff --git a/app/Enums/ResultService.php b/app/Enums/ResultService.php index b324633a3..bfc7eec55 100644 --- a/app/Enums/ResultService.php +++ b/app/Enums/ResultService.php @@ -3,7 +3,6 @@ namespace App\Enums; use Filament\Support\Contracts\HasLabel; -use Illuminate\Support\Str; enum ResultService: string implements HasLabel { @@ -12,6 +11,9 @@ enum ResultService: string implements HasLabel public function getLabel(): ?string { - return Str::title($this->name); + return match ($this) { + self::Faker => __('enums.service.faker'), + self::Ookla => __('enums.service.ookla'), + }; } } diff --git a/app/Enums/ResultStatus.php b/app/Enums/ResultStatus.php index 8b554f426..9ac28e370 100644 --- a/app/Enums/ResultStatus.php +++ b/app/Enums/ResultStatus.php @@ -4,7 +4,6 @@ use Filament\Support\Contracts\HasColor; use Filament\Support\Contracts\HasLabel; -use Illuminate\Support\Str; enum ResultStatus: string implements HasColor, HasLabel { @@ -33,6 +32,15 @@ public function getColor(): ?string public function getLabel(): ?string { - return Str::title($this->name); + return match ($this) { + self::Benchmarking => __('enums.status.benchmarking'), + self::Checking => __('enums.status.checking'), + self::Completed => __('enums.status.completed'), + self::Failed => __('enums.status.failed'), + self::Running => __('enums.status.running'), + self::Started => __('enums.status.started'), + self::Skipped => __('enums.status.skipped'), + self::Waiting => __('enums.status.waiting'), + }; } } diff --git a/app/Enums/UserRole.php b/app/Enums/UserRole.php index 69884c8e8..62e7d57e1 100644 --- a/app/Enums/UserRole.php +++ b/app/Enums/UserRole.php @@ -4,7 +4,6 @@ use Filament\Support\Contracts\HasColor; use Filament\Support\Contracts\HasLabel; -use Illuminate\Support\Str; enum UserRole: string implements HasColor, HasLabel { @@ -21,6 +20,9 @@ public function getColor(): ?string public function getLabel(): ?string { - return Str::title($this->name); + return match ($this) { + self::Admin => __('general.admin'), + self::User => __('general.user'), + }; } } diff --git a/app/Filament/Pages/Dashboard.php b/app/Filament/Pages/Dashboard.php index 2a0bdd63a..6db680a00 100644 --- a/app/Filament/Pages/Dashboard.php +++ b/app/Filament/Pages/Dashboard.php @@ -19,19 +19,29 @@ class Dashboard extends BasePage protected string $view = 'filament.pages.dashboard'; + public function getTitle(): string + { + return __('dashboard.title'); + } + + public static function getNavigationLabel(): string + { + return __('dashboard.title'); + } + public function getSubheading(): ?string { $schedule = config('speedtest.schedule'); if (blank($schedule) || $schedule === false) { - return __('No speedtests scheduled.'); + return __('dashboard.no_speedtests_scheduled'); } $cronExpression = new CronExpression($schedule); $nextRunDate = Carbon::parse($cronExpression->getNextRunDate(timeZone: config('app.display_timezone')))->format(config('app.datetime_format')); - return 'Next speedtest at: '.$nextRunDate; + return __('dashboard.next_speedtest_at').': '.$nextRunDate; } protected function getHeaderWidgets(): array diff --git a/app/Filament/Pages/Settings/DataIntegration.php b/app/Filament/Pages/Settings/DataIntegration.php index 66c43173a..b3d4dec33 100644 --- a/app/Filament/Pages/Settings/DataIntegration.php +++ b/app/Filament/Pages/Settings/DataIntegration.php @@ -26,9 +26,15 @@ class DataIntegration extends SettingsPage protected static ?int $navigationSort = 2; - protected static ?string $title = 'Data Integration'; + public function getTitle(): string + { + return __('settings/data_integration.title'); + } - protected static ?string $navigationLabel = 'Data Integration'; + public static function getNavigationLabel(): string + { + return __('settings/data_integration.label'); + } protected static string $settings = DataIntegrationSettings::class; @@ -51,49 +57,49 @@ public function form(Schema $schema): Schema 'md' => 3, ]) ->schema([ - Section::make('InfluxDB v2') - ->description('When enabled, all new Speedtest results will also be sent to InfluxDB.') + Section::make(__('settings/data_integration.influxdb_v2')) + ->description(__('settings/data_integration.influxdb_v2_description')) ->schema([ Toggle::make('influxdb_v2_enabled') - ->label('Enable') + ->label(__('settings/data_integration.influxdb_v2_enabled')) ->reactive() ->columnSpanFull(), Grid::make(['default' => 1, 'md' => 3]) ->hidden(fn (Get $get) => $get('influxdb_v2_enabled') !== true) ->schema([ TextInput::make('influxdb_v2_url') - ->label('URL') - ->placeholder('http://your-influxdb-instance') + ->label(__('settings/data_integration.influxdb_v2_url')) + ->placeholder(__('settings/data_integration.influxdb_v2_url_placeholder')) ->maxLength(255) ->required(fn (Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 1]), TextInput::make('influxdb_v2_org') - ->label('Org') + ->label(__('settings/data_integration.influxdb_v2_org')) ->maxLength(255) ->required(fn (Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 1]), TextInput::make('influxdb_v2_bucket') - ->placeholder('speedtest-tracker') - ->label('Bucket') + ->placeholder(__('settings/data_integration.influxdb_v2_bucket_placeholder')) + ->label(__('settings/data_integration.influxdb_v2_bucket')) ->maxLength(255) ->required(fn (Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 2]), TextInput::make('influxdb_v2_token') - ->label('Token') + ->label(__('settings/data_integration.influxdb_v2_token')) ->maxLength(255) ->password() ->required(fn (Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 2]), Checkbox::make('influxdb_v2_verify_ssl') - ->label('Verify SSL') + ->label(__('settings/data_integration.influxdb_v2_verify_ssl')) ->columnSpanFull(), // Button to send old data to InfluxDB Actions::make([ Action::make('Export current results') - ->label('Export current results') + ->label(__('general.export_current_results')) ->action(function () { Notification::make() - ->title('Starting bulk data write to Influxdb') + ->title(__('settings/data_integration.starting_bulk_data_write_to_influxdb')) ->info() ->send(); @@ -106,10 +112,10 @@ public function form(Schema $schema): Schema // Button to test InfluxDB connection Actions::make([ Action::make('Test connection') - ->label('Test connection') + ->label(__('settings/data_integration.test_connection')) ->action(function () { Notification::make() - ->title('Sending test data to Influxdb') + ->title(__('settings/data_integration.sending_test_data_to_influxdb')) ->info() ->send(); diff --git a/app/Filament/Pages/Settings/Notification.php b/app/Filament/Pages/Settings/Notification.php index 94b717d59..66bb8575c 100755 --- a/app/Filament/Pages/Settings/Notification.php +++ b/app/Filament/Pages/Settings/Notification.php @@ -34,9 +34,15 @@ class Notification extends SettingsPage protected static ?int $navigationSort = 3; - protected static ?string $title = 'Notifications'; + public function getTitle(): string + { + return __('settings/notifications.title'); + } - protected static ?string $navigationLabel = 'Notifications'; + public static function getNavigationLabel(): string + { + return __('settings/notifications.label'); + } protected static string $settings = NotificationSettings::class; @@ -64,11 +70,11 @@ public function form(Schema $schema): Schema 'default' => 1, ]) ->schema([ - Section::make('Database') - ->description('Notifications sent to this channel will show up under the 🔔 icon in the header.') + Section::make(__('settings/notifications.database')) + ->description(__('settings/notifications.database_description')) ->schema([ Toggle::make('database_enabled') - ->label('Enable database notifications') + ->label(__('settings/notifications.enable_database_notifications')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -76,18 +82,18 @@ public function form(Schema $schema): Schema ]) ->hidden(fn (Get $get) => $get('database_enabled') !== true) ->schema([ - Fieldset::make('Triggers') + Fieldset::make(__('settings.triggers')) ->schema([ Toggle::make('database_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('settings/notifications.database_on_speedtest_run')) ->columnSpanFull(), Toggle::make('database_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('settings/notifications.database_on_threshold_failure')) ->columnSpanFull(), ]), Actions::make([ Action::make('test database') - ->label('Test database channel') + ->label(__('settings/notifications.test_database_channel')) ->action(fn () => SendDatabaseTestNotification::run(user: Auth::user())), ]), ]), @@ -95,10 +101,10 @@ public function form(Schema $schema): Schema ->compact() ->columnSpan('full'), - Section::make('Mail') + Section::make(__('settings/notifications.mail')) ->schema([ Toggle::make('mail_enabled') - ->label('Enable mail notifications') + ->label(__('settings/notifications.enable_mail_notifications')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -106,17 +112,17 @@ public function form(Schema $schema): Schema ]) ->hidden(fn (Get $get) => $get('mail_enabled') !== true) ->schema([ - Fieldset::make('Triggers') + Fieldset::make(__('settings.triggers')) ->schema([ Toggle::make('mail_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('settings/notifications.mail_on_speedtest_run')) ->columnSpanFull(), Toggle::make('mail_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('settings/notifications.mail_on_threshold_failure')) ->columnSpanFull(), ]), Repeater::make('mail_recipients') - ->label('Recipients') + ->label(__('settings/notifications.recipients')) ->schema([ TextInput::make('email_address') ->placeholder('your@email.com') @@ -126,7 +132,7 @@ public function form(Schema $schema): Schema ->columnSpanFull(), Actions::make([ Action::make('test mail') - ->label('Test mail channel') + ->label(__('settings/notifications.test_mail_channel')) ->action(fn (Get $get) => SendMailTestNotification::run(recipients: $get('mail_recipients'))) ->hidden(fn (Get $get) => ! count($get('mail_recipients'))), ]), @@ -135,10 +141,10 @@ public function form(Schema $schema): Schema ->compact() ->columnSpan('full'), - Section::make('Webhook') + Section::make(__('settings/notifications.webhook')) ->schema([ Toggle::make('webhook_enabled') - ->label('Enable webhook notifications') + ->label(__('settings/notifications.enable_webhook_notifications')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -146,17 +152,17 @@ public function form(Schema $schema): Schema ]) ->hidden(fn (Get $get) => $get('webhook_enabled') !== true) ->schema([ - Fieldset::make('Triggers') + Fieldset::make(__('settings.triggers')) ->schema([ Toggle::make('webhook_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('settings/notifications.webhook_on_speedtest_run')) ->columnSpan(2), Toggle::make('webhook_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('settings/notifications.webhook_on_threshold_failure')) ->columnSpan(2), ]), Repeater::make('webhook_urls') - ->label('Recipients') + ->label(__('settings/notifications.recipients')) ->schema([ TextInput::make('url') ->placeholder('https://webhook.site/longstringofcharacters') @@ -167,7 +173,7 @@ public function form(Schema $schema): Schema ->columnSpanFull(), Actions::make([ Action::make('test webhook') - ->label('Test webhook channel') + ->label(__('settings/notifications.test_webhook_channel')) ->action(fn (Get $get) => SendWebhookTestNotification::run(webhooks: $get('webhook_urls'))) ->hidden(fn (Get $get) => ! count($get('webhook_urls'))), ]), diff --git a/app/Filament/Pages/Settings/Thresholds.php b/app/Filament/Pages/Settings/Thresholds.php index 464f2cb60..6c8adb4ab 100644 --- a/app/Filament/Pages/Settings/Thresholds.php +++ b/app/Filament/Pages/Settings/Thresholds.php @@ -21,9 +21,15 @@ class Thresholds extends SettingsPage protected static ?int $navigationSort = 4; - protected static ?string $title = 'Thresholds'; + public function getTitle(): string + { + return __('settings/thresholds.title'); + } - protected static ?string $navigationLabel = 'Thresholds'; + public static function getNavigationLabel(): string + { + return __('settings/thresholds.label'); + } protected static string $settings = ThresholdSettings::class; @@ -51,11 +57,11 @@ public function form(Schema $schema): Schema 'default' => 1, ]) ->schema([ - Section::make('Absolute') - ->description('Absolute thresholds do not take into account previous history and could be triggered on each test.') + Section::make(__('settings/thresholds.absolute')) + ->description(__('settings/thresholds.absolute_description')) ->schema([ Toggle::make('absolute_enabled') - ->label('Enable absolute thresholds') + ->label(__('settings/thresholds.absolute_enabled')) ->reactive() ->columnSpan(2), Grid::make([ @@ -63,28 +69,28 @@ public function form(Schema $schema): Schema ]) ->hidden(fn (Get $get) => $get('absolute_enabled') !== true) ->schema([ - Fieldset::make('Metrics') + Fieldset::make(__('settings/thresholds.metrics')) ->schema([ TextInput::make('absolute_download') - ->label('Download') - ->hint('Mbps') - ->helperText('Set to zero to disable this metric.') + ->label(__('general.download')) + ->hint(__('general.mbps')) + ->helperText(__('settings/thresholds.metrics_helper_text')) ->default(0) ->minValue(0) ->numeric() ->required(), TextInput::make('absolute_upload') - ->label('Upload') - ->hint('Mbps') - ->helperText('Set to zero to disable this metric.') + ->label(__('general.upload')) + ->hint(__('general.mbps')) + ->helperText(__('settings/thresholds.metrics_helper_text')) ->default(0) ->minValue(0) ->numeric() ->required(), TextInput::make('absolute_ping') - ->label('Ping') - ->hint('ms') - ->helperText('Set to zero to disable this metric.') + ->label(__('general.ping')) + ->hint(__('general.ms')) + ->helperText(__('settings/thresholds.metrics_helper_text')) ->default(0) ->minValue(0) ->numeric() diff --git a/app/Filament/Pages/Tools/ListOoklaServers.php b/app/Filament/Pages/Tools/ListOoklaServers.php index 7983c9d34..d2d5ea3eb 100644 --- a/app/Filament/Pages/Tools/ListOoklaServers.php +++ b/app/Filament/Pages/Tools/ListOoklaServers.php @@ -55,7 +55,7 @@ public function fetchServers(): void ]); } catch (\Exception $e) { Notification::make() - ->title('Error fetching servers') + ->title(__('errors.error_fetching_servers')) ->body($e->getMessage()) ->danger() ->send(); @@ -92,7 +92,7 @@ protected function getHeaderActions(): array $this->fetchServers(); Notification::make() - ->title('Servers refreshed successfully') + ->title(__('errors.servers_refreshed_successfully')) ->success() ->send(); }), @@ -106,7 +106,7 @@ protected function getHeaderActions(): array $this->js('navigator.clipboard.writeText('.json_encode($this->servers).')'); Notification::make() - ->title('Copied to clipboard') + ->title(__('errors.copied_to_clipboard')) ->success() ->send(); }), diff --git a/app/Filament/Resources/ApiTokens/ApiTokenResource.php b/app/Filament/Resources/ApiTokens/ApiTokenResource.php index fa669b019..acca29a28 100644 --- a/app/Filament/Resources/ApiTokens/ApiTokenResource.php +++ b/app/Filament/Resources/ApiTokens/ApiTokenResource.php @@ -19,9 +19,15 @@ class ApiTokenResource extends Resource protected static string|\UnitEnum|null $navigationGroup = 'Settings'; - protected static ?string $label = 'API Token'; + public static function getLabel(): ?string + { + return __('api_tokens.api_token'); + } - protected static ?string $pluralLabel = 'API Tokens'; + public static function getPluralLabel(): ?string + { + return __('api_tokens.api_tokens'); + } public static function canAccess(): bool { diff --git a/app/Filament/Resources/ApiTokens/Pages/ListApiTokens.php b/app/Filament/Resources/ApiTokens/Pages/ListApiTokens.php index 9e176bb98..8c36d0fe9 100644 --- a/app/Filament/Resources/ApiTokens/Pages/ListApiTokens.php +++ b/app/Filament/Resources/ApiTokens/Pages/ListApiTokens.php @@ -18,7 +18,7 @@ protected function getHeaderActions(): array { return [ Action::make('createToken') - ->label('Create API Token') + ->label(__('api_tokens.create_api_token')) ->schema(ApiTokenForm::schema()) ->action(function (array $data): void { $token = Auth::user()->createToken( @@ -28,8 +28,8 @@ protected function getHeaderActions(): array ); Notification::make() - ->title('Token Created') - ->body('Your token: `'.explode('|', $token->plainTextToken)[1].'`') + ->title(__('general.token_created')) + ->body(__('api_tokens.your_token').': `'.explode('|', $token->plainTextToken)[1].'`') ->success() ->persistent() ->send(); diff --git a/app/Filament/Resources/ApiTokens/Schemas/ApiTokenForm.php b/app/Filament/Resources/ApiTokens/Schemas/ApiTokenForm.php index b6d2b1455..ed66fbe11 100644 --- a/app/Filament/Resources/ApiTokens/Schemas/ApiTokenForm.php +++ b/app/Filament/Resources/ApiTokens/Schemas/ApiTokenForm.php @@ -15,29 +15,29 @@ public static function schema(): array Grid::make() ->schema([ TextInput::make('name') - ->label('Name') + ->label(__('general.name')) ->unique(ignoreRecord: true) ->maxLength(100) ->required(), CheckboxList::make('abilities') - ->label('Abilities') + ->label(__('api_tokens.abilities')) ->options([ - 'results:read' => 'Read results', - 'speedtests:run' => 'Run speedtest', - 'ookla:list-servers' => 'List servers', + 'results:read' => __('api_tokens.read_results'), + 'speedtests:run' => __('general.run_speedtest'), + 'ookla:list-servers' => __('general.list_servers'), ]) ->required() ->bulkToggleable() ->descriptions([ - 'results:read' => 'Allow this token to read results.', - 'speedtests:run' => 'Allow this token to run speedtests.', - 'ookla:list-servers' => 'Allow this token to list servers.', + 'results:read' => __('api_tokens.read_results_description'), + 'speedtests:run' => __('api_tokens.run_speedtest_description'), + 'ookla:list-servers' => __('api_tokens.list_servers_description'), ]), DateTimePicker::make('expires_at') - ->label('Expires at') + ->label(__('api_tokens.expires_at')) ->nullable() ->native(false) - ->helperText('Leave empty for no expiration'), + ->helperText(__('api_tokens.expires_at_helper_text')), ]) ->columns([ 'lg' => 1, diff --git a/app/Filament/Resources/ApiTokens/Tables/ApiTokenTable.php b/app/Filament/Resources/ApiTokens/Tables/ApiTokenTable.php index 6f3bff19b..31aff987e 100644 --- a/app/Filament/Resources/ApiTokens/Tables/ApiTokenTable.php +++ b/app/Filament/Resources/ApiTokens/Tables/ApiTokenTable.php @@ -21,21 +21,28 @@ public static function table(Table $table): Table return $table ->query(PersonalAccessToken::query()->where('tokenable_id', Auth::id())) ->columns([ - TextColumn::make('name')->searchable(), - TextColumn::make('abilities')->badge(), + TextColumn::make('name') + ->label(__('general.name')) + ->searchable(), + TextColumn::make('abilities') + ->label(__('api_tokens.abilities')) + ->badge(), TextColumn::make('created_at') + ->label(__('general.created_at')) ->dateTime(config('app.datetime_format')) ->timezone(config('app.display_timezone')) ->toggleable(isToggledHiddenByDefault: false) ->sortable() ->alignEnd(), TextColumn::make('last_used_at') + ->label(__('api_tokens.last_used_at')) ->dateTime(config('app.datetime_format')) ->timezone(config('app.display_timezone')) ->toggleable(isToggledHiddenByDefault: true) ->sortable() ->alignEnd(), TextColumn::make('expires_at') + ->label(__('api_tokens.expires_at')) ->dateTime(config('app.datetime_format')) ->timezone(config('app.display_timezone')) ->toggleable(isToggledHiddenByDefault: false) @@ -44,10 +51,10 @@ public static function table(Table $table): Table ]) ->filters([ TernaryFilter::make('expired') - ->label('Token Status') - ->placeholder('All tokens') - ->falseLabel('Active tokens') - ->trueLabel('Expired tokens') + ->label(__('api_tokens.token_status')) + ->placeholder(__('api_tokens.all_tokens')) + ->falseLabel(__('api_tokens.active_tokens')) + ->trueLabel(__('api_tokens.expired_tokens')) ->native(false) ->queries( true: fn (Builder $query) => $query @@ -62,12 +69,12 @@ public static function table(Table $table): Table blank: fn (Builder $query) => $query, ), SelectFilter::make('abilities') - ->label('Abilities') + ->label(__('api_tokens.abilities')) ->multiple() ->options([ - 'results:read' => 'Read results', - 'speedtests:run' => 'Run speedtest', - 'ookla:list-servers' => 'List servers', + 'results:read' => __('api_tokens.read_results'), + 'speedtests:run' => __('general.run_speedtest'), + 'ookla:list-servers' => __('general.list_servers'), ]) ->query(function (Builder $query, array $data): Builder { foreach ($data['values'] ?? [] as $value) { diff --git a/app/Filament/Resources/Results/ResultResource.php b/app/Filament/Resources/Results/ResultResource.php index c05bc5f81..6efd4a9f4 100644 --- a/app/Filament/Resources/Results/ResultResource.php +++ b/app/Filament/Resources/Results/ResultResource.php @@ -16,6 +16,21 @@ class ResultResource extends Resource protected static string|\BackedEnum|null $navigationIcon = 'heroicon-o-table-cells'; + public static function getNavigationLabel(): string + { + return __('results.title'); + } + + public static function getModelLabel(): string + { + return __('results.title'); + } + + public static function getPluralModelLabel(): string + { + return __('results.title'); + } + public static function form(Schema $schema): Schema { return $schema->components(ResultForm::schema()); diff --git a/app/Filament/Resources/Results/Schemas/ResultForm.php b/app/Filament/Resources/Results/Schemas/ResultForm.php index 0981b5f3c..3e2e5b852 100644 --- a/app/Filament/Resources/Results/Schemas/ResultForm.php +++ b/app/Filament/Resources/Results/Schemas/ResultForm.php @@ -24,67 +24,67 @@ public static function schema(): array // Left column: stacked sections Grid::make(['default' => 1]) ->schema([ - Section::make('Result Overview')->schema([ + Section::make(__('results.result_overview'))->schema([ TextInput::make('id') - ->label('ID'), + ->label(__('general.id')), TextInput::make('created_at') - ->label('Created') + ->label(__('general.created_at')) ->afterStateHydrated(function (TextInput $component, $state) { $component->state(Carbon::parse($state) ->timezone(config('app.display_timezone')) ->format(config('app.datetime_format'))); }), TextInput::make('download') - ->label('Download') + ->label(__('general.download')) ->afterStateHydrated(fn ($component, Result $record) => $component->state(! blank($record->download) ? Number::toBitRate(bits: $record->download_bits, precision: 2) : '')), TextInput::make('upload') - ->label('Upload') + ->label(__('general.upload')) ->afterStateHydrated(fn ($component, Result $record) => $component->state(! blank($record->upload) ? Number::toBitRate(bits: $record->upload_bits, precision: 2) : '')), TextInput::make('ping') - ->label('Ping') + ->label(__('general.ping')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), TextInput::make('data.packetLoss') - ->label('Packet Loss') + ->label(__('results.packet_loss')) ->formatStateUsing(fn ($state) => number_format((float) $state, 2, '.', '').' %'), ])->columns(2)->columnSpan('full'), - Section::make('Download Latency') + Section::make(__('general.download_latency')) ->schema([ - TextInput::make('data.download.latency.jitter')->label('Jitter') + TextInput::make('data.download.latency.jitter')->label(__('general.jitter')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), - TextInput::make('data.download.latency.high')->label('High') + TextInput::make('data.download.latency.high')->label(__('general.high')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), - TextInput::make('data.download.latency.low')->label('Low') + TextInput::make('data.download.latency.low')->label(__('general.low')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), - TextInput::make('data.download.latency.iqm')->label('IQM') + TextInput::make('data.download.latency.iqm')->label(__('results.iqm')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), ]) ->columns(2) ->collapsed() ->columnSpan('full'), - Section::make('Upload Latency') + Section::make(__('general.upload_latency')) ->schema([ - TextInput::make('data.upload.latency.jitter')->label('Jitter') + TextInput::make('data.upload.latency.jitter')->label(__('general.jitter')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), - TextInput::make('data.upload.latency.high')->label('High') + TextInput::make('data.upload.latency.high')->label(__('general.high')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), - TextInput::make('data.upload.latency.low')->label('Low') + TextInput::make('data.upload.latency.low')->label(__('general.low')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), - TextInput::make('data.upload.latency.iqm')->label('IQM') + TextInput::make('data.upload.latency.iqm')->label(__('results.iqm')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), ]) ->columns(2) ->collapsed() ->columnSpan('full'), - Section::make('Ping Details') + Section::make(__('results.ping_details')) ->schema([ - TextInput::make('data.ping.jitter')->label('Jitter') + TextInput::make('data.ping.jitter')->label(__('general.jitter')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), - TextInput::make('data.ping.low')->label('Low') + TextInput::make('data.ping.low')->label(__('general.low')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), - TextInput::make('data.ping.high')->label('High') + TextInput::make('data.ping.high')->label(__('general.high')) ->formatStateUsing(fn ($state) => number_format((float) $state, 0, '.', '').' ms'), ]) ->columns(2) @@ -92,33 +92,39 @@ public static function schema(): array ->columnSpan('full'), Textarea::make('data.message') - ->label('Message') + ->label(__('general.message')) ->hint(new HtmlString('🔗Error Messages')) ->columnSpanFull(), ]) ->columnSpan(['md' => 3]), // Right column: Server & Metadata - Section::make('Server & Metadata')->schema([ + Section::make(__('results.server_&_metadata'))->schema([ TextEntry::make('service') + ->label(__('results.service')) ->state(fn (Result $result): string => $result->service->getLabel()), TextEntry::make('server_name') + ->label(__('results.server_name')) ->state(fn (Result $result): ?string => $result->server_name), TextEntry::make('server_id') - ->label('Server ID') + ->label(__('results.server_id')) ->state(fn (Result $result): ?string => $result->server_id), TextEntry::make('isp') - ->label('ISP') + ->label(__('results.isp')) ->state(fn (Result $result): ?string => $result->isp), TextEntry::make('server_location') - ->label('Server Location') + ->label(__('results.server_location')) ->state(fn (Result $result): ?string => $result->server_location), TextEntry::make('server_host') + ->label(__('results.server_host')) ->state(fn (Result $result): ?string => $result->server_host), TextEntry::make('comment') + ->label(__('general.comment')) ->state(fn (Result $result): ?string => $result->comments), - Checkbox::make('scheduled'), - Checkbox::make('healthy'), + Checkbox::make('scheduled') + ->label(__('results.scheduled')), + Checkbox::make('healthy') + ->label(__('general.healthy')), ])->columns(1)->columnSpan(['md' => 2]), ]), ]; diff --git a/app/Filament/Resources/Results/Tables/ResultTable.php b/app/Filament/Resources/Results/Tables/ResultTable.php index 42276d9c0..06ce2626a 100644 --- a/app/Filament/Resources/Results/Tables/ResultTable.php +++ b/app/Filament/Resources/Results/Tables/ResultTable.php @@ -32,57 +32,62 @@ public static function table(Table $table): Table return $table ->columns([ TextColumn::make('id') - ->label('ID') + ->label(__('general.id')) ->toggleable(isToggledHiddenByDefault: false) ->sortable(), TextColumn::make('data.interface.externalIp') - ->label('IP address') + ->label(__('results.ip_address')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->interface->externalIp', $direction); }), TextColumn::make('service') + ->label(__('results.service')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(), TextColumn::make('data.server.id') - ->label('Server ID') + ->label(__('results.server_id')) ->toggleable(isToggledHiddenByDefault: false) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->server->id', $direction); }), TextColumn::make('data.isp') - ->label('ISP') + ->label(__('results.isp')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->isp', $direction); }), TextColumn::make('data.server.location') - ->label('Server Location') + ->label(__('results.server_location')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->server->location', $direction); }), TextColumn::make('data.server.name') + ->label(__('results.server_name')) ->toggleable(isToggledHiddenByDefault: false) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->server->name', $direction); }), TextColumn::make('download') + ->label(__('results.download')) ->getStateUsing(fn (Result $record): ?string => ! blank($record->download) ? Number::toBitRate(bits: $record->download_bits, precision: 2) : null) ->toggleable(isToggledHiddenByDefault: false) ->sortable(), TextColumn::make('upload') + ->label(__('results.upload')) ->getStateUsing(fn (Result $record): ?string => ! blank($record->upload) ? Number::toBitRate(bits: $record->upload_bits, precision: 2) : null) ->toggleable(isToggledHiddenByDefault: false) ->sortable(), TextColumn::make('ping') + ->label(__('results.ping')) ->toggleable(isToggledHiddenByDefault: false) ->sortable() ->formatStateUsing(function ($state) { return number_format((float) $state, 0, '.', '').' ms'; }), TextColumn::make('data.download.latency.jitter') - ->label('Download jitter') + ->label(__('results.download_latency_jitter')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->download->latency->jitter', $direction); @@ -91,7 +96,7 @@ public static function table(Table $table): Table return number_format((float) $state, 0, '.', '').' ms'; }), TextColumn::make('data.download.latency.high') - ->label('Download latency high') + ->label(__('results.download_latency_high')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->download->latency->high', $direction); @@ -100,7 +105,7 @@ public static function table(Table $table): Table return number_format((float) $state, 0, '.', '').' ms'; }), TextColumn::make('data.download.latency.low') - ->label('Download latency low') + ->label(__('results.download_latency_low')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->download->latency->low', $direction); @@ -109,7 +114,7 @@ public static function table(Table $table): Table return number_format((float) $state, 0, '.', '').' ms'; }), TextColumn::make('data.download.latency.iqm') - ->label('Download latency iqm') + ->label(__('results.download_latency_iqm')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->download->latency->iqm', $direction); @@ -118,7 +123,7 @@ public static function table(Table $table): Table return number_format((float) $state, 0, '.', '').' ms'; }), TextColumn::make('data.upload.latency.jitter') - ->label('Upload jitter') + ->label(__('results.upload_latency_jitter')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->upload->latency->jitter', $direction); @@ -127,7 +132,7 @@ public static function table(Table $table): Table return number_format((float) $state, 0, '.', '').' ms'; }), TextColumn::make('data.upload.latency.high') - ->label('Upload latency high') + ->label(__('results.upload_latency_high')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->upload->latency->high', $direction); @@ -136,7 +141,7 @@ public static function table(Table $table): Table return number_format((float) $state, 0, '.', '').' ms'; }), TextColumn::make('data.upload.latency.low') - ->label('Upload latency low') + ->label(__('results.upload_latency_low')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->upload->latency->low', $direction); @@ -145,7 +150,7 @@ public static function table(Table $table): Table return number_format((float) $state, 0, '.', '').' ms'; }), TextColumn::make('data.upload.latency.iqm') - ->label('Upload latency iqm') + ->label(__('results.upload_latency_iqm')) ->toggleable(isToggledHiddenByDefault: true) ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->upload->latency->iqm', $direction); @@ -154,38 +159,43 @@ public static function table(Table $table): Table return number_format((float) $state, 0, '.', '').' ms'; }), TextColumn::make('data.packetLoss') - ->label('Packet Loss') + ->label(__('results.packet_loss')) ->toggleable(isToggledHiddenByDefault: true) ->sortable() ->formatStateUsing(function ($state) { return number_format((float) $state, 2, '.', '').' %'; }), TextColumn::make('status') + ->label(__('general.status')) ->badge() ->toggleable(isToggledHiddenByDefault: false) ->sortable(), IconColumn::make('scheduled') + ->label(__('results.scheduled')) ->boolean() ->toggleable(isToggledHiddenByDefault: true) ->alignment(Alignment::Center), IconColumn::make('healthy') + ->label(__('general.healthy')) ->boolean() ->toggleable(isToggledHiddenByDefault: true) ->sortable() ->alignment(Alignment::Center), TextColumn::make('data.message') - ->label('Error Message') + ->label(__('results.error_message')) ->limit(15) ->tooltip(fn ($state) => $state) ->toggleable(isToggledHiddenByDefault: true) ->sortable(), TextColumn::make('created_at') + ->label(__('general.created_at')) ->dateTime(config('app.datetime_format')) ->timezone(config('app.display_timezone')) ->toggleable(isToggledHiddenByDefault: false) ->sortable() ->alignment(Alignment::End), TextColumn::make('updated_at') + ->label(__('general.updated_at')) ->dateTime(config('app.datetime_format')) ->timezone(config('app.display_timezone')) ->toggleable(isToggledHiddenByDefault: true) @@ -196,11 +206,14 @@ public static function table(Table $table): Table ->deferColumnManager(false) ->filters([ Filter::make('created_at') + ->label(__('general.created_at')) ->schema([ DatePicker::make('created_from') + ->label(__('results.created_from')) ->closeOnDateSelection() ->native(false), DatePicker::make('created_until') + ->label(__('results.created_until')) ->closeOnDateSelection() ->native(false), ]) @@ -216,7 +229,7 @@ public static function table(Table $table): Table ); }), SelectFilter::make('ip_address') - ->label('IP address') + ->label(__('results.ip_address')) ->multiple() ->options(function (): array { return Result::query() @@ -233,7 +246,7 @@ public static function table(Table $table): Table }) ->attribute('data->interface->externalIp'), SelectFilter::make('server_name') - ->label('Server name') + ->label(__('results.server_name')) ->multiple() ->options(function (): array { return Result::query() @@ -250,23 +263,26 @@ public static function table(Table $table): Table }) ->attribute('data->server->name'), TernaryFilter::make('scheduled') + ->label(__('results.scheduled')) ->nullable() ->native(false) - ->trueLabel('Only scheduled speedtests') - ->falseLabel('Only manual speedtests') + ->trueLabel(__('results.only_scheduled_speedtests')) + ->falseLabel(__('results.only_manual_speedtests')) ->queries( true: fn (Builder $query) => $query->where('scheduled', true), false: fn (Builder $query) => $query->where('scheduled', false), blank: fn (Builder $query) => $query, ), SelectFilter::make('status') + ->label(__('general.status')) ->multiple() ->options(ResultStatus::class), TernaryFilter::make('healthy') + ->label(__('general.healthy')) ->nullable() ->native(false) - ->trueLabel('Only healthy speedtests') - ->falseLabel('Only unhealthy speedtests') + ->trueLabel(__('results.only_healthy_speedtests')) + ->falseLabel(__('results.only_unhealthy_speedtests')) ->queries( true: fn (Builder $query) => $query->where('healthy', true), false: fn (Builder $query) => $query->where('healthy', false), @@ -278,12 +294,13 @@ public static function table(Table $table): Table ViewAction::make(), DeleteAction::make(), Action::make('view result') - ->label('View on Speedtest.net') + ->label(__('results.view_on_speedtest_net')) ->icon('heroicon-o-link') ->url(fn (Result $record): ?string => $record->result_url) ->hidden(fn (Result $record): bool => $record->status !== ResultStatus::Completed) ->openUrlInNewTab(), Action::make('updateComments') + ->label(__('results.update_comments')) ->icon('heroicon-o-chat-bubble-bottom-center-text') ->hidden(fn (): bool => ! (Auth::user()?->is_admin ?? false) && ! (Auth::user()?->is_user ?? false)) ->mountUsing(fn ($form, Result $record) => $form->fill([ @@ -295,6 +312,7 @@ public static function table(Table $table): Table }) ->schema([ Textarea::make('comments') + ->label(__('general.comments')) ->rows(6) ->maxLength(500), ]), @@ -307,15 +325,16 @@ public static function table(Table $table): Table ExportAction::make() ->exporter(ResultExporter::class) ->columnMapping(false) - ->modalHeading('Export all Results') - ->modalDescription('This will export all columns for all results.') + ->modalHeading(__('results.export_all_results')) + ->modalDescription(__('results.export_all_results_description')) ->fileName(fn (): string => 'results-'.now()->timestamp), ActionGroup::make([ Action::make('truncate') + ->label(__('results.truncate_results')) ->action(fn () => TruncateResults::dispatch(Auth::user())) ->requiresConfirmation() - ->modalHeading('Truncate Results') - ->modalDescription('Are you sure you want to truncate all results data? This can\'t be undone.') + ->modalHeading(__('results.truncate_results')) + ->modalDescription(__('results.truncate_results_description')) ->color('danger') ->icon('heroicon-o-trash') ->hidden(fn (): bool => ! Auth::user()->is_admin), diff --git a/app/Filament/Resources/Users/Schemas/UserForm.php b/app/Filament/Resources/Users/Schemas/UserForm.php index 4c72d0fc7..5f6f2eccf 100644 --- a/app/Filament/Resources/Users/Schemas/UserForm.php +++ b/app/Filament/Resources/Users/Schemas/UserForm.php @@ -22,24 +22,27 @@ public static function schema(): array ])->columnSpan([ 'lg' => 2, ])->schema([ - Section::make('Details') + Section::make(__('general.details')) ->columns([ 'default' => 1, 'lg' => 2, ]) ->schema([ TextInput::make('name') + ->label(__('general.name')) ->required() ->maxLength(255) ->columnSpanFull(), TextInput::make('email') + ->label(__('general.email')) ->email() ->required() ->maxLength(255) ->columnSpanFull(), TextInput::make('password') + ->label(__('general.password')) ->confirmed() ->password() ->revealable() @@ -48,6 +51,7 @@ public static function schema(): array ->dehydrated(fn ($state) => filled($state)), TextInput::make('password_confirmation') + ->label(__('general.password_confirmation')) ->password() ->revealable(), ]), @@ -56,10 +60,10 @@ public static function schema(): array Grid::make(1) ->columnSpan(1) ->schema([ - Section::make('Platform') + Section::make(__('general.platform')) ->schema([ Select::make('role') - ->label('Role') + ->label(__('general.role')) ->default(UserRole::User) ->options(UserRole::class) ->required() @@ -69,9 +73,11 @@ public static function schema(): array Section::make() ->schema([ Placeholder::make('created_at') + ->label(__('general.created_at')) ->content(fn (?User $record): string => $record ? $record->created_at->diffForHumans() : '-'), Placeholder::make('updated_at') + ->label(__('general.updated_at')) ->content(fn (?User $record): string => $record ? $record->updated_at->diffForHumans() : '-'), ]), ]), diff --git a/app/Filament/Resources/Users/Tables/UserTable.php b/app/Filament/Resources/Users/Tables/UserTable.php index 124109e4a..cb910493e 100644 --- a/app/Filament/Resources/Users/Tables/UserTable.php +++ b/app/Filament/Resources/Users/Tables/UserTable.php @@ -17,25 +17,30 @@ public static function table(Table $table): Table return $table ->columns([ TextColumn::make('id') - ->label('ID') + ->label(__('general.id')) ->sortable() ->toggleable(isToggledHiddenByDefault: false), TextColumn::make('name') + ->label(__('general.name')) ->sortable() ->toggleable(isToggledHiddenByDefault: false), TextColumn::make('email') + ->label(__('general.email')) ->searchable() ->toggleable(isToggledHiddenByDefault: false), TextColumn::make('role') + ->label(__('general.role')) ->badge() ->toggleable(isToggledHiddenByDefault: false), TextColumn::make('created_at') + ->label(__('general.created_at')) ->alignEnd() ->dateTime(config('app.datetime_format')) ->timezone(config('app.display_timezone')) ->sortable() ->toggleable(isToggledHiddenByDefault: false), TextColumn::make('updated_at') + ->label(__('general.updated_at')) ->alignEnd() ->dateTime(config('app.datetime_format')) ->timezone(config('app.display_timezone')) @@ -44,6 +49,7 @@ public static function table(Table $table): Table ]) ->filters([ SelectFilter::make('role') + ->label(__('general.role')) ->native(false) ->options(UserRole::class), ]) diff --git a/app/Filament/Resources/Users/UserResource.php b/app/Filament/Resources/Users/UserResource.php index b4d4fe121..914172ab8 100644 --- a/app/Filament/Resources/Users/UserResource.php +++ b/app/Filament/Resources/Users/UserResource.php @@ -20,6 +20,16 @@ class UserResource extends Resource protected static ?int $navigationSort = 4; + public static function getLabel(): ?string + { + return __('general.user'); + } + + public static function getPluralLabel(): ?string + { + return __('general.users'); + } + public static function form(Schema $schema): Schema { return $schema->components(UserForm::schema()); diff --git a/app/Filament/Widgets/RecentDownloadChartWidget.php b/app/Filament/Widgets/RecentDownloadChartWidget.php index 4d331b67a..da62367ac 100644 --- a/app/Filament/Widgets/RecentDownloadChartWidget.php +++ b/app/Filament/Widgets/RecentDownloadChartWidget.php @@ -13,7 +13,12 @@ class RecentDownloadChartWidget extends ChartWidget { use HasChartFilters; - protected ?string $heading = 'Download (Mbps)'; + protected ?string $heading = null; + + public function getHeading(): ?string + { + return __('general.download_mbps'); + } protected int|string|array $columnSpan = 'full'; @@ -48,7 +53,7 @@ protected function getData(): array return [ 'datasets' => [ [ - 'label' => 'Download', + 'label' => __('general.download'), 'data' => $results->map(fn ($item) => ! blank($item->download) ? Number::bitsToMagnitude(bits: $item->download_bits, precision: 2, magnitude: 'mbit') : null), 'borderColor' => 'rgba(14, 165, 233)', 'backgroundColor' => 'rgba(14, 165, 233, 0.1)', @@ -59,7 +64,7 @@ protected function getData(): array 'pointRadius' => count($results) <= 24 ? 3 : 0, ], [ - 'label' => 'Average', + 'label' => __('general.average'), 'data' => array_fill(0, count($results), Average::averageDownload($results)), 'borderColor' => 'rgb(243, 7, 6, 1)', 'pointBackgroundColor' => 'rgb(243, 7, 6, 1)', diff --git a/app/Filament/Widgets/RecentDownloadLatencyChartWidget.php b/app/Filament/Widgets/RecentDownloadLatencyChartWidget.php index d5beeab60..1e73db54f 100644 --- a/app/Filament/Widgets/RecentDownloadLatencyChartWidget.php +++ b/app/Filament/Widgets/RecentDownloadLatencyChartWidget.php @@ -11,7 +11,12 @@ class RecentDownloadLatencyChartWidget extends ChartWidget { use HasChartFilters; - protected ?string $heading = 'Download Latency'; + protected ?string $heading = null; + + public function getHeading(): ?string + { + return __('general.download_latency'); + } protected int|string|array $columnSpan = 'full'; @@ -46,7 +51,7 @@ protected function getData(): array return [ 'datasets' => [ [ - 'label' => 'Average (ms)', + 'label' => __('general.average_ms'), 'data' => $results->map(fn ($item) => $item->download_latency_iqm), 'borderColor' => 'rgba(16, 185, 129)', 'backgroundColor' => 'rgba(16, 185, 129, 0.1)', @@ -57,7 +62,7 @@ protected function getData(): array 'pointRadius' => count($results) <= 24 ? 3 : 0, ], [ - 'label' => 'High (ms)', + 'label' => __('general.high_ms'), 'data' => $results->map(fn ($item) => $item->download_latency_high), 'borderColor' => 'rgba(14, 165, 233)', 'backgroundColor' => 'rgba(14, 165, 233, 0.1)', @@ -68,7 +73,7 @@ protected function getData(): array 'pointRadius' => count($results) <= 24 ? 3 : 0, ], [ - 'label' => 'Low (ms)', + 'label' => __('general.low_ms'), 'data' => $results->map(fn ($item) => $item->download_latency_low), 'borderColor' => 'rgba(139, 92, 246)', 'backgroundColor' => 'rgba(139, 92, 246, 0.1)', diff --git a/app/Filament/Widgets/RecentJitterChartWidget.php b/app/Filament/Widgets/RecentJitterChartWidget.php index 50a84c37c..ff598cafd 100644 --- a/app/Filament/Widgets/RecentJitterChartWidget.php +++ b/app/Filament/Widgets/RecentJitterChartWidget.php @@ -11,7 +11,12 @@ class RecentJitterChartWidget extends ChartWidget { use HasChartFilters; - protected ?string $heading = 'Jitter'; + protected ?string $heading = null; + + public function getHeading(): ?string + { + return __('general.jitter'); + } protected int|string|array $columnSpan = 'full'; @@ -46,7 +51,7 @@ protected function getData(): array return [ 'datasets' => [ [ - 'label' => 'Download (ms)', + 'label' => __('general.download_ms'), 'data' => $results->map(fn ($item) => $item->download_jitter), 'borderColor' => 'rgba(14, 165, 233)', 'backgroundColor' => 'rgba(14, 165, 233, 0.1)', @@ -57,7 +62,7 @@ protected function getData(): array 'pointRadius' => count($results) <= 24 ? 3 : 0, ], [ - 'label' => 'Upload (ms)', + 'label' => __('general.upload_ms'), 'data' => $results->map(fn ($item) => $item->upload_jitter), 'borderColor' => 'rgba(139, 92, 246)', 'backgroundColor' => 'rgba(139, 92, 246, 0.1)', @@ -68,7 +73,7 @@ protected function getData(): array 'pointRadius' => count($results) <= 24 ? 3 : 0, ], [ - 'label' => 'Ping (ms)', + 'label' => __('general.ping_ms_label'), 'data' => $results->map(fn ($item) => $item->ping_jitter), 'borderColor' => 'rgba(16, 185, 129)', 'backgroundColor' => 'rgba(16, 185, 129, 0.1)', diff --git a/app/Filament/Widgets/RecentPingChartWidget.php b/app/Filament/Widgets/RecentPingChartWidget.php index 55ad7f046..b31c02530 100644 --- a/app/Filament/Widgets/RecentPingChartWidget.php +++ b/app/Filament/Widgets/RecentPingChartWidget.php @@ -12,7 +12,12 @@ class RecentPingChartWidget extends ChartWidget { use HasChartFilters; - protected ?string $heading = 'Ping (ms)'; + protected ?string $heading = null; + + public function getHeading(): ?string + { + return __('general.ping_ms'); + } protected int|string|array $columnSpan = 'full'; @@ -47,7 +52,7 @@ protected function getData(): array return [ 'datasets' => [ [ - 'label' => 'Ping', + 'label' => __('general.ping'), 'data' => $results->map(fn ($item) => $item->ping), 'borderColor' => 'rgba(16, 185, 129)', 'backgroundColor' => 'rgba(16, 185, 129, 0.1)', @@ -58,7 +63,7 @@ protected function getData(): array 'pointRadius' => count($results) <= 24 ? 3 : 0, ], [ - 'label' => 'Average', + 'label' => __('general.average'), 'data' => array_fill(0, count($results), Average::averagePing($results)), 'borderColor' => 'rgb(243, 7, 6, 1)', 'pointBackgroundColor' => 'rgb(243, 7, 6, 1)', diff --git a/app/Filament/Widgets/RecentUploadChartWidget.php b/app/Filament/Widgets/RecentUploadChartWidget.php index f3f31e3d6..df3d15ffb 100644 --- a/app/Filament/Widgets/RecentUploadChartWidget.php +++ b/app/Filament/Widgets/RecentUploadChartWidget.php @@ -13,7 +13,12 @@ class RecentUploadChartWidget extends ChartWidget { use HasChartFilters; - protected ?string $heading = 'Upload (Mbps)'; + protected ?string $heading = null; + + public function getHeading(): ?string + { + return __('general.upload_mbps'); + } protected int|string|array $columnSpan = 'full'; @@ -48,7 +53,7 @@ protected function getData(): array return [ 'datasets' => [ [ - 'label' => 'Upload', + 'label' => __('general.upload'), 'data' => $results->map(fn ($item) => ! blank($item->upload) ? Number::bitsToMagnitude(bits: $item->upload_bits, precision: 2, magnitude: 'mbit') : null), 'borderColor' => 'rgba(139, 92, 246)', 'backgroundColor' => 'rgba(139, 92, 246, 0.1)', @@ -59,7 +64,7 @@ protected function getData(): array 'pointRadius' => count($results) <= 24 ? 3 : 0, ], [ - 'label' => 'Average', + 'label' => __('general.average'), 'data' => array_fill(0, count($results), Average::averageUpload($results)), 'borderColor' => 'rgb(243, 7, 6, 1)', 'pointBackgroundColor' => 'rgb(243, 7, 6, 1)', diff --git a/app/Filament/Widgets/RecentUploadLatencyChartWidget.php b/app/Filament/Widgets/RecentUploadLatencyChartWidget.php index 6bb761cc9..5b79fa0c5 100644 --- a/app/Filament/Widgets/RecentUploadLatencyChartWidget.php +++ b/app/Filament/Widgets/RecentUploadLatencyChartWidget.php @@ -11,7 +11,12 @@ class RecentUploadLatencyChartWidget extends ChartWidget { use HasChartFilters; - protected ?string $heading = 'Upload Latency'; + protected ?string $heading = null; + + public function getHeading(): ?string + { + return __('general.upload_latency'); + } protected int|string|array $columnSpan = 'full'; @@ -46,7 +51,7 @@ protected function getData(): array return [ 'datasets' => [ [ - 'label' => 'Average (ms)', + 'label' => __('general.average_ms'), 'data' => $results->map(fn ($item) => $item->upload_latency_iqm), 'borderColor' => 'rgba(16, 185, 129)', 'backgroundColor' => 'rgba(16, 185, 129, 0.1)', @@ -57,7 +62,7 @@ protected function getData(): array 'pointRadius' => count($results) <= 24 ? 3 : 0, ], [ - 'label' => 'High (ms)', + 'label' => __('general.high_ms'), 'data' => $results->map(fn ($item) => $item->upload_latency_high), 'borderColor' => 'rgba(14, 165, 233)', 'backgroundColor' => 'rgba(14, 165, 233, 0.1)', @@ -68,7 +73,7 @@ protected function getData(): array 'pointRadius' => count($results) <= 24 ? 3 : 0, ], [ - 'label' => 'Low (ms)', + 'label' => __('general.low_ms'), 'data' => $results->map(fn ($item) => $item->upload_latency_low), 'borderColor' => 'rgba(139, 92, 246)', 'backgroundColor' => 'rgba(139, 92, 246, 0.1)', diff --git a/app/Filament/Widgets/StatsOverviewWidget.php b/app/Filament/Widgets/StatsOverviewWidget.php index 62f712766..8178c10e3 100644 --- a/app/Filament/Widgets/StatsOverviewWidget.php +++ b/app/Filament/Widgets/StatsOverviewWidget.php @@ -24,11 +24,11 @@ protected function getCards(): array if (blank($this->result)) { return [ - Stat::make('Latest download', '-') + Stat::make(__('dashboard.latest_download'), '-') ->icon('heroicon-o-arrow-down-tray'), - Stat::make('Latest upload', '-') + Stat::make(__('dashboard.latest_upload'), '-') ->icon('heroicon-o-arrow-up-tray'), - Stat::make('Latest ping', '-') + Stat::make(__('dashboard.latest_ping'), '-') ->icon('heroicon-o-clock'), ]; } @@ -42,11 +42,11 @@ protected function getCards(): array if (! $previous) { return [ - Stat::make('Latest download', fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->download_bits, precision: 2) : 'n/a') + Stat::make(__('dashboard.latest_download'), fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->download_bits, precision: 2) : 'n/a') ->icon('heroicon-o-arrow-down-tray'), - Stat::make('Latest upload', fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->upload_bits, precision: 2) : 'n/a') + Stat::make(__('dashboard.latest_upload'), fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->upload_bits, precision: 2) : 'n/a') ->icon('heroicon-o-arrow-up-tray'), - Stat::make('Latest ping', fn (): string => ! blank($this->result) ? number_format($this->result->ping, 2).' ms' : 'n/a') + Stat::make(__('dashboard.latest_ping'), fn (): string => ! blank($this->result) ? number_format($this->result->ping, 2).' ms' : 'n/a') ->icon('heroicon-o-clock'), ]; } @@ -56,19 +56,19 @@ protected function getCards(): array $pingChange = percentChange($this->result->ping, $previous->ping, 2); return [ - Stat::make('Latest download', fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->download_bits, precision: 2) : 'n/a') + Stat::make(__('dashboard.latest_download'), fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->download_bits, precision: 2) : 'n/a') ->icon('heroicon-o-arrow-down-tray') - ->description($downloadChange > 0 ? $downloadChange.'% faster' : abs($downloadChange).'% slower') + ->description($downloadChange > 0 ? $downloadChange.'% '.__('general.faster') : abs($downloadChange).'% '.__('general.slower')) ->descriptionIcon($downloadChange > 0 ? 'heroicon-m-arrow-trending-up' : 'heroicon-m-arrow-trending-down') ->color($downloadChange > 0 ? 'success' : 'danger'), - Stat::make('Latest upload', fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->upload_bits, precision: 2) : 'n/a') + Stat::make(__('dashboard.latest_upload'), fn (): string => ! blank($this->result) ? Number::toBitRate(bits: $this->result->upload_bits, precision: 2) : 'n/a') ->icon('heroicon-o-arrow-up-tray') - ->description($uploadChange > 0 ? $uploadChange.'% faster' : abs($uploadChange).'% slower') + ->description($uploadChange > 0 ? $uploadChange.'% '.__('general.faster') : abs($uploadChange).'% '.__('general.slower')) ->descriptionIcon($uploadChange > 0 ? 'heroicon-m-arrow-trending-up' : 'heroicon-m-arrow-trending-down') ->color($uploadChange > 0 ? 'success' : 'danger'), - Stat::make('Latest ping', fn (): string => ! blank($this->result) ? number_format($this->result->ping, 2).' ms' : 'n/a') + Stat::make(__('dashboard.latest_ping'), fn (): string => ! blank($this->result) ? number_format($this->result->ping, 2).' ms' : 'n/a') ->icon('heroicon-o-clock') - ->description($pingChange > 0 ? $pingChange.'% slower' : abs($pingChange).'% faster') + ->description($pingChange > 0 ? $pingChange.'% '.__('general.slower') : abs($pingChange).'% '.__('general.faster')) ->descriptionIcon($pingChange > 0 ? 'heroicon-m-arrow-trending-up' : 'heroicon-m-arrow-trending-down') ->color($pingChange > 0 ? 'danger' : 'success'), ]; diff --git a/app/Jobs/Influxdb/v2/BulkWriteResults.php b/app/Jobs/Influxdb/v2/BulkWriteResults.php index 7171089d7..2c3c866b3 100644 --- a/app/Jobs/Influxdb/v2/BulkWriteResults.php +++ b/app/Jobs/Influxdb/v2/BulkWriteResults.php @@ -58,8 +58,8 @@ public function handle(): void ]); Notification::make() - ->title('Failed to build write to Influxdb.') - ->body('Check the logs for more details.') + ->title(__('settings/data_integration.influxdb_bulk_write_failed')) + ->body(__('settings/data_integration.influxdb_bulk_write_failed_body')) ->danger() ->sendToDatabase($this->user); @@ -74,8 +74,8 @@ public function handle(): void $writeApi->close(); Notification::make() - ->title('Finished bulk data load to Influxdb.') - ->body('Data has been sent to InfluxDB, check if the data was received.') + ->title(__('settings/data_integration.influxdb_bulk_write_success')) + ->body(__('settings/data_integration.influxdb_bulk_write_success_body')) ->success() ->sendToDatabase($this->user); } diff --git a/app/Jobs/Influxdb/v2/TestConnectionJob.php b/app/Jobs/Influxdb/v2/TestConnectionJob.php index 9f564aea0..1d758513c 100644 --- a/app/Jobs/Influxdb/v2/TestConnectionJob.php +++ b/app/Jobs/Influxdb/v2/TestConnectionJob.php @@ -46,8 +46,8 @@ public function handle(): void ]); Notification::make() - ->title('Influxdb test failed') - ->body('Check the logs for more details.') + ->title(__('settings/data_integration.influxdb_test_failed')) + ->body(__('settings/data_integration.influxdb_test_failed_body')) ->danger() ->sendToDatabase($this->user); @@ -59,8 +59,8 @@ public function handle(): void $writeApi->close(); Notification::make() - ->title('Successfully sent test data to Influxdb') - ->body('Test data has been sent to InfluxDB, check if the data was received.') + ->title(__('settings/data_integration.influxdb_test_success')) + ->body(__('settings/data_integration.influxdb_test_success_body')) ->success() ->sendToDatabase($this->user); } diff --git a/app/Jobs/TruncateResults.php b/app/Jobs/TruncateResults.php index 18f41f3e2..e597fc2d3 100644 --- a/app/Jobs/TruncateResults.php +++ b/app/Jobs/TruncateResults.php @@ -41,7 +41,7 @@ public function handle(): void } Notification::make() - ->title('Results table truncated!') + ->title(__('results.truncate_results_success')) ->success() ->sendToDatabase($this->user); } diff --git a/app/Listeners/Database/SendSpeedtestCompletedNotification.php b/app/Listeners/Database/SendSpeedtestCompletedNotification.php index 14ea66605..acaaf9d42 100644 --- a/app/Listeners/Database/SendSpeedtestCompletedNotification.php +++ b/app/Listeners/Database/SendSpeedtestCompletedNotification.php @@ -26,7 +26,7 @@ public function handle(SpeedtestCompleted $event): void foreach (User::all() as $user) { Notification::make() - ->title('Speedtest completed') + ->title(__('results.speedtest_completed')) ->success() ->sendToDatabase($user); } diff --git a/app/Listeners/Database/SendSpeedtestThresholdNotification.php b/app/Listeners/Database/SendSpeedtestThresholdNotification.php index 7439b52f1..a998faff5 100644 --- a/app/Listeners/Database/SendSpeedtestThresholdNotification.php +++ b/app/Listeners/Database/SendSpeedtestThresholdNotification.php @@ -56,7 +56,7 @@ protected function absoluteDownloadThreshold(SpeedtestCompleted $event, Threshol foreach (User::all() as $user) { Notification::make() - ->title('Download threshold breached!') + ->title(__('results.download_threshold_breached')) ->body('Speedtest #'.$event->result->id.' breached the download threshold of '.$thresholdSettings->absolute_download.' Mbps at '.Number::toBitRate($event->result->download_bits).'.') ->warning() ->sendToDatabase($user); @@ -74,7 +74,7 @@ protected function absoluteUploadThreshold(SpeedtestCompleted $event, ThresholdS foreach (User::all() as $user) { Notification::make() - ->title('Upload threshold breached!') + ->title(__('results.upload_threshold_breached')) ->body('Speedtest #'.$event->result->id.' breached the upload threshold of '.$thresholdSettings->absolute_upload.' Mbps at '.Number::toBitRate($event->result->upload_bits).'.') ->warning() ->sendToDatabase($user); @@ -92,7 +92,7 @@ protected function absolutePingThreshold(SpeedtestCompleted $event, ThresholdSet foreach (User::all() as $user) { Notification::make() - ->title('Ping threshold breached!') + ->title(__('results.ping_threshold_breached')) ->body('Speedtest #'.$event->result->id.' breached the ping threshold of '.$thresholdSettings->absolute_ping.'ms at '.$event->result->ping.'ms.') ->warning() ->sendToDatabase($user); diff --git a/app/Livewire/Topbar/RunSpeedtestAction.php b/app/Livewire/Topbar/RunSpeedtestAction.php index b615b5f2f..b6e77b292 100644 --- a/app/Livewire/Topbar/RunSpeedtestAction.php +++ b/app/Livewire/Topbar/RunSpeedtestAction.php @@ -23,7 +23,7 @@ class RunSpeedtestAction extends Component implements HasActions, HasForms public function dashboardAction(): Action { return Action::make('home') - ->label('Public Dashboard') + ->label(__('results.public_dashboard')) ->icon('heroicon-o-chart-bar') ->iconPosition(IconPosition::Before) ->color('gray') @@ -38,12 +38,12 @@ public function speedtestAction(): Action return Action::make('speedtest') ->schema([ Select::make('server_id') - ->label('Select Server') - ->helperText('Leave empty to run the speedtest without specifying a server. Blocked servers will be skipped.') + ->label(__('results.select_server')) + ->helperText(__('results.select_server_helper')) ->options(function (): array { return array_filter([ - 'Manual servers' => Ookla::getConfigServers(), - 'Closest servers' => GetOoklaSpeedtestServers::run(), + __('results.manual_servers') => Ookla::getConfigServers(), + __('results.closest_servers') => GetOoklaSpeedtestServers::run(), ]); }) ->searchable(), @@ -56,16 +56,16 @@ public function speedtestAction(): Action ); Notification::make() - ->title('Speedtest started') + ->title(__('results.speedtest_started')) ->success() ->send(); }) - ->modalHeading('Run Speedtest') + ->modalHeading(__('results.run_speedtest')) ->modalWidth('lg') - ->modalSubmitActionLabel('Start') + ->modalSubmitActionLabel(__('results.start')) ->button() ->color('primary') - ->label('Speedtest') + ->label(__('results.speedtest')) ->icon('heroicon-o-rocket-launch') ->iconPosition(IconPosition::Before) ->hidden(! Auth::check() && Auth::user()->is_admin) diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 5d90f93d4..aa8e024ff 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -57,25 +57,25 @@ public function panel(Panel $panel): Panel ]) ->navigationGroups([ NavigationGroup::make() - ->label('Settings'), + ->label(__('general.settings')), NavigationGroup::make() - ->label('Links') + ->label(__('general.links')) ->collapsible(false), ]) ->navigationItems([ - NavigationItem::make('Documentation') + NavigationItem::make(__('general.documentation')) ->url('https://docs.speedtest-tracker.dev/', shouldOpenInNewTab: true) ->icon('heroicon-o-book-open') - ->group('Links'), - NavigationItem::make('Donate') + ->group(__('general.links')), + NavigationItem::make(__('general.donate')) ->url('https://github.com/sponsors/alexjustesen', shouldOpenInNewTab: true) ->icon('heroicon-o-banknotes') - ->group('Links'), + ->group(__('general.links')), NavigationItem::make(config('speedtest.build_version')) ->url('https://github.com/alexjustesen/speedtest-tracker', shouldOpenInNewTab: true) ->icon('tabler-brand-github') - ->badge(fn (): string => Repository::updateAvailable() ? 'Update Available!' : 'Up to Date') - ->group('Links'), + ->badge(fn (): string => Repository::updateAvailable() ? __('general.update_available') : __('general.up_to_date')) + ->group(__('general.links')), ]); } } diff --git a/app/Rules/Cron.php b/app/Rules/Cron.php index ad376df1a..ef59213d0 100644 --- a/app/Rules/Cron.php +++ b/app/Rules/Cron.php @@ -17,7 +17,7 @@ class Cron implements ValidationRule public function validate(string $attribute, mixed $value, Closure $fail): void { if (! CronExpression::isValidExpression($value)) { - $fail('Cron expression is not valid'); + $fail(__('errors.cron_invalid')); } } } diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 000000000..daee5d0e5 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,11 @@ +base_path: /lang +preserve_hierarchy: true + +files: + # PHP language files - root level + - source: /en/*.php + translation: /%locale_with_underscore%/%original_file_name% + + # PHP language files - settings subdirectory + - source: /en/settings/*.php + translation: /%locale_with_underscore%/settings/%original_file_name% diff --git a/lang/de_DE/auth.php b/lang/de_DE/auth.php deleted file mode 100644 index f9306fe60..000000000 --- a/lang/de_DE/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - 'Die eingegebenen Zugangsdaten stimmen nicht überein.', - 'password' => 'Das eingegebene Passwort ist falsch.', - 'throttle' => 'Zu viele Anmeldeversuche. Bitte warte :seconds Sekunden und versuche es erneut.', - -]; diff --git a/lang/de_DE/pagination.php b/lang/de_DE/pagination.php deleted file mode 100644 index a08736d9d..000000000 --- a/lang/de_DE/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Zurück', - 'next' => 'Weiter »', - -]; diff --git a/lang/de_DE/passwords.php b/lang/de_DE/passwords.php deleted file mode 100644 index 4d02f3c49..000000000 --- a/lang/de_DE/passwords.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Dein Passwort wurde erfolgreich zurückgesetzt!', - 'sent' => 'Wir haben dir einen Link zum Zurücksetzen des Passworts per E-Mail geschickt!', - 'password' => 'Das Passwort muss mindestens 6 Zeichen lang sein und mit der Bestätigung übereinstimmen.', - 'throttled' => 'Bitte warte einen Moment, bevor du es erneut versuchst.', - 'token' => 'Der Link zum Zurücksetzen des Passworts ist ungültig oder abgelaufen.', - 'user' => 'Zu dieser E-Mail-Adresse existiert kein Benutzerkonto.', - -]; diff --git a/lang/de_DE/validation.php b/lang/de_DE/validation.php deleted file mode 100644 index 9cbe6946e..000000000 --- a/lang/de_DE/validation.php +++ /dev/null @@ -1,230 +0,0 @@ - ':attribute muss akzeptiert werden.', - 'accepted_if' => ':attribute muss akzeptiert werden, wenn :other :value ist.', - 'active_url' => ':attribute muss eine gültige URL sein.', - 'after' => ':attribute muss ein Datum nach :date sein.', - 'after_or_equal' => ':attribute muss ein Datum nach oder am :date sein.', - 'alpha' => ':attribute darf nur Buchstaben enthalten.', - 'alpha_dash' => ':attribute darf nur Buchstaben, Zahlen, Binde- und Unterstriche enthalten.', - 'alpha_num' => ':attribute darf nur Buchstaben und Zahlen enthalten.', - 'array' => ':attribute muss eine Liste sein.', - 'ascii' => ':attribute darf nur Standardzeichen enthalten.', - 'before' => ':attribute muss ein Datum vor :date sein.', - 'before_or_equal' => ':attribute muss ein Datum vor oder am :date sein.', - 'between' => [ - 'array' => ':attribute muss zwischen :min und :max Einträge haben.', - 'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.', - 'numeric' => ':attribute muss zwischen :min und :max liegen.', - 'string' => ':attribute muss zwischen :min und :max Zeichen lang sein.', - ], - 'boolean' => ':attribute muss wahr oder falsch sein.', - 'can' => ':attribute enthält einen ungültigen Wert.', - 'confirmed' => 'Die Eingabe bei :attribute stimmt nicht mit der Bestätigung überein.', - 'current_password' => 'Das eingegebene Passwort ist falsch.', - 'date' => ':attribute ist kein gültiges Datum.', - 'date_equals' => ':attribute muss genau am :date liegen.', - 'date_format' => ':attribute entspricht nicht dem erforderlichen Format (:format).', - 'decimal' => ':attribute muss :decimal Nachkommastellen haben.', - 'declined' => ':attribute muss abgelehnt werden.', - 'declined_if' => ':attribute muss abgelehnt werden, wenn :other den Wert ":value" hat.', - 'different' => ':attribute und :other müssen verschieden sein.', - 'digits' => ':attribute muss :digits Ziffern lang sein.', - 'digits_between' => ':attribute muss zwischen :min und :max Ziffern lang sein.', - 'dimensions' => ':attribute hat falsche Bildmaße.', - 'distinct' => ':attribute enthält doppelte Werte.', - 'doesnt_end_with' => ':attribute darf nicht mit folgenden Werten enden: :values.', - 'doesnt_start_with' => ':attribute darf nicht mit folgenden Werten beginnen: :values.', - 'email' => ':attribute muss eine gültige E-Mail-Adresse sein.', - 'ends_with' => ':attribute muss mit einem der folgenden Werte enden: :values.', - 'enum' => 'Die gewählte Option bei :attribute ist ungültig.', - 'exists' => ':attribute existiert bereits.', - 'file' => ':attribute muss eine Datei sein.', - 'filled' => ':attribute darf nicht leer sein.', - 'gt' => [ - 'array' => ':attribute muss mehr als :value Einträge enthalten.', - 'file' => ':attribute muss größer als :value Kilobytes sein.', - 'numeric' => ':attribute muss größer als :value sein.', - 'string' => ':attribute muss länger als :value Zeichen sein.', - ], - 'gte' => [ - 'array' => ':attribute muss mindestens :value Einträge enthalten.', - 'file' => ':attribute muss mindestens :value Kilobytes groß sein.', - 'numeric' => ':attribute muss mindestens :value betragen.', - 'string' => ':attribute muss mindestens :value Zeichen lang sein.', - ], - 'image' => ':attribute muss ein Bild sein.', - 'in' => ':attribute ist ungültig.', - 'in_array' => ':attribute muss in :other enthalten sein.', - 'integer' => ':attribute muss eine ganze Zahl sein.', - 'ip' => ':attribute muss eine gültige IP-Adresse sein.', - 'ipv4' => ':attribute muss eine gültige IPv4-Adresse sein.', - 'ipv6' => ':attribute muss eine gültige IPv6-Adresse sein.', - 'json' => ':attribute muss ein gültiges JSON sein.', - 'lowercase' => ':attribute darf nur Kleinbuchstaben enthalten.', - 'lt' => [ - 'array' => ':attribute darf maximal :value Einträge enthalten.', - 'file' => ':attribute muss kleiner als :value Kilobytes sein.', - 'numeric' => ':attribute muss kleiner als :value sein.', - 'string' => ':attribute muss kürzer als :value Zeichen sein.', - ], - 'lte' => [ - 'array' => ':attribute darf maximal :value Einträge enthalten.', - 'file' => ':attribute darf höchstens :value Kilobytes groß sein.', - 'numeric' => ':attribute darf maximal :value betragen.', - 'string' => ':attribute darf maximal :value Zeichen lang sein.', - ], - 'mac_address' => ':attribute muss eine gültige MAC-Adresse sein.', - 'max' => [ - 'array' => ':attribute darf maximal :max Einträge enthalten.', - 'file' => ':attribute darf höchstens :max Kilobytes groß sein.', - 'numeric' => ':attribute darf maximal :max betragen.', - 'string' => ':attribute darf maximal :max Zeichen lang sein.', - ], - 'max_digits' => ':attribute darf maximal :max Ziffern enthalten.', - 'mimes' => ':attribute muss eine Datei vom Typ :values sein.', - 'mimetypes' => ':attribute muss eine Datei im Format :values sein.', - 'min' => [ - 'array' => ':attribute muss mindestens :min Einträge enthalten.', - 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', - 'numeric' => ':attribute muss mindestens :min betragen.', - 'string' => ':attribute muss mindestens :min Zeichen enthalten.', - ], - 'min_digits' => ':attribute muss mindestens :min Ziffern enthalten.', - 'missing' => ':attribute darf nicht angegeben werden.', - 'missing_if' => 'Das Feld :attribute muss fehlen, wenn :other „:value“ ist.', - 'missing_unless' => 'Das Feld :attribute muss fehlen, außer :other ist :value.', - 'missing_with' => 'Das Feld :attribute muss fehlen, wenn :values vorhanden ist.', - 'missing_with_all' => 'Das Feld :attribute muss fehlen, wenn :values vorhanden sind.', - 'multiple_of' => ':attribute muss ein Vielfaches von :value sein.', - 'not_in' => 'Die Auswahl :attribute ist ungültig.', - 'not_regex' => ':attribute hat ein ungültiges Format.', - 'numeric' => ':attribute muss eine Zahl sein.', - 'password' => [ - 'letters' => ':attribute muss mindestens einen Buchstaben enthalten.', - 'mixed' => ':attribute muss mindestens einen Klein- und einen Großbuchstaben enthalten.', - 'numbers' => ':attribute muss mindestens eine Zahl enthalten.', - 'symbols' => ':attribute muss mindestens ein Sonderzeichen enthalten.', - 'uncompromised' => 'Das :attribute wurde in einem Datenleck gefunden. Bitte wählen Sie ein anderes :attribute.', - ], - 'present' => ':attribute muss vorhanden sein.', - 'prohibited' => ':attribute darf nicht angegeben werden.', - 'prohibited_if' => ':attribute darf nicht angegeben werden, wenn :other ":value" ist.', - 'prohibited_unless' => ':attribute darf nur angegeben werden, wenn :other den Wert ":values" hat.', - 'prohibits' => ':attribute darf nicht gemeinsam mit :other angegeben werden.', - 'regex' => ':attribute hat ein ungültiges Format.', - 'required' => ':attribute ist ein Pflichtfeld.', - 'required_array_keys' => ':attribute muss Einträge für folgende Werte enthalten: :values.', - 'required_if' => ':attribute ist erforderlich, wenn :other ":value" ist.', - 'required_if_accepted' => ':attribute ist erforderlich, wenn :other akzeptiert wird.', - 'required_unless' => ':attribute ist erforderlich, außer wenn :other den Wert ":values" hat.', - 'required_with' => ':attribute ist erforderlich, wenn :values vorhanden ist.', - 'required_with_all' => ':attribute ist erforderlich, wenn alle Felder :values ausgefüllt sind.', - 'required_without' => ':attribute ist erforderlich, wenn :values nicht vorhanden ist.', - 'required_without_all' => ':attribute ist erforderlich, wenn keines der Felder :values ausgefüllt ist.', - 'same' => ':attribute muss mit :other übereinstimmen.', - 'size' => [ - 'array' => ':attribute muss genau :size Einträge enthalten.', - 'file' => ':attribute muss :size Kilobytes groß sein.', - 'numeric' => ':attribute muss genau :size betragen.', - 'string' => ':attribute muss genau :size Zeichen lang sein.', - ], - 'starts_with' => ':attribute muss mit einem der folgenden Werte beginnen: :values.', - 'string' => ':attribute muss ein Text sein.', - 'timezone' => ':attribute muss eine gültige Zeitzone sein.', - 'unique' => ':attribute wurde bereits verwendet.', - 'uploaded' => ':attribute konnte nicht hochgeladen werden.', - 'uppercase' => ':attribute darf nur Großbuchstaben enthalten.', - 'url' => ':attribute muss eine gültige URL sein.', - 'ulid' => ':attribute muss eine gültige ULID sein.', - 'uuid' => ':attribute muss eine gültige UUID sein.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | 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' => 'Alter', - 'body' => 'Inhalt', - 'cell' => 'Zelle', - 'city' => 'Stadt', - 'country' => 'Land', - 'date' => 'Datum', - 'day' => 'Tag', - 'excerpt' => 'Zusammenfassung', - 'first_name' => 'Vorname', - 'gender' => 'Geschlecht', - 'marital_status' => 'Familienstand', - 'profession' => 'Beruf', - 'nationality' => 'Nationalität', - 'hour' => 'Stunde', - 'last_name' => 'Nachname', - 'message' => 'Nachricht', - 'minute' => 'Minute', - 'mobile' => 'Handynummer', - 'month' => 'Monat', - 'name' => 'Name', - 'zipcode' => 'Postleitzahl', - 'company_name' => 'Firmenname', - 'neighborhood' => 'Stadtteil', - 'number' => 'Nummer', - 'password' => 'Passwort', - 'phone' => 'Telefonnummer', - 'second' => 'Sekunde', - 'sex' => 'Geschlecht', - 'state' => 'Bundesland', - 'street' => 'Straße', - 'subject' => 'Betreff', - 'text' => 'Text', - 'time' => 'Zeit', - 'title' => 'Titel', - 'username' => 'Benutzername', - 'year' => 'Jahr', - 'description' => 'Beschreibung', - 'password_confirmation' => 'Passwort bestätigen', - 'current_password' => 'Aktuelles Passwort', - 'complement' => 'Zusatz', - 'modality' => 'Modalität', - 'category' => 'Kategorie', - 'blood_type' => 'Blutgruppe', - 'birth_date' => 'Geburtsdatum', - ], -]; diff --git a/lang/en/api_tokens.php b/lang/en/api_tokens.php new file mode 100644 index 000000000..7324ea6b4 --- /dev/null +++ b/lang/en/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/en/auth.php similarity index 69% rename from lang/zh_TW/auth.php rename to lang/en/auth.php index 74b841287..6598e2c06 100644 --- a/lang/zh_TW/auth.php +++ b/lang/en/auth.php @@ -13,8 +13,8 @@ | */ - 'failed' => '您輸入的帳號密碼與系統記錄不符。', - 'password' => '您輸入的密碼不正確。', - 'throttle' => '登入嘗試次數太多,請於 :seconds 秒後再試。', + 'failed' => '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/en/dashboard.php b/lang/en/dashboard.php new file mode 100644 index 000000000..14e843caa --- /dev/null +++ b/lang/en/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/en/enums.php b/lang/en/enums.php new file mode 100644 index 000000000..c1ff432af --- /dev/null +++ b/lang/en/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/en/errors.php b/lang/en/errors.php new file mode 100644 index 000000000..9287fe21a --- /dev/null +++ b/lang/en/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/en/general.php b/lang/en/general.php new file mode 100644 index 000000000..41f3add2c --- /dev/null +++ b/lang/en/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/en/results.php b/lang/en/results.php new file mode 100644 index 000000000..a50b85022 --- /dev/null +++ b/lang/en/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/en/settings.php b/lang/en/settings.php new file mode 100644 index 000000000..31933b420 --- /dev/null +++ b/lang/en/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/en/settings/data_integration.php b/lang/en/settings/data_integration.php new file mode 100644 index 000000000..0f3887671 --- /dev/null +++ b/lang/en/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/en/settings/notifications.php b/lang/en/settings/notifications.php new file mode 100644 index 000000000..77f779529 --- /dev/null +++ b/lang/en/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/en/settings/thresholds.php b/lang/en/settings/thresholds.php new file mode 100644 index 000000000..6746d607b --- /dev/null +++ b/lang/en/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/en/tools.php b/lang/en/tools.php new file mode 100644 index 000000000..f24f227c4 --- /dev/null +++ b/lang/en/tools.php @@ -0,0 +1,6 @@ + 'Ookla servers', +]; diff --git a/lang/en/users.php b/lang/en/users.php new file mode 100644 index 000000000..e1a2db217 --- /dev/null +++ b/lang/en/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/es_ES/auth.php b/lang/es_ES/auth.php deleted file mode 100644 index a6e861a77..000000000 --- a/lang/es_ES/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - 'Estas credenciales no coinciden con nuestros registros.', - 'password' => 'La contraseña proporcionada es incorrecta.', - 'throttle' => 'Demasiados intentos de acceso. Por favor, inténtelo de nuevo en :seconds segundos.', - -]; diff --git a/lang/es_ES/pagination.php b/lang/es_ES/pagination.php deleted file mode 100644 index f8f044e19..000000000 --- a/lang/es_ES/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Anterior', - 'next' => 'Siguiente »', - -]; diff --git a/lang/es_ES/passwords.php b/lang/es_ES/passwords.php deleted file mode 100644 index 488763598..000000000 --- a/lang/es_ES/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '¡Su contraseña ha sido restablecida!', - 'sent' => '¡Hemos enviado por correo electrónico el enlace para restablecer su contraseña!', - 'password' => 'La contraseña y la confirmación deben coincidir y contener al menos seis caracteres.', - -]; diff --git a/lang/es_ES/validation.php b/lang/es_ES/validation.php deleted file mode 100644 index 74b244c43..000000000 --- a/lang/es_ES/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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' => 'celular', - 'city' => 'ciudad', - 'country' => 'país', - 'date' => 'fecha', - 'day' => 'día', - 'excerpt' => 'resumen', - '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 la empresa', - 'neighborhood' => 'vecindario', - 'number' => 'número', - 'password' => 'contraseña', - 'phone' => 'teléfono', - 'second' => 'segundo', - 'sex' => 'sexo', - 'state' => 'estado', - 'street' => 'calle', - 'subject' => 'asunto', - 'text' => 'texto', - 'time' => 'hora', - 'title' => 'título', - 'username' => '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/auth.php b/lang/fr_FR/auth.php deleted file mode 100644 index 4cc78b5cf..000000000 --- a/lang/fr_FR/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - 'Ces crédentials ne correspondent pas à nos archives.', - 'password' => 'Le mot de passe fourni est incorrect.', - 'throttle' => 'Trop de tentatives de connexion échouées. Veuillez réessayer dans :seconds secondes.', - -]; diff --git a/lang/fr_FR/pagination.php b/lang/fr_FR/pagination.php deleted file mode 100644 index 8eff37464..000000000 --- a/lang/fr_FR/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Précédent', - 'next' => 'Suivant »', - -]; diff --git a/lang/fr_FR/passwords.php b/lang/fr_FR/passwords.php deleted file mode 100644 index e570f50a5..000000000 --- a/lang/fr_FR/passwords.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Votre mot de passe a été réinitialisé!', - 'sent' => 'Nous vous avons envoyé un email contenant votre lien de réinitialisation!', - 'password' => 'Le mot de passe et le mot de passe de confirmation doivent contenir au moins 6 caractères.', - 'throttled' => 'Veuillez attendre avant de réessayer.', - 'token' => 'Le jeton de réinitialisation du mot de passe n\'est pas valide.', - 'user' => 'Aucun email trouvé pour cette adresse.', - -]; diff --git a/lang/fr_FR/validation.php b/lang/fr_FR/validation.php deleted file mode 100644 index 2803207d4..000000000 --- a/lang/fr_FR/validation.php +++ /dev/null @@ -1,230 +0,0 @@ - 'Le champ :attribute doit être valide.', - 'accepted_if' => 'Le champ :attribute doit être accepté lorsque :other est :value.', - 'active_url' => 'Le champ :attribute doit être une URL valide.', - 'after' => 'Le champ :attribute doit être une date postérieure à :date.', - 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale à :date.', - 'alpha' => 'Le champ :attribute ne doit contenir que des lettres.', - 'alpha_dash' => 'Le champ :attribute ne doit contenir que des lettres, des chiffres, des tirets ou underscore.', - 'alpha_num' => 'Le champ :attribute ne doit contenir que des lettres et des chiffres.', - 'array' => 'Le champ :attribute doit être un tableau.', - 'ascii' => 'Le champ :attribute ne doit contenir que des caractères alphanumériques ou des symboles ascii.', - 'before' => 'Le champ :attribute doit être une date antérieure à :date.', - 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale à :date.', - 'between' => [ - 'array' => 'Le champ :attribute doit contenir entre :min et :max elements.', - 'file' => 'Le champ :attribute doit être compris entre :min et :max kilo-octets.', - 'numeric' => 'Le champ :attribute doit être comprise entre :min et :max.', - 'string' => 'Le champ :attribute doit contenir entre :min et :max caractères.', - ], - 'boolean' => 'Le champ :attribute doit être vrai ou faux.', - 'can' => 'Le champ :attribute contient une valeur non autorisée.', - 'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.', - 'current_password' => 'Le mot de passe est incorrect.', - 'date' => 'Le champ :attribute doit être une date valide.', - 'date_equals' => 'Le champ :attribute doit être une date égale à :date.', - 'date_format' => 'Le champ :attribute doit correspondre au format :format.', - 'decimal' => 'Le champ :attribute doit avoir :decimal chiffres décimaux.', - 'declined' => 'Le champ :attribute doit être refusé.', - 'declined_if' => 'Le champ :attribute doit être rejeté lorsque :other est :value.', - 'different' => 'Le champ :attribute et :other doivent être différents.', - 'digits' => 'Le champ :attribute doit être composé de :digits chiffres.', - 'digits_between' => 'Le champ :attribute doit être compris entre :min et :max.', - 'dimensions' => 'Le champ :attribute taille de la photo non valide.', - 'distinct' => 'Le champ :attribute a une valeur dupliquée.', - 'doesnt_end_with' => 'Le champ :attribute ne doit pas se terminer par l\'un des éléments suivants: :values.', - 'doesnt_start_with' => 'Le champ :attribute ne doit pas commencer par l\'un des éléments suivants: :values.', - 'email' => 'Le champ :attribute doit être une adresse email valide.', - 'ends_with' => 'Le champ :attribute doit se terminer par l\'un des éléments suivants: :values.', - 'enum' => ':attribute séléctionné non valide.', - 'exists' => ':attribute existe déjà.', - 'file' => 'Le champ :attribute doit être un fichier.', - 'filled' => 'Le champ :attribute doit contenir une valeur.', - 'gt' => [ - 'array' => 'Le champ :attribute doit contenir plus de :value éléments.', - 'file' => 'Le champ :attribute doit être supérieur à :value kilo-octets.', - 'numeric' => 'Le champ :attribute doit être supérieur à :value.', - 'string' => 'Le champ :attribute doit faire plus de :value caractères.', - ], - 'gte' => [ - 'array' => 'Le champ :attribute doit contenir au moins :value éléments.', - 'file' => 'Le champ :attribute doit être supérieur ou égal à :value kilo-octets.', - 'numeric' => 'Le champ :attribute doit être supérieur ou égal à :value.', - 'string' => 'Le champ :attribute doit être supérieur ou égal à :value caractères.', - ], - 'image' => 'Le champ :attribute doit être une photo.', - 'in' => ':attribute séléctionné non valide.', - 'in_array' => 'Le champ :attribute doit être contenant dans :other.', - 'integer' => 'Le champ :attribute doit être un nombre entier.', - 'ip' => 'Le champ :attribute doit être une adresse IP valide.', - 'ipv4' => 'Le champ :attribute doit être une adresse IPv4 valide.', - 'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.', - 'json' => 'Le champ :attribute doit être une string JSON valide.', - 'lowercase' => 'Le champ :attribute doit être en minuscule.', - 'lt' => [ - 'array' => 'Le champ :attribute doit contenir moins de :value elements.', - 'file' => 'Le champ :attribute doit être inférieur à :value kilo-octets.', - 'numeric' => 'Le champ :attribute doit être inférieur à :value.', - 'string' => 'Le champ :attribute doit faire moins de :value caractères.', - ], - 'lte' => [ - 'array' => 'Le champ :attribute ne doit pas comporter plus de :value éléments.', - 'file' => 'Le champ :attribute doit être inférieur ou égal à :value kilo-octets.', - 'numeric' => 'Le champ :attribute doit être inférieur ou égal à :value.', - 'string' => 'Le champ :attribute doit être inférieur ou égal à :value caractères.', - ], - 'mac_address' => 'Le champ :attribute doit être une adresse MAC valide.', - 'max' => [ - 'array' => 'Le champ :attribute ne doit pas comporter plus de :max éléments.', - 'file' => 'Le champ :attribute ne doit pas être supérieur à :max kilo-octets.', - 'numeric' => 'Le champ :attribute ne doit pas être supérieur à :max.', - 'string' => 'Le champ :attribute non ne doit pas faire plus de :max caractères.', - ], - 'max_digits' => 'Le champ :attribute ne peut avoir plus de :max chiffres.', - 'mimes' => 'Le champ :attribute doit être un fichier de type: :values.', - 'mimetypes' => 'Le champ :attribute doit être un fichier de type: :values.', - 'min' => [ - 'array' => 'Le champ :attribute doit contenir au moins :min éléments.', - 'file' => 'Le champ :attribute doit être au minimum de :min kilo-octets.', - 'numeric' => 'Le champ :attribute doit être au moins :min.', - 'string' => 'Le champ :attribute deve contenir au moins :min caractères.', - ], - 'min_digits' => 'Le champ :attribute doit avoir au moins :min chiffres.', - 'missing' => 'Le champ :attribute doit être manquant.', - 'missing_if' => 'Le champ :attribute doit être absent lorsque :other est :value.', - 'missing_unless' => 'Le champ :attribute doit être manquant, sauf si :other est :value.', - 'missing_with' => 'Le champ :attribute doit être absent lorsque :values est présent.', - 'missing_with_all' => 'Le champ :attribute doit être manquant lorsque :values sont présentes.', - 'multiple_of' => 'Le champ :attribute doit être un multiple de :value.', - 'not_in' => ':attribute séléctionné non valide.', - 'not_regex' => 'Le format du champ :attribute est invalide.', - 'numeric' => 'Le champ :attribute doit être numérique.', - 'password' => [ - 'letters' => 'Le champ :attribute doit cotenir au moins une lettre.', - 'mixed' => 'Le champ :attribute doit conteniur au moins un caractère minuscule et un caractère majuscule.', - 'numbers' => 'Le champ :attribute doit contenir au moins un chiffre.', - 'symbols' => 'Le champ :attribute doit contenir au moins un symbole spécial.', - 'uncompromised' => 'L\':attribute est apparu dans une fuite de données. Veuillez choisir un autre :attribut.', - ], - 'present' => 'Le champ :attribute doit être présent.', - 'prohibited' => 'Le champ :attribute est interdit.', - 'prohibited_if' => 'Le champ :attribute est interdit quand :other est :value.', - 'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other ne figure dans :values.', - 'prohibits' => 'Le champ :attribute interdit à :other d\'être présent.', - 'regex' => 'Le format du champ :attribute est invalide.', - 'required' => 'Le champ :attribute est obligatoire.', - 'required_array_keys' => 'Le champ :attribute doit contenir des entrées pour: :values.', - 'required_if' => 'Le champ :attribute est obligatoire quand :other est :value.', - 'required_if_accepted' => 'Le champ :attribute est nécessaire lorsque :other est accepté.', - 'required_unless' => 'Le champ :attribute est obligatoire, sauf si :other figure dans :values.', - 'required_with' => 'Le champ :attribute est obligatoire lorsque :values est présent.', - 'required_with_all' => 'Le champ :attribute est obligatoire lorsque :values est présent.', - 'required_without' => 'Le champ :attribute est requis lorsque :values n\'est pas présent', - 'required_without_all' => 'Le champ :attribute est nécessaire lorsqu\'aucune des valeurs :values n\'est présente.', - 'same' => 'Le champ :attribute doit correspondre à :other.', - 'size' => [ - 'array' => 'Le champ :attribute doit contenir des :size éléments.', - 'file' => 'Le champ :attribute doit être :size kilo-octets.', - 'numeric' => 'Le champ :attribute doit être :size.', - 'string' => 'Le champ :attribute doit faire :size caractères.', - ], - 'starts_with' => 'Le champ :attribute doit commencer avec: :values.', - 'string' => 'Le champ :attribute doit être une chaine de caractères.', - 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', - 'unique' => 'Il :attribute doit être unqieu.', - 'uploaded' => 'Il :attribute n\'a pas pu être téléchargé.', - 'uppercase' => 'Le champ :attribute doit être en majuscule.', - 'url' => 'Le champ :attribute doit être une URL valide.', - 'ulid' => 'Le champ :attribute doit être un ULID valide.', - 'uuid' => 'Le champ :attribute doit être un UUID valide.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | 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' => 'age', - 'body' => 'contenu', - 'cell' => 'cellule', - 'city' => 'ville', - 'country' => 'pays', - 'date' => 'date', - 'day' => 'jour', - 'excerpt' => 'résumé', - 'first_name' => 'prénom', - 'gender' => 'sexe', - 'marital_status' => 'situation familliale', - 'profession' => 'profession', - 'nationality' => 'nationalité', - 'hour' => 'heure', - 'last_name' => 'nom de famille', - 'message' => 'message', - 'minute' => 'minute', - 'mobile' => 'mobile', - 'month' => 'mois', - 'name' => 'nom', - 'zipcode' => 'code postal', - 'company_name' => 'entreprise', - 'neighborhood' => 'quartier', - 'number' => 'numéro', - 'password' => 'mot de passe', - 'phone' => 'téléphone', - 'second' => 'seconde', - 'sex' => 'sexe', - 'state' => 'région', - 'street' => 'rue', - 'subject' => 'sujet', - 'text' => 'texte', - 'time' => 'temps', - 'title' => 'titre', - 'username' => 'login', - '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/hr_HR/auth.php b/lang/hr_HR/auth.php deleted file mode 100644 index adad2012c..000000000 --- a/lang/hr_HR/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - 'A megadott hitelesítési adatok nem egyeznek.', - 'password' => 'A megadott jelszó hibás.', - 'throttle' => 'Túl sok bejelentkezési kísérlet. Kérlek, várj :seconds másodpercet, mielőtt újra próbálkozol.', - -]; diff --git a/lang/hr_HR/pagination.php b/lang/hr_HR/pagination.php deleted file mode 100644 index f5a6700fb..000000000 --- a/lang/hr_HR/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Prethodno', - 'next' => 'Sljedeće »', - -]; diff --git a/lang/hr_HR/passwords.php b/lang/hr_HR/passwords.php deleted file mode 100644 index cd56761c9..000000000 --- a/lang/hr_HR/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - 'Tvoja lozinka je uspješno resetirana!', - 'sent' => 'Poslali smo ti poveznicu za poništavanje lozinke putem e-pošte!', - 'throttled' => 'Molimo pričekaj malo prije nego što pokušaš ponovno.', - 'token' => 'Token za resetiranje lozinke je nevažeći ili je istekao.', - 'user' => 'Ne postoji korisnik s tom e-mail adresom.', - -]; diff --git a/lang/hr_HR/translations.php b/lang/hr_HR/translations.php deleted file mode 100644 index b538615a0..000000000 --- a/lang/hr_HR/translations.php +++ /dev/null @@ -1,290 +0,0 @@ - 'Admin', - 'User' => 'Korisnik', - 'abilities' => 'Sposobnosti', - 'active_tokens' => 'Aktivni tokeni', - 'all_tokens' => 'Svi tokeni', - 'api_token' => 'API token', - 'api_tokens' => 'API tokeni', - 'average' => 'Prosjek', - 'average_ms' => 'Prosjek (ms)', - 'Benchmarking' => 'Benchmarking', - 'bucket' => 'Kanta', - 'Checking' => 'Provjera', - 'comment' => 'Komentar', - 'comments' => 'Komentari', - 'Completed' => 'Završeno', - 'create_api_token' => 'Kreiraj API token', - 'created_at' => 'Kreirano', - 'created_from' => 'Kreirano od', - 'created_until' => 'Kreirano do', - 'cron_invalid' => 'Nevažeći cron izraz', - 'data_integration' => 'Integracija podataka', - 'database' => 'Baza podataka', - 'database_description' => 'Obavijesti poslane na ovaj kanal prikazuju se pod ikonom 🔔 u zaglavlju.', - 'details' => 'Detalji', - 'dashboard' => 'Nadzorna ploča', - 'discord' => 'Discord', - 'documentation' => 'Dokumentacija', - 'donate' => 'Doniraj', - 'download' => 'Preuzimanje', - 'download_latency' => 'Kašnjenje preuzimanja', - 'download_latency_high' => 'Visoko kašnjenje preuzimanja', - 'download_latency_iqm' => 'IQM kašnjenje preuzimanja', - 'download_latency_jitter' => 'Jitter kašnjenja preuzimanja', - 'download_latency_low' => 'Nisko kašnjenje preuzimanja', - 'download_mbps' => 'Preuzimanje (Mbps)', - 'download_ms' => 'Preuzimanje (ms)', - 'email' => 'Email', - 'email_address' => 'Email adresa', - 'enable' => 'Omogući', - 'enable_database_notifications' => 'Omogući obavijesti baze podataka', - 'enable_discord_webhook_notifications' => 'Omogući Discord webhook obavijesti', - 'enable_mail_notifications' => 'Omogući email obavijesti', - 'enable_pushover_webhook_notifications' => 'Omogući Pushover webhook obavijesti', - 'enable_telegram' => 'Omogući Telegram obavijesti', - 'enable_webhook_notifications' => 'Omogući webhook obavijesti', - 'error_message' => 'Poruka o grešci', - 'expired_tokens' => 'Istekli tokeni', - 'expires_at' => 'Ističe', - 'expires_at_helper_text' => 'Ostavite prazno ako ne želite datum isteka', - 'export_all_results' => 'Izvezi sve rezultate', - 'export_all_results_description' => 'Izvest će se svi stupci za sve rezultate.', - 'export_completed' => 'Izvoz završen, :count :rows izvezeno.', - 'export_current_results' => 'Izvezi trenutne rezultate', - 'Failed' => 'Neuspjelo', - 'failed_export' => ':count :rows nije uspjelo izvesti.', - 'Faker' => 'faker', - 'faster' => 'Brže', - 'general_settings' => [ - 'label' => 'Opće postavke', - 'description' => 'Ovdje se mogu postaviti opće postavke aplikacije.', - 'app_settings' => 'Postavke aplikacije', - 'speedtest_settings' => 'Postavke testa brzine', - 'api_settings' => 'Api postavke', - 'app_name' => 'Naziv aplikacije', - 'asset_url' => 'URL resursa', - 'app_timezone' => 'Vremenska zona aplikacije', - 'chart_begin_at_zero' => 'Graf počinje od nule', - 'chart_datetime_format' => 'Format datuma i vremena za graf', - 'datetime_format' => 'Format datuma i vremena', - 'display_timezone' => 'Prikazana vremenska zona', - 'public_dashboard' => 'Javna nadzorna ploča', - 'speedtest_skip_ips' => 'Speedtest preskočeni IP-ovi', - 'speedtest_schedule' => 'Raspored speedtesta', - 'speedtest_schedule_description' => 'Unesite valjane cron izraze. Primjer: * * * * * pokreće se svake minute.', - 'speedtest_servers' => 'Speedtest poslužitelji', - 'speedtest_blocked_servers' => 'Blokirani speedtest poslužitelji', - 'speedtest_interface' => 'Speedtest sučelje', - 'speedtest_checkinternet_url' => 'Speedtest URL za provjeru interneta', - 'threshold_enabled' => 'Prag omogućeno', - 'threshold_download' => 'Prag preuzimanja', - 'threshold_upload' => 'Prag slanja', - 'threshold_ping' => 'Prag pinga', - 'prune_results_older_than' => 'Izbriši rezultate starije od', - 'api_rate_limit' => 'API ograničenje brzine', - - ], - 'gotify' => 'Gotify', - 'gotify_enabled' => 'Omogući Gotify webhook obavijesti', - 'healthcheck_enabled' => 'Omogući healthcheck.io webhook obavijesti', - 'healthcheck_io' => 'Healthcheck.io', - 'healthy' => 'Zdravo', - 'high' => 'Visoko', - 'high_ms' => 'Visoko (ms)', - 'id' => 'ID', - 'infoluxdb' => 'InfluxDB v2', - 'infoluxdb_description' => 'Ako je omogućeno, novi Speedtest rezultati će biti poslani u InfluxDB.', - 'ip_address' => 'IP adresa', - 'iqm' => 'IQM', - 'isp' => 'ISP', - 'jitter' => 'Jitter', - 'last_24h' => 'Posljednjih 24 sata', - 'last_month' => 'Prošli mjesec', - 'last_used_at' => 'Zadnje korištenje', - 'last_week' => 'Prošli tjedan', - 'latest_download' => 'Zadnje preuzimanje', - 'latest_ping' => 'Zadnji ping', - 'latest_upload' => 'Zadnje slanje', - 'links' => 'Linkovi', - 'list_servers' => 'Popis servera', - 'list_servers_description' => 'Token dobiva ovlaštenje za popis servera.', - 'low' => 'Nisko', - 'low_ms' => 'Nisko (ms)', - 'mail' => 'E-mail', - 'message' => 'Poruka', - 'ms' => 'ms', - 'name' => 'Ime', - 'next_speedtest_at' => 'Sljedeći speedtest: ', - 'no' => 'Ne', - 'no_speedtests_scheduled' => 'Nema zakazanih speedtestova.', - 'notifications' => [ - 'label' => 'Obavijesti', - 'database' => [ - 'ping' => 'Kažem: ping', - 'pong' => 'Ti kažeš: pong', - 'received' => 'Primljena testna obavijest baze podataka!', - 'sent' => 'Poslana testna obavijest baze podataka.', - ], - 'discord' => [ - 'add' => 'Dodaj Discord URL-ove!', - 'sent' => 'Poslana testna Discord obavijest.', - 'payload' => '👋 Testiramo Discord kanal za obavijesti.', - ], - 'health_check' => [ - 'add' => 'Dodaj HealthCheck.io URL-ove!', - 'sent' => 'Poslana testna HealthCheck.io obavijest.', - 'payload' => '👋 Testiramo HealthCheck.io kanal za obavijesti.', - ], - 'gotfy' => [ - 'add' => 'Dodaj Gotify URL-ove!', - 'sent' => 'Poslana testna Gotify obavijest.', - 'payload' => '👋 Testiramo Gotify kanal za obavijesti.', - ], - 'mail' => [ - 'add' => 'Dodaj email primatelje!', - 'sent' => 'Poslana testna email obavijest.', - ], - 'ntfy' => [ - 'add' => 'Dodaj ntfy URL-ove!', - 'sent' => 'Poslana testna ntfy obavijest.', - 'payload' => '👋 Testiramo ntfy kanal za obavijesti.', - ], - 'pushover' => [ - 'add' => 'Dodaj Pushover URL-ove!', - 'sent' => 'Poslana testna Pushover obavijest.', - 'payload' => '👋 Testiramo Pushover kanal za obavijesti.', - ], - 'slack' => [ - 'add' => 'Dodaj Slack URL-ove!', - 'sent' => 'Poslana testna Slack obavijest.', - 'payload' => '👋 Testiramo Slack kanal za obavijesti.', - ], - 'telegram' => [ - 'add' => 'Dodaj Telegram primatelje!', - 'sent' => 'Poslana testna Telegram obavijest.', - ], - 'webhook' => [ - 'add' => 'Dodaj webhook URL-ove!', - 'sent' => 'Poslana testna webhook obavijest.', - 'payload' => 'Testiranje webhook obavijesti', - ], - ], - 'notify_on_every_speedtest_run' => 'Obavijesti za svaki speedtest', - 'notify_on_threshold_failures' => 'Obavijesti kod prekoračenja praga', - 'ntfy' => 'ntfy', - 'ntfy_enabled' => 'Omogući ntfy webhook obavijesti', - 'only_healthy_speedtests' => 'Samo zdravi speedtestovi', - 'only_manual_speedtests' => 'Samo ručni speedtestovi', - 'only_scheduled_speedtests' => 'Samo zakazani speedtestovi', - 'only_unhealthy_speedtests' => 'Samo neispravni speedtestovi', - 'Ookla' => 'Ookla', - 'ookla_error' => 'Došlo je do greške pri listanju speedtest servera, provjerite logove.', - 'options' => 'Opcije', - 'org' => 'Organizacija', - 'packet_loss' => 'Gubitak paketa', - 'password' => 'Lozinka', - 'password_confirmation' => 'Potvrda lozinke', - 'password_placeholder' => 'Lozinka za Basic Auth (opcionalno)', - 'ping' => 'Ping', - 'ping_details' => 'Detalji pinga', - 'ping_high' => 'Visoki ping', - 'ping_jitter' => 'Ping jitter', - 'ping_low' => 'Niski ping', - 'ping_ms' => 'Ping (ms)', - 'platform' => 'Platforma', - 'pushover' => 'Pushover', - 'pushover_webhooks' => 'Pushover webhookovi', - 'read_results' => 'Čitanje rezultata', - 'read_results_description' => 'Token dobiva ovlaštenje za čitanje rezultata i statistika.', - 'recipients' => 'Primatelji', - 'results' => 'Rezultati', - 'result_overview' => 'Pregled rezultata', - 'role' => 'Uloga', - 'row' => '{1} :count red|[2,*] :count redova', - 'run_speedtest' => 'Pokreni speedtest', - 'run_speedtest_description' => 'Token dobiva ovlaštenje za pokretanje speedtesta.', - 'running' => 'Pokreće se', - 'scheduled' => 'Zakazano', - 'sending_test_data_to_influxdb' => 'Slanje testnih podataka u InfluxDB', - 'server_&_metadata' => 'Server & metapodaci', - 'server_host' => 'Host servera', - 'server_id' => 'ID servera', - 'server_location' => 'Lokacija servera', - 'server_name' => 'Ime servera', - 'service' => 'Usluga', - 'settings' => 'Postavke', - 'Skipped' => 'Preskočeno', - 'slack' => 'Slack', - 'slack_enabled' => 'Omogući Slack webhook obavijesti', - 'slower' => 'Sporije', - 'speedtest_tracker' => 'speedtest-tracker', - 'Started' => 'Pokrenuto', - 'starting_bulk_data_write_to_influxdb' => 'Početak masovnog unosa podataka u InfluxDB', - 'status' => 'Status', - 'status_fix' => [ - 'confirm' => 'Želite li nastaviti?', - 'fail' => 'Naredba prekinuta.', - 'finished' => '✅ završeno!', - 'info_1' => 'Provjerava sve rezultate i popravlja status na „završeno” ili „neuspjelo” na osnovu podataka.', - 'info_2' => '📖 Pogledajte dokumentaciju: https://docs.speedtest-tracker.dev/other/commands', - ], - 'telegram' => 'Telegram', - 'telegram_chat_id' => 'Telegram chat ID', - 'telegram_disable_notification' => 'Šalji poruku tiho', - 'test_connection' => 'Testiraj vezu', - 'test_database_channel' => 'Testiraj kanal baze podataka', - 'test_discord_webhook' => 'Testiraj Discord webhook', - 'test_gotify_webhook' => 'Testiraj Gotify webhook', - 'test_healthcheck_webhook' => 'Testiraj healthcheck.io webhook', - 'test_mail_channel' => 'Testiraj email kanal', - 'test_ntfy_webhook' => 'Testiraj ntfy webhook', - 'test_pushover_webhook' => 'Testiraj Pushover webhook', - 'test_slack_webhook' => 'Testiraj Slack webhook', - 'test_telegram_channel' => 'Testiraj Telegram kanal', - 'test_webhook_channel' => 'Testiraj webhook kanal', - 'threshold_helper_text' => 'Obavijesti praga bit će poslane na /fail putanju u URL-u.', - 'thresholds' => 'Pragovi', - 'token' => 'Token', - 'token_created' => 'Token kreiran', - 'token_status' => 'Status tokena', - 'topic' => 'Tema', - 'triggers' => 'Okidači', - 'truncate' => 'Obriši', - 'truncate_results' => 'Obriši rezultate', - 'truncate_results_description' => 'Jeste li sigurni da želite obrisati sve rezultate? Ovo se ne može poništiti.', - 'update_comments' => 'Ažuriraj komentare', - 'updated_at' => 'Ažurirano', - 'update_available' => 'Dostupno ažuriranje!', - 'upload' => 'Slanje', - 'upload_latency' => 'Kašnjenje slanja', - 'upload_latency_high' => 'Visoko kašnjenje slanja', - 'upload_latency_jitter' => 'Jitter slanja', - 'upload_ms' => 'Slanje (ms)', - 'up_to_date' => 'Ažurirano', - 'url' => 'URL', - 'users' => 'Korisnici', - 'user_change' => [ - 'info' => 'Uloga korisnika ažurirana.', - 'password_updated_info' => 'Lozinka za :email ažurirana.', - 'what_is_password' => 'Koja je nova lozinka?', - 'what_is_the_email_address' => 'Koja je email adresa?', - 'what_role' => 'Koja uloga treba biti korisniku?', - ], - 'user_key' => 'Korisnički ključ', - 'username' => 'Korisničko ime', - 'username_placeholder' => 'Korisničko ime za Basic Auth (opcionalno)', - 'verify_ssl' => 'Provjeri SSL', - 'view_on_speedtest_net' => 'Pogledaj na Speedtest.net', - 'Waiting' => 'Čekanje', - 'webhook' => 'Webhook', - 'webhooks' => 'Webhookovi', - 'yes' => 'Da', - 'your_ntfy_server_url' => 'URL vašeg ntfy servera', - 'your_ntfy_topic' => 'Vaša ntfy tema', - 'your_pushover_api_token' => 'Vaš Pushover API token', - 'your_pushover_user_key' => 'Vaš Pushover korisnički ključ', - 'your_token' => 'Vaš token', -]; diff --git a/lang/hr_HR/validation.php b/lang/hr_HR/validation.php deleted file mode 100644 index 7d6b7345b..000000000 --- a/lang/hr_HR/validation.php +++ /dev/null @@ -1,230 +0,0 @@ - 'Polje :attribute mora biti prihvaćeno.', - 'accepted_if' => 'Polje :attribute mora biti prihvaćeno kada je :other jednako :value.', - 'active_url' => 'Polje :attribute nije valjani URL.', - 'after' => 'Polje :attribute mora biti datum nakon :date.', - 'after_or_equal' => 'Polje :attribute mora biti datum jednak ili nakon :date.', - 'alpha' => 'Polje :attribute može sadržavati samo slova.', - 'alpha_dash' => 'Polje :attribute može sadržavati samo slova, brojeve, crtice i donje crte.', - 'alpha_num' => 'Polje :attribute može sadržavati samo slova i brojeve.', - 'array' => 'Polje :attribute mora biti niz.', - 'ascii' => 'Polje :attribute može sadržavati samo ASCII znakove.', - 'before' => 'Polje :attribute mora biti datum prije :date.', - 'before_or_equal' => 'Polje :attribute mora biti datum jednak ili prije :date.', - 'between' => [ - 'array' => 'Polje :attribute mora imati između :min i :max stavki.', - 'file' => 'Polje :attribute mora biti između :min i :max kilobajta.', - 'numeric' => 'Polje :attribute mora biti između :min i :max.', - 'string' => 'Polje :attribute mora imati između :min i :max znakova.', - ], - 'boolean' => 'Polje :attribute mora biti istina ili laž.', - 'can' => 'Polje :attribute sadrži nevažeću vrijednost.', - 'confirmed' => 'Potvrda polja :attribute se ne podudara.', - 'current_password' => 'Unesena lozinka nije točna.', - 'date' => 'Polje :attribute nije valjani datum.', - 'date_equals' => 'Polje :attribute mora biti datum jednak :date.', - 'date_format' => 'Polje :attribute ne odgovara formatu :format.', - 'decimal' => 'Polje :attribute mora imati :decimal decimalnih mjesta.', - 'declined' => 'Polje :attribute mora biti odbijeno.', - 'declined_if' => 'Polje :attribute mora biti odbijeno kada je :other jednako ":value".', - 'different' => 'Polja :attribute i :other moraju biti različita.', - 'digits' => 'Polje :attribute mora imati :digits znamenki.', - 'digits_between' => 'Polje :attribute mora imati između :min i :max znamenki.', - 'dimensions' => 'Polje :attribute ima nevažeće dimenzije slike.', - 'distinct' => 'Polje :attribute ima dupliciranu vrijednost.', - 'doesnt_end_with' => 'Polje :attribute ne smije završavati sa: :values.', - 'doesnt_start_with' => 'Polje :attribute ne smije počinjati sa: :values.', - 'email' => 'Polje :attribute mora biti valjana email adresa.', - 'ends_with' => 'Polje :attribute mora završavati s jednom od sljedećih vrijednosti: :values.', - 'enum' => 'Odabrano polje :attribute nije važeće.', - 'exists' => 'Odabrano polje :attribute već postoji.', - 'file' => 'Polje :attribute mora biti datoteka.', - 'filled' => 'Polje :attribute mora imati vrijednost.', - 'gt' => [ - 'array' => 'Polje :attribute mora imati više od :value stavki.', - 'file' => 'Polje :attribute mora biti veće od :value kilobajta.', - 'numeric' => 'Polje :attribute mora biti veće od :value.', - 'string' => 'Polje :attribute mora biti dulje od :value znakova.', - ], - 'gte' => [ - 'array' => 'Polje :attribute mora imati najmanje :value stavki.', - 'file' => 'Polje :attribute mora biti najmanje :value kilobajta.', - 'numeric' => 'Polje :attribute mora biti najmanje :value.', - 'string' => 'Polje :attribute mora imati najmanje :value znakova.', - ], - 'image' => 'Polje :attribute mora biti slika.', - 'in' => 'Odabrano polje :attribute nije važeće.', - 'in_array' => 'Polje :attribute ne postoji u :other.', - 'integer' => 'Polje :attribute mora biti cijeli broj.', - 'ip' => 'Polje :attribute mora biti valjana IP adresa.', - 'ipv4' => 'Polje :attribute mora biti valjana IPv4 adresa.', - 'ipv6' => 'Polje :attribute mora biti valjana IPv6 adresa.', - 'json' => 'Polje :attribute mora biti valjani JSON.', - 'lowercase' => 'Polje :attribute može sadržavati samo mala slova.', - 'lt' => [ - 'array' => 'Polje :attribute mora imati manje od :value stavki.', - 'file' => 'Polje :attribute mora biti manje od :value kilobajta.', - 'numeric' => 'Polje :attribute mora biti manje od :value.', - 'string' => 'Polje :attribute mora biti kraće od :value znakova.', - ], - 'lte' => [ - 'array' => 'Polje :attribute ne smije imati više od :value stavki.', - 'file' => 'Polje :attribute ne smije biti veće od :value kilobajta.', - 'numeric' => 'Polje :attribute ne smije biti veće od :value.', - 'string' => 'Polje :attribute ne smije biti duže od :value znakova.', - ], - 'mac_address' => 'Polje :attribute mora biti valjana MAC adresa.', - 'max' => [ - 'array' => 'Polje :attribute ne smije imati više od :max stavki.', - 'file' => 'Polje :attribute ne smije biti veće od :max kilobajta.', - 'numeric' => 'Polje :attribute ne smije biti veće od :max.', - 'string' => 'Polje :attribute ne smije biti duže od :max znakova.', - ], - 'max_digits' => 'Polje :attribute ne smije imati više od :max znamenki.', - 'mimes' => 'Polje :attribute mora biti datoteka tipa: :values.', - 'mimetypes' => 'Polje :attribute mora biti datoteka tipa: :values.', - 'min' => [ - 'array' => 'Polje :attribute mora imati najmanje :min stavki.', - 'file' => 'Polje :attribute mora biti najmanje :min kilobajta.', - 'numeric' => 'Polje :attribute mora biti najmanje :min.', - 'string' => 'Polje :attribute mora imati najmanje :min znakova.', - ], - 'min_digits' => 'Polje :attribute mora imati najmanje :min znamenki.', - 'missing' => 'Polje :attribute mora biti odsutno.', - 'missing_if' => 'Polje :attribute mora biti odsutno kada je :other jednako ":value".', - 'missing_unless' => 'Polje :attribute mora biti odsutno osim ako je :other jednako ":value".', - 'missing_with' => 'Polje :attribute mora biti odsutno kada je prisutno :values.', - 'missing_with_all' => 'Polje :attribute mora biti odsutno kada su prisutna sva polja :values.', - 'multiple_of' => 'Polje :attribute mora biti višekratnik od :value.', - 'not_in' => 'Odabrano polje :attribute nije važeće.', - 'not_regex' => 'Format polja :attribute nije valjan.', - 'numeric' => 'Polje :attribute mora biti broj.', - 'password' => [ - 'letters' => 'Polje :attribute mora sadržavati barem jedno slovo.', - 'mixed' => 'Polje :attribute mora sadržavati barem jedno veliko i jedno malo slovo.', - 'numbers' => 'Polje :attribute mora sadržavati barem jedan broj.', - 'symbols' => 'Polje :attribute mora sadržavati barem jedan simbol.', - 'uncompromised' => 'Polje :attribute je kompromitirano u curenju podataka. Molimo odaberite drugo :attribute.', - ], - 'present' => 'Polje :attribute mora biti prisutno.', - 'prohibited' => 'Polje :attribute je zabranjeno.', - 'prohibited_if' => 'Polje :attribute je zabranjeno kada je :other jednako ":value".', - 'prohibited_unless' => 'Polje :attribute je zabranjeno osim ako je :other jednako ":values".', - 'prohibits' => 'Polje :attribute zabranjuje postojanje polja :other.', - 'regex' => 'Format polja :attribute nije valjan.', - 'required' => 'Polje :attribute je obavezno.', - 'required_array_keys' => 'Polje :attribute mora sadržavati ključeve: :values.', - 'required_if' => 'Polje :attribute je obavezno kada je :other jednako ":value".', - 'required_if_accepted' => 'Polje :attribute je obavezno kada je :other prihvaćeno.', - 'required_unless' => 'Polje :attribute je obavezno osim ako je :other jednako ":values".', - 'required_with' => 'Polje :attribute je obavezno kada je prisutno :values.', - 'required_with_all' => 'Polje :attribute je obavezno kada su prisutna sva polja :values.', - 'required_without' => 'Polje :attribute je obavezno kada nije prisutno :values.', - 'required_without_all' => 'Polje :attribute je obavezno kada nijedno od polja :values nije prisutno.', - 'same' => 'Polja :attribute i :other se moraju podudarati.', - 'size' => [ - 'array' => 'Polje :attribute mora sadržavati točno :size stavki.', - 'file' => 'Polje :attribute mora biti veličine :size kilobajta.', - 'numeric' => 'Polje :attribute mora biti :size.', - 'string' => 'Polje :attribute mora imati :size znakova.', - ], - 'starts_with' => 'Polje :attribute mora početi s jednom od sljedećih vrijednosti: :values.', - 'string' => 'Polje :attribute mora biti tekst.', - 'timezone' => 'Polje :attribute mora biti važeća vremenska zona.', - 'unique' => 'Polje :attribute već postoji.', - 'uploaded' => 'Učitavanje polja :attribute nije uspjelo.', - 'uppercase' => 'Polje :attribute može sadržavati samo velika slova.', - 'url' => 'Polje :attribute mora biti valjani URL.', - 'ulid' => 'Polje :attribute mora biti valjani ULID.', - 'uuid' => 'Polje :attribute mora biti valjani UUID.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | 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' => 'Adresa', - 'age' => 'Dob', - 'body' => 'Sadržaj', - 'cell' => 'Mobitel', - 'city' => 'Grad', - 'country' => 'Država', - 'date' => 'Datum', - 'day' => 'Dan', - 'excerpt' => 'Izvadak', - 'first_name' => 'Ime', - 'gender' => 'Spol', - 'marital_status' => 'Bračni status', - 'profession' => 'Zanimanje', - 'nationality' => 'Nacionalnost', - 'hour' => 'Sat', - 'last_name' => 'Prezime', - 'message' => 'Poruka', - 'minute' => 'Minuta', - 'mobile' => 'Broj mobitela', - 'month' => 'Mjesec', - 'name' => 'Ime', - 'zipcode' => 'Poštanski broj', - 'company_name' => 'Naziv tvrtke', - 'neighborhood' => 'Kvart', - 'number' => 'Broj', - 'password' => 'Lozinka', - 'phone' => 'Telefon', - 'second' => 'Sekunda', - 'sex' => 'Spol', - 'state' => 'Županija / Pokrajina', - 'street' => 'Ulica', - 'subject' => 'Predmet', - 'text' => 'Tekst', - 'time' => 'Vrijeme', - 'title' => 'Naslov', - 'username' => 'Korisničko ime', - 'year' => 'Godina', - 'description' => 'Opis', - 'password_confirmation' => 'Potvrda lozinke', - 'current_password' => 'Trenutna lozinka', - 'complement' => 'Dodatak', - 'modality' => 'Mod', - 'category' => 'Kategorija', - 'blood_type' => 'Krvna grupa', - 'birth_date' => 'Datum rođenja', - ], -]; diff --git a/lang/hu_HU/auth.php b/lang/hu_HU/auth.php deleted file mode 100644 index adad2012c..000000000 --- a/lang/hu_HU/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - 'A megadott hitelesítési adatok nem egyeznek.', - 'password' => 'A megadott jelszó hibás.', - 'throttle' => 'Túl sok bejelentkezési kísérlet. Kérlek, várj :seconds másodpercet, mielőtt újra próbálkozol.', - -]; diff --git a/lang/hu_HU/pagination.php b/lang/hu_HU/pagination.php deleted file mode 100644 index 7c5a6a894..000000000 --- a/lang/hu_HU/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Előző', - 'next' => 'Következő »', - -]; diff --git a/lang/hu_HU/passwords.php b/lang/hu_HU/passwords.php deleted file mode 100644 index 379c8f954..000000000 --- a/lang/hu_HU/passwords.php +++ /dev/null @@ -1,22 +0,0 @@ - 'A jelszavadat sikeresen visszaállítottuk!', - 'sent' => 'Elküldtük e-mailben a jelszó-visszaállítási linket!', - 'throttled' => 'Kérlek, várj egy kicsit, mielőtt újra próbálkozol.', - 'token' => 'A jelszó-visszaállító hivatkozás érvénytelen vagy lejárt.', - 'user' => 'Ehhez az e-mail címhez nem található felhasználó.', - -]; diff --git a/lang/hu_HU/translations.php b/lang/hu_HU/translations.php deleted file mode 100644 index 414bcecd8..000000000 --- a/lang/hu_HU/translations.php +++ /dev/null @@ -1,289 +0,0 @@ - 'Admin', - 'User' => 'Felhasználó', - 'abilities' => 'Képességek', - 'active_tokens' => 'Aktív tokenek', - 'all_tokens' => 'Összes token', - 'api_token' => 'API token', - 'api_tokens' => 'API tokenek', - 'average' => 'Átlag', - 'average_ms' => 'Átlag (ms)', - 'Benchmarking' => 'Teljesítménymérés', - 'bucket' => 'Vödör', - 'Checking' => 'Ellenőrzés', - 'comment' => 'Megjegyzés', - 'comments' => 'Megjegyzések', - 'Completed' => 'Befejezve', - 'create_api_token' => 'API token létrehozása', - 'created_at' => 'Létrehozva', - 'created_from' => 'Létrehozva ettől', - 'created_until' => 'Létrehozva eddig', - 'cron_invalid' => 'Érvénytelen cron kifejezés', - 'data_integration' => 'Adatintegráció', - 'database' => 'Adatbázis', - 'database_description' => 'Az erre a csatornára küldött értesítések a fejlécben lévő 🔔 ikon alatt jelennek meg.', - 'details' => 'Részletek', - 'dashboard' => 'Irányítópult', - 'discord' => 'Discord', - 'documentation' => 'Dokumentáció', - 'donate' => 'Adományozás', - 'download' => 'Letöltés', - 'download_latency' => 'Letöltési késleltetés', - 'download_latency_high' => 'Magas letöltési késleltetés', - 'download_latency_iqm' => 'Letöltési késleltetés IQM', - 'download_latency_jitter' => 'Letöltési késleltetés jitter', - 'download_latency_low' => 'Alacsony letöltési késleltetés', - 'download_mbps' => 'Letöltés (Mbps)', - 'download_ms' => 'Letöltés (ms)', - 'email' => 'Email', - 'email_address' => 'Email cím', - 'enable' => 'Engedélyezés', - 'enable_database_notifications' => 'Adatbázis értesítések engedélyezése', - 'enable_discord_webhook_notifications' => 'Discord webhook értesítések engedélyezése', - 'enable_mail_notifications' => 'Email értesítések engedélyezése', - 'enable_pushover_webhook_notifications' => 'Pushover webhook értesítések engedélyezése', - 'enable_telegram' => 'Telegram értesítések engedélyezése', - 'enable_webhook_notifications' => 'Webhook értesítések engedélyezése', - 'error_message' => 'Hibaüzenet', - 'expired_tokens' => 'Lejárt tokenek', - 'expires_at' => 'Lejárat dátuma', - 'expires_at_helper_text' => 'Hagyja üresen, ha nem akar lejárati dátumot', - 'export_all_results' => 'Összes eredmény exportálása', - 'export_all_results_description' => 'Minden oszlopot exportálni fog az összes eredményhez.', - 'export_completed' => 'Az exportálás befejeződött, :count :rows exportálva.', - 'export_current_results' => 'Jelenlegi eredmények exportálása', - 'Failed' => 'Sikertelen', - 'failed_export' => ':count :rows nem sikerült exportálni.', - 'Faker' => 'faker', - 'faster' => 'Gyorsabb', - 'general_settings' => [ - 'label' => 'Általános beállítások', - 'description' => 'Itt állíthatók be az alkalmazás általános beállításai.', - 'app_settings' => 'Alkalmazás beállítások', - 'speedtest_settings' => 'Sebességteszt beállítások', - 'api_settings' => 'Api beállítások', - 'app_name' => 'Alkalmazás neve', - 'asset_url' => 'Eszköz URL', - 'app_timezone' => 'Alkalmazás időzónája', - 'chart_begin_at_zero' => 'Diagram kezdése nullánál', - 'chart_datetime_format' => 'Diagram dátum-idő formátum', - 'datetime_format' => 'Dátum-idő formátum', - 'display_timezone' => 'Megjelenített időzóna', - 'public_dashboard' => 'Nyilvános irányítópult', - 'speedtest_skip_ips' => 'Speedtest kihagyott IP-k', - 'speedtest_schedule' => 'Speedtest ütemezés', - 'speedtest_schedule_description' => 'Adj meg érvényes cron kifejezéseket. Példa: * * * * * minden percben lefut.', - 'speedtest_servers' => 'Speedtest szerverek', - 'speedtest_blocked_servers' => 'Speedtest blokkolt szerverek', - 'speedtest_interface' => 'Speedtest interfész', - 'speedtest_checkinternet_url' => 'Speedtest internet ellenőrző URL', - 'threshold_enabled' => 'Küszöbérték engedélyezve', - 'threshold_download' => 'Küszöbérték letöltés', - 'threshold_upload' => 'Küszöbérték feltöltés', - 'threshold_ping' => 'Küszöbérték ping', - 'prune_results_older_than' => 'Eredmények törlése, ha régebbi mint', - 'api_rate_limit' => 'API sebességkorlát', - ], - 'gotify' => 'Gotify', - 'gotify_enabled' => 'Gotify webhook értesítések engedélyezése', - 'healthcheck_enabled' => 'healthcheck.io webhook értesítések engedélyezése', - 'healthcheck_io' => 'Healthcheck.io', - 'healthy' => 'Egészséges', - 'high' => 'Magas', - 'high_ms' => 'Magas (ms)', - 'id' => 'Azonosító', - 'infoluxdb' => 'InfluxDB v2', - 'infoluxdb_description' => 'Ha engedélyezve van, az új Speedtest eredmények el lesznek küldve az InfluxDB-be.', - 'ip_address' => 'IP cím', - 'iqm' => 'IQM', - 'isp' => 'Szolgáltató', - 'jitter' => 'Jitter', - 'last_24h' => 'Elmúlt 24 óra', - 'last_month' => 'Elmúlt hónap', - 'last_used_at' => 'Utoljára használva', - 'last_week' => 'Elmúlt hét', - 'latest_download' => 'Legutóbbi letöltés', - 'latest_ping' => 'Legutóbbi ping', - 'latest_upload' => 'Legutóbbi feltöltés', - 'links' => 'Hivatkozások', - 'list_servers' => 'Szerverek listázása', - 'list_servers_description' => 'A token jogosultságot kap a szerverek listázására.', - 'low' => 'Alacsony', - 'low_ms' => 'Alacsony (ms)', - 'mail' => 'E-mail', - 'message' => 'Üzenet', - 'ms' => 'ms', - 'name' => 'Név', - 'next_speedtest_at' => 'Következő speedtest: ', - 'no' => 'Nem', - 'no_speedtests_scheduled' => 'Nincs ütemezett speedtest.', - 'notifications' => [ - 'label' => 'Értesítések', - 'database' => [ - 'ping' => 'Azt mondom: ping', - 'pong' => 'Te mondod: pong', - 'received' => 'Teszt adatbázis értesítés megérkezett!', - 'sent' => 'Teszt adatbázis értesítés elküldve.', - ], - 'discord' => [ - 'add' => 'Adj hozzá Discord URL-eket!', - 'sent' => 'Teszt Discord értesítés elküldve.', - 'payload' => '👋 Teszteljük a Discord értesítési csatornát.', - ], - 'health_check' => [ - 'add' => 'Adj hozzá HealthCheck.io URL-eket!', - 'sent' => 'Teszt HealthCheck.io értesítés elküldve.', - 'payload' => '👋 Teszteljük a HealthCheck.io értesítési csatornát.', - ], - 'gotfy' => [ - 'add' => 'Adj hozzá Gotify URL-eket!', - 'sent' => 'Teszt Gotify értesítés elküldve.', - 'payload' => '👋 Teszteljük a Gotify értesítési csatornát.', - ], - 'mail' => [ - 'add' => 'Adj hozzá email címzetteket!', - 'sent' => 'Teszt email értesítés elküldve.', - ], - 'ntfy' => [ - 'add' => 'Adj hozzá ntfy URL-eket!', - 'sent' => 'Teszt ntfy értesítés elküldve.', - 'payload' => '👋 Teszteljük az ntfy értesítési csatornát.', - ], - 'pushover' => [ - 'add' => 'Adj hozzá Pushover URL-eket!', - 'sent' => 'Teszt Pushover értesítés elküldve.', - 'payload' => '👋 Teszteljük a Pushover értesítési csatornát.', - ], - 'slack' => [ - 'add' => 'Adj hozzá Slack URL-eket!', - 'sent' => 'Teszt Slack értesítés elküldve.', - 'payload' => '👋 Teszteljük a Slack értesítési csatornát.', - ], - 'telegram' => [ - 'add' => 'Adj hozzá Telegram címzetteket!', - 'sent' => 'Teszt Telegram értesítés elküldve.', - ], - 'webhook' => [ - 'add' => 'Adj hozzá webhook URL-eket!', - 'sent' => 'Teszt webhook értesítés elküldve.', - 'payload' => 'Webhook értesítés tesztelése', - ], - ], - 'notify_on_every_speedtest_run' => 'Értesítés minden speedtest után', - 'notify_on_threshold_failures' => 'Értesítés küszöbérték hibáknál', - 'ntfy' => 'ntfy', - 'ntfy_enabled' => 'ntfy webhook értesítések engedélyezése', - 'only_healthy_speedtests' => 'Csak egészséges speedtestek', - 'only_manual_speedtests' => 'Csak manuális speedtestek', - 'only_scheduled_speedtests' => 'Csak ütemezett speedtestek', - 'only_unhealthy_speedtests' => 'Csak hibás speedtestek', - 'Ookla' => 'Ookla', - 'ookla_error' => 'Hiba történt a speedtest szerverek listázása közben, nézd meg a naplókat.', - 'options' => 'Beállítások', - 'org' => 'Szervezet', - 'packet_loss' => 'Csomagvesztés', - 'password' => 'Jelszó', - 'password_confirmation' => 'Jelszó megerősítése', - 'password_placeholder' => 'Jelszó a Basic Auth-hoz (opcionális)', - 'ping' => 'Ping', - 'ping_details' => 'Ping részletek', - 'ping_high' => 'Magas ping', - 'ping_jitter' => 'Ping jitter', - 'ping_low' => 'Alacsony ping', - 'ping_ms' => 'Ping (ms)', - 'platform' => 'Platform', - 'pushover' => 'Pushover', - 'pushover_webhooks' => 'Pushover webhookok', - 'read_results' => 'Eredmények olvasása', - 'read_results_description' => 'A token jogosultságot kap eredmények és statisztikák olvasására.', - 'recipients' => 'Címzettek', - 'results' => 'Eredmények', - 'result_overview' => 'Eredmény áttekintés', - 'role' => 'Szerepkör', - 'row' => '{1} :count sor|[2,*] :count sor', - 'run_speedtest' => 'Speedtest futtatása', - 'run_speedtest_description' => 'A token jogosultságot kap speedtest futtatására.', - 'Running' => 'Fut', - 'scheduled' => 'Ütemezve', - 'sending_test_data_to_influxdb' => 'Tesztadatok küldése az InfluxDB-be', - 'server_&_metadata' => 'Szerver & Metaadatok', - 'server_host' => 'Szerver hoszt', - 'server_id' => 'Szerver azonosító', - 'server_location' => 'Szerver helyszín', - 'server_name' => 'Szerver neve', - 'service' => 'Szolgáltatás', - 'settings' => 'Beállítások', - 'Skipped' => 'Kihagyva', - 'slack' => 'Slack', - 'slack_enabled' => 'Slack webhook értesítések engedélyezése', - 'slower' => 'Lassabb', - 'speedtest_tracker' => 'speedtest-tracker', - 'Started' => 'Elindult', - 'starting_bulk_data_write_to_influxdb' => 'Tömeges adatok írásának indítása az InfluxDB-be', - 'status' => 'Állapot', - 'status_fix' => [ - 'confirm' => 'Folytatod?', - 'fail' => 'Parancs megszakítva.', - 'finished' => '✅ kész!', - 'info_1' => 'Minden eredményt ellenőriz és a státuszt kijavítja „befejezett” vagy „sikertelen” értékre az adatok alapján.', - 'info_2' => '📖 Olvasd el a dokumentációt: https://docs.speedtest-tracker.dev/other/commands', - ], - 'telegram' => 'Telegram', - 'telegram_chat_id' => 'Telegram chat ID', - 'telegram_disable_notification' => 'Üzenet csendes küldése', - 'test_connection' => 'Kapcsolat tesztelése', - 'test_database_channel' => 'Adatbázis csatorna tesztelése', - 'test_discord_webhook' => 'Discord webhook tesztelése', - 'test_gotify_webhook' => 'Gotify webhook tesztelése', - 'test_healthcheck_webhook' => 'healthcheck.io webhook tesztelése', - 'test_mail_channel' => 'Email csatorna tesztelése', - 'test_ntfy_webhook' => 'ntfy webhook tesztelése', - 'test_pushover_webhook' => 'Pushover webhook tesztelése', - 'test_slack_webhook' => 'Slack webhook tesztelése', - 'test_telegram_channel' => 'Telegram csatorna tesztelése', - 'test_webhook_channel' => 'Webhook csatorna tesztelése', - 'threshold_helper_text' => 'A küszöbértesítések a /fail útvonalra lesznek küldve az URL-ben.', - 'thresholds' => 'Küszöbértékek', - 'token' => 'Token', - 'token_created' => 'Token létrehozva', - 'token_status' => 'Token állapot', - 'topic' => 'Téma', - 'triggers' => 'Triggerek', - 'truncate' => 'Törlés', - 'truncate_results' => 'Eredmények törlése', - 'truncate_results_description' => 'Biztosan törölni szeretnéd az összes eredményt? Ez nem visszavonható.', - 'update_comments' => 'Megjegyzések frissítése', - 'updated_at' => 'Frissítve', - 'update_available' => 'Frissítés elérhető!', - 'upload' => 'Feltöltés', - 'upload_latency' => 'Feltöltési késleltetés', - 'upload_latency_high' => 'Magas feltöltési késleltetés', - 'upload_latency_jitter' => 'Feltöltési jitter', - 'upload_ms' => 'Feltöltés (ms)', - 'up_to_date' => 'Naprakész', - 'url' => 'URL', - 'users' => 'Felhasználók', - 'user_change' => [ - 'info' => 'Felhasználó szerepköre frissítve.', - 'password_updated_info' => ':email jelszava frissítve.', - 'what_is_password' => 'Mi az új jelszó?', - 'what_is_the_email_address' => 'Mi az email cím?', - 'what_role' => 'Milyen szerepköre legyen a felhasználónak?', - ], - 'user_key' => 'Felhasználói kulcs', - 'username' => 'Felhasználónév', - 'username_placeholder' => 'Felhasználónév a Basic Auth-hoz (opcionális)', - 'verify_ssl' => 'SSL ellenőrzése', - 'view_on_speedtest_net' => 'Megtekintés a Speedtest.net-en', - 'Waiting' => 'Várakozás', - 'webhook' => 'Webhook', - 'webhooks' => 'Webhookok', - 'yes' => 'Igen', - 'your_ntfy_server_url' => 'Az ntfy szervered URL-je', - 'your_ntfy_topic' => 'Az ntfy témád', - 'your_pushover_api_token' => 'A Pushover API tokened', - 'your_pushover_user_key' => 'A Pushover felhasználói kulcsod', - 'your_token' => 'A tokened', -]; diff --git a/lang/hu_HU/validation.php b/lang/hu_HU/validation.php deleted file mode 100644 index bc3f12f25..000000000 --- a/lang/hu_HU/validation.php +++ /dev/null @@ -1,230 +0,0 @@ - 'A(z) :attribute el kell legyen fogadva.', - 'accepted_if' => 'A(z) :attribute el kell legyen fogadva, ha :other értéke :value.', - 'active_url' => 'A(z) :attribute nem érvényes URL.', - 'after' => 'A(z) :attribute dátumának későbbinek kell lennie, mint :date.', - 'after_or_equal' => 'A(z) :attribute dátumának legalább :date-nek kell lennie.', - 'alpha' => 'A(z) :attribute csak betűket tartalmazhat.', - 'alpha_dash' => 'A(z) :attribute csak betűket, számokat, kötőjeleket és aláhúzásjeleket tartalmazhat.', - 'alpha_num' => 'A(z) :attribute csak betűket és számokat tartalmazhat.', - 'array' => 'A(z) :attribute egy tömbnek kell lennie.', - 'ascii' => 'A(z) :attribute csak ASCII karaktereket tartalmazhat.', - 'before' => 'A(z) :attribute dátumának korábbinak kell lennie, mint :date.', - 'before_or_equal' => 'A(z) :attribute dátumának legfeljebb :date-nek kell lennie.', - 'between' => [ - 'array' => 'A(z) :attribute :min és :max elem között kell legyen.', - 'file' => 'A(z) :attribute mérete :min és :max kilobájt között kell legyen.', - 'numeric' => 'A(z) :attribute értékének :min és :max között kell lennie.', - 'string' => 'A(z) :attribute :min és :max karakter között kell legyen.', - ], - 'boolean' => 'A(z) :attribute értéke igaz vagy hamis lehet.', - 'can' => 'A(z) :attribute érvénytelen értéket tartalmaz.', - 'confirmed' => 'A(z) :attribute megerősítése nem egyezik.', - 'current_password' => 'A megadott jelszó helytelen.', - 'date' => 'A(z) :attribute nem érvényes dátum.', - 'date_equals' => 'A(z) :attribute pontosan :date kell legyen.', - 'date_format' => 'A(z) :attribute nem felel meg a formátumnak: :format.', - 'decimal' => 'A(z) :attribute :decimal tizedesjegyet kell tartalmazzon.', - 'declined' => 'A(z) :attribute el kell legyen utasítva.', - 'declined_if' => 'A(z) :attribute el kell legyen utasítva, ha :other értéke ":value".', - 'different' => 'A(z) :attribute és :other nem lehet azonos.', - 'digits' => 'A(z) :attribute :digits számjegyből kell álljon.', - 'digits_between' => 'A(z) :attribute :min és :max számjegy közötti érték kell legyen.', - 'dimensions' => 'A(z) :attribute érvénytelen képméretet tartalmaz.', - 'distinct' => 'A(z) :attribute mező ismétlődő értéket tartalmaz.', - 'doesnt_end_with' => 'A(z) :attribute nem végződhet a következőkkel: :values.', - 'doesnt_start_with' => 'A(z) :attribute nem kezdődhet a következőkkel: :values.', - 'email' => 'A(z) :attribute érvényes e-mail cím kell legyen.', - 'ends_with' => 'A(z) :attribute a következő értékek egyikével kell végződjön: :values.', - 'enum' => 'A kiválasztott :attribute érvénytelen.', - 'exists' => 'A kiválasztott :attribute már létezik.', - 'file' => 'A(z) :attribute fájlnak kell lennie.', - 'filled' => 'A(z) :attribute mező nem lehet üres.', - 'gt' => [ - 'array' => 'A(z) :attribute több mint :value elemet kell tartalmazzon.', - 'file' => 'A(z) :attribute mérete nagyobb kell legyen, mint :value kilobájt.', - 'numeric' => 'A(z) :attribute nagyobb kell legyen, mint :value.', - 'string' => 'A(z) :attribute hosszabb kell legyen, mint :value karakter.', - ], - 'gte' => [ - 'array' => 'A(z) :attribute legalább :value elemet kell tartalmazzon.', - 'file' => 'A(z) :attribute mérete legalább :value kilobájt kell legyen.', - 'numeric' => 'A(z) :attribute legalább :value kell legyen.', - 'string' => 'A(z) :attribute legalább :value karakter hosszú kell legyen.', - ], - 'image' => 'A(z) :attribute képnek kell lennie.', - 'in' => 'A(z) :attribute értéke érvénytelen.', - 'in_array' => 'A(z) :attribute nem található meg a(z) :other mezőben.', - 'integer' => 'A(z) :attribute egész szám kell legyen.', - 'ip' => 'A(z) :attribute érvényes IP-cím kell legyen.', - 'ipv4' => 'A(z) :attribute érvényes IPv4-cím kell legyen.', - 'ipv6' => 'A(z) :attribute érvényes IPv6-cím kell legyen.', - 'json' => 'A(z) :attribute érvényes JSON kell legyen.', - 'lowercase' => 'A(z) :attribute csak kisbetűket tartalmazhat.', - 'lt' => [ - 'array' => 'A(z) :attribute legfeljebb :value elemet tartalmazhat.', - 'file' => 'A(z) :attribute kisebb kell legyen, mint :value kilobájt.', - 'numeric' => 'A(z) :attribute kisebb kell legyen, mint :value.', - 'string' => 'A(z) :attribute rövidebb kell legyen, mint :value karakter.', - ], - 'lte' => [ - 'array' => 'A(z) :attribute nem tartalmazhat több, mint :value elemet.', - 'file' => 'A(z) :attribute nem lehet nagyobb, mint :value kilobájt.', - 'numeric' => 'A(z) :attribute nem lehet nagyobb, mint :value.', - 'string' => 'A(z) :attribute nem lehet hosszabb, mint :value karakter.', - ], - 'mac_address' => 'A(z) :attribute érvényes MAC-cím kell legyen.', - 'max' => [ - 'array' => 'A(z) :attribute legfeljebb :max elemet tartalmazhat.', - 'file' => 'A(z) :attribute legfeljebb :max kilobájt lehet.', - 'numeric' => 'A(z) :attribute nem lehet nagyobb, mint :max.', - 'string' => 'A(z) :attribute nem lehet hosszabb, mint :max karakter.', - ], - 'max_digits' => 'A(z) :attribute legfeljebb :max számjegyet tartalmazhat.', - 'mimes' => 'A(z) :attribute típusának a következők egyikének kell lennie: :values.', - 'mimetypes' => 'A(z) :attribute formátuma a következők egyike kell legyen: :values.', - 'min' => [ - 'array' => 'A(z) :attribute legalább :min elemet kell tartalmazzon.', - 'file' => 'A(z) :attribute legalább :min kilobájt kell legyen.', - 'numeric' => 'A(z) :attribute legalább :min kell legyen.', - 'string' => 'A(z) :attribute legalább :min karakter hosszú kell legyen.', - ], - 'min_digits' => 'A(z) :attribute legalább :min számjegyet kell tartalmazzon.', - 'missing' => 'A(z) :attribute nem szerepelhet.', - 'missing_if' => 'A(z) :attribute nem lehet megadva, ha :other értéke ":value".', - 'missing_unless' => 'A(z) :attribute nem lehet megadva, kivéve ha :other értéke ":value".', - 'missing_with' => 'A(z) :attribute nem szerepelhet, ha :values meg van adva.', - 'missing_with_all' => 'A(z) :attribute nem szerepelhet, ha a(z) :values mezők mind meg vannak adva.', - 'multiple_of' => 'A(z) :attribute a(z) :value többszöröse kell legyen.', - 'not_in' => 'A kiválasztott :attribute érvénytelen.', - 'not_regex' => 'A(z) :attribute formátuma érvénytelen.', - 'numeric' => 'A(z) :attribute szám kell legyen.', - 'password' => [ - 'letters' => 'A(z) :attribute tartalmazzon legalább egy betűt.', - 'mixed' => 'A(z) :attribute tartalmazzon legalább egy kis- és egy nagybetűt.', - 'numbers' => 'A(z) :attribute tartalmazzon legalább egy számot.', - 'symbols' => 'A(z) :attribute tartalmazzon legalább egy speciális karaktert.', - 'uncompromised' => 'A(z) :attribute egy adatszivárgásban érintett. Kérjük, válasszon másik :attribute-t.', - ], - 'present' => 'A(z) :attribute mezőnek jelen kell lennie.', - 'prohibited' => 'A(z) :attribute megadása nem engedélyezett.', - 'prohibited_if' => 'A(z) :attribute nem adható meg, ha :other értéke ":value".', - 'prohibited_unless' => 'A(z) :attribute csak akkor adható meg, ha :other értéke ":values".', - 'prohibits' => 'A(z) :attribute kizárja a(z) :other megadását.', - 'regex' => 'A(z) :attribute formátuma érvénytelen.', - 'required' => 'A(z) :attribute mező kötelező.', - 'required_array_keys' => 'A(z) :attribute mezőnek tartalmaznia kell a következő kulcsokat: :values.', - 'required_if' => 'A(z) :attribute kötelező, ha :other értéke ":value".', - 'required_if_accepted' => 'A(z) :attribute kötelező, ha :other el van fogadva.', - 'required_unless' => 'A(z) :attribute kötelező, kivéve, ha :other értéke ":values".', - 'required_with' => 'A(z) :attribute kötelező, ha :values meg van adva.', - 'required_with_all' => 'A(z) :attribute kötelező, ha minden :values mező ki van töltve.', - 'required_without' => 'A(z) :attribute kötelező, ha :values nincs megadva.', - 'required_without_all' => 'A(z) :attribute kötelező, ha egyik :values mező sincs megadva.', - 'same' => 'A(z) :attribute és :other mezőknek egyezniük kell.', - 'size' => [ - 'array' => 'A(z) :attribute pontosan :size elemet kell tartalmazzon.', - 'file' => 'A(z) :attribute mérete :size kilobájt kell legyen.', - 'numeric' => 'A(z) :attribute értéke pontosan :size kell legyen.', - 'string' => 'A(z) :attribute pontosan :size karakter hosszú kell legyen.', - ], - 'starts_with' => 'A(z) :attribute a következők egyikével kell kezdődjön: :values.', - 'string' => 'A(z) :attribute szöveg kell legyen.', - 'timezone' => 'A(z) :attribute érvényes időzóna kell legyen.', - 'unique' => 'A(z) :attribute már foglalt.', - 'uploaded' => 'A(z) :attribute feltöltése sikertelen volt.', - 'uppercase' => 'A(z) :attribute csak nagybetűket tartalmazhat.', - 'url' => 'A(z) :attribute érvényes URL kell legyen.', - 'ulid' => 'A(z) :attribute érvényes ULID kell legyen.', - 'uuid' => 'A(z) :attribute érvényes UUID kell legyen.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | 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' => 'Cím', - 'age' => 'Életkor', - 'body' => 'Tartalom', - 'cell' => 'Mobil', - 'city' => 'Város', - 'country' => 'Ország', - 'date' => 'Dátum', - 'day' => 'Nap', - 'excerpt' => 'Kivonat', - 'first_name' => 'Keresztnév', - 'gender' => 'Nem', - 'marital_status' => 'Családi állapot', - 'profession' => 'Foglalkozás', - 'nationality' => 'Állampolgárság', - 'hour' => 'Óra', - 'last_name' => 'Vezetéknév', - 'message' => 'Üzenet', - 'minute' => 'Perc', - 'mobile' => 'Mobiltelefonszám', - 'month' => 'Hónap', - 'name' => 'Név', - 'zipcode' => 'Irányítószám', - 'company_name' => 'Cégnév', - 'neighborhood' => 'Környék', - 'number' => 'Szám', - 'password' => 'Jelszó', - 'phone' => 'Telefonszám', - 'second' => 'Másodperc', - 'sex' => 'Nem', - 'state' => 'Megye / Tartomány', - 'street' => 'Utca', - 'subject' => 'Tárgy', - 'text' => 'Szöveg', - 'time' => 'Idő', - 'title' => 'Cím', - 'username' => 'Felhasználónév', - 'year' => 'Év', - 'description' => 'Leírás', - 'password_confirmation' => 'Jelszó megerősítése', - 'current_password' => 'Jelenlegi jelszó', - 'complement' => 'Kiegészítés', - 'modality' => 'Mód', - 'category' => 'Kategória', - 'blood_type' => 'Vércsoport', - 'birth_date' => 'Születési dátum', - ], -]; diff --git a/lang/it_IT/auth.php b/lang/it_IT/auth.php deleted file mode 100644 index a70a9a63b..000000000 --- a/lang/it_IT/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - 'Queste credenziali non corrispondono ai nostri archivi.', - 'password' => 'La password fornita non è corretta.', - 'throttle' => 'Troppi tentativi di accesso. Riprova tra :seconds secondi.', - -]; diff --git a/lang/it_IT/pagination.php b/lang/it_IT/pagination.php deleted file mode 100644 index 9d6a2e2bc..000000000 --- a/lang/it_IT/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Precedente', - 'next' => 'Successivo »', - -]; diff --git a/lang/it_IT/passwords.php b/lang/it_IT/passwords.php deleted file mode 100644 index 4289493c6..000000000 --- a/lang/it_IT/passwords.php +++ /dev/null @@ -1,23 +0,0 @@ - 'La tua password è stata reimpostata!', - 'sent' => 'Ti abbiamo inviato via email il link per reimpostare la password!', - 'password' => 'La password e la conferma devono corrispondere e contenere almeno sei caratteri.', - 'throttled' => 'Per favore attendi prima di riprovare.', - 'token' => 'Questo token di reimpostazione della password non è valido.', - 'user' => "Non riusciamo a trovare un utente con quell'indirizzo email.", - -]; diff --git a/lang/it_IT/validation.php b/lang/it_IT/validation.php deleted file mode 100644 index 3ee37cddf..000000000 --- a/lang/it_IT/validation.php +++ /dev/null @@ -1,230 +0,0 @@ - 'Il campo :attribute deve essere accettato.', - 'accepted_if' => 'Il campo :attribute deve essere accettato quando :other è :value.', - 'active_url' => 'Il campo :attribute deve essere un URL valido.', - 'after' => 'Il campo :attribute deve essere una data successiva a :date.', - 'after_or_equal' => 'Il campo :attribute deve essere una data successiva o uguale a :date.', - 'alpha' => 'Il campo :attribute deve contenere solo lettere.', - 'alpha_dash' => 'Il campo :attribute deve contenere solo lettere, numeri, trattini e trattini bassi.', - 'alpha_num' => 'Il campo :attribute deve contenere solo lettere e numeri.', - 'array' => 'Il campo :attribute deve essere un array.', - 'ascii' => 'Il campo :attribute deve contenere solo caratteri alfanumerici e simboli a un byte.', - 'before' => 'Il campo :attribute deve essere una data antecedente a :date.', - 'before_or_equal' => 'Il campo :attribute deve essere una data precedente o uguale a :date.', - 'between' => [ - 'array' => 'Il campo :attribute deve contenere tra :min e :max elementi.', - 'file' => 'Il campo :attribute deve essere compreso tra :min e :max kilobyte.', - 'numeric' => 'Il campo :attribute deve essere compreso tra :min e :max.', - 'string' => 'Il campo :attribute deve contenere tra :min e :max caratteri.', - ], - 'boolean' => 'Il campo :attribute deve essere vero o falso.', - 'can' => 'Il campo :attribute contiene un valore non autorizzato.', - 'confirmed' => 'La conferma del campo :attribute non corrisponde.', - 'current_password' => 'La password non è corretta.', - 'date' => 'Il campo :attribute deve essere una data valida.', - 'date_equals' => 'Il campo :attribute deve essere una data uguale a :date.', - 'date_format' => 'Il campo :attribute deve corrispondere al formato :format.', - 'decimal' => 'Il campo :attribute deve avere :decimal cifre decimali.', - 'declined' => 'Il campo :attribute deve essere rifiutato.', - 'declined_if' => 'Il campo :attribute deve essere rifiutato quando :other è :value.', - 'different' => 'Il campo :attribute e :other devono essere diversi.', - 'digits' => 'Il campo :attribute deve essere composto da :digits cifre.', - 'digits_between' => 'Il campo :attribute deve essere compreso tra :min e :max cifre.', - 'dimensions' => 'Il campo :attribute presenta dimensioni della foto non valide.', - 'distinct' => 'Il campo :attribute ha un valore duplicato.', - 'doesnt_end_with' => 'Il campo :attribute non deve terminare con uno dei seguenti: :values.', - 'doesnt_start_with' => 'Il campo :attribute non deve iniziare con uno dei seguenti: :values.', - 'email' => 'Il campo :attribute deve essere un indirizzo email valido.', - 'ends_with' => 'Il campo :attribute deve terminare con uno dei seguenti: :values.', - 'enum' => 'Il :attribute selezionato non valido.', - 'exists' => 'Il :attribute selezionato non valido.', - 'file' => 'Il campo :attribute deve essere un file.', - 'filled' => 'Il campo :attribute deve avere un valore.', - 'gt' => [ - 'array' => 'Il campo :attribute deve contenere più di :value elementi.', - 'file' => 'Il campo :attribute deve essere maggiore di :value kilobyte.', - 'numeric' => 'Il campo :attribute deve essere maggiore di :value.', - 'string' => 'Il campo :attribute deve essere maggiore di :value caratteri.', - ], - 'gte' => [ - 'array' => 'Il campo :attribute deve contenere almeno :value elementi.', - 'file' => 'Il campo :attribute deve essere maggiore o uguale a :value kilobyte.', - 'numeric' => 'Il campo :attribute deve essere maggiore o uguale a :value.', - 'string' => 'Il campo :attribute deve essere maggiore o uguale a :value caratteri.', - ], - 'image' => 'Il campo :attribute deve essere una foto.', - 'in' => 'Il :attribute selezionato non è valido.', - 'in_array' => 'Il campo :attribute deve esistere in :other.', - 'integer' => 'Il campo :attribute deve essere un numero intero.', - 'ip' => 'Il campo :attribute deve essere un indirizzo IP valido.', - 'ipv4' => 'Il campo :attribute deve essere un indirizzo IPv4 valido.', - 'ipv6' => 'Il campo :attribute deve essere un indirizzo IPv6 valido.', - 'json' => 'Il campo :attribute deve essere una stringa JSON valida.', - 'lowercase' => 'Il campo :attribute deve essere in minuscolo.', - 'lt' => [ - 'array' => 'Il campo :attribute deve contenere meno di :value elementi.', - 'file' => 'Il campo :attribute deve essere meno di :value kilobyte.', - 'numeric' => 'Il campo :attribute deve essere minore di :value.', - 'string' => 'Il campo :attribute deve essere minore di :value caratteri.', - ], - 'lte' => [ - 'array' => 'Il campo :attribute non deve avere più di :value elementi.', - 'file' => 'Il campo :attribute deve essere minore di o uguale a :value kilobyte.', - 'numeric' => 'Il campo :attribute deve essere minore di o uguale a :value.', - 'string' => 'Il campo :attribute deve essere minore di o uguale a :value caratteri.', - ], - 'mac_address' => 'Il campo :attribute deve essere un indirizzo MAC valido.', - 'max' => [ - 'array' => 'Il campo :attribute non deve avere più di :max elementi.', - 'file' => 'Il campo :attribute non deve essere maggiore di :max kilobyte.', - 'numeric' => 'Il campo :attribute non deve essere maggiore di :max.', - 'string' => 'Il campo :attribute non deve essere maggiore di :max caratteri.', - ], - 'max_digits' => 'Il campo :attribute non deve avere più di :max cifre.', - 'mimes' => 'Il campo :attribute deve essere un file di tipo: :values.', - 'mimetypes' => 'Il campo :attribute deve essere un file di tipo: :values.', - 'min' => [ - 'array' => 'Il campo :attribute deve avere almeno :min elementi.', - 'file' => 'Il campo :attribute deve essere almeno :min kilobyte.', - 'numeric' => 'Il campo :attribute deve essere almeno :min.', - 'string' => 'Il campo :attribute deve essere almeno :min caratteri.', - ], - 'min_digits' => 'Il campo :attribute deve avere almeno :min cifre.', - 'missing' => 'Il campo :attribute deve essere mancante.', - 'missing_if' => 'Il campo :attribute deve essere mancante quando :other è :value.', - 'missing_unless' => 'Il campo :attribute deve essere mancante a meno che :other sia :value.', - 'missing_with' => 'Il campo :attribute deve essere mancante quando :values è presente.', - 'missing_with_all' => 'Il campo :attribute deve essere mancante quando :values sono presenti.', - 'multiple_of' => 'Il campo :attribute deve essere un multiplo di :value.', - 'not_in' => 'Il :attribute selezionato non è valido.', - 'not_regex' => 'Il formato del campo :attribute non è valido.', - 'numeric' => 'Il campo :attribute deve essere un numero.', - 'password' => [ - 'letters' => 'Il campo :attribute deve contenere almeno una lettera.', - 'mixed' => 'Il campo :attribute deve contenere almeno un carattere minuscolo e un carattere maiuscolo.', - 'numbers' => 'Il campo :attribute deve contenere almeno un numero.', - 'symbols' => 'Il campo :attribute deve contenere almeno un simbolo speciale.', - 'uncompromised' => 'Il :attribute dato è apparso in un data leak. Per favore scegliere un :attribute differente.', - ], - 'present' => 'Il campo :attribute deve essere presente.', - 'prohibited' => 'Il campo :attribute è proibito.', - 'prohibited_if' => 'Il campo :attribute è proibito quando :other è :value.', - 'prohibited_unless' => 'Il campo :attribute è proibito a meno che :other sia in :values.', - 'prohibits' => 'Il campo :attribute proibisce :other da essere presente.', - 'regex' => 'Il formato del campo :attribute non è valido.', - 'required' => 'Il campo :attribute è richiesto.', - 'required_array_keys' => 'Il campo :attribute deve contenere inserimenti per: :values.', - 'required_if' => 'Il campo :attribute è richiesto quando :other è :value.', - 'required_if_accepted' => 'Il campo :attribute è richiesto quando :other è accettato.', - 'required_unless' => 'Il campo :attribute è richiesto a meno che :other sia in :values.', - 'required_with' => 'Il campo :attribute è richiesto quando :values è presente.', - 'required_with_all' => 'Il campo :attribute è richiesto quando :values sono presenti.', - 'required_without' => 'Il campo :attribute è richiesto quando :values non è presente.', - 'required_without_all' => 'Il campo :attribute è richiesto quando nessuno dei :values sono presenti.', - 'same' => 'Il campo :attribute deve corrispondere a :other.', - 'size' => [ - 'array' => 'Il campo :attribute deve contenere :size elementi.', - 'file' => 'Il campo :attribute deve essere :size kilobyte.', - 'numeric' => 'Il campo :attribute deve essere :size.', - 'string' => 'Il campo :attribute deve essere :size caratteri.', - ], - 'starts_with' => 'Il campo :attribute deve iniziare con uno dei seguenti: :values.', - 'string' => 'Il campo :attribute deve essere una stringa.', - 'timezone' => 'Il campo :attribute deve essere un fuso orario valido.', - 'unique' => 'Il :attribute è già stato preso.', - 'uploaded' => 'Il :attribute non è riuscito ad essere caricato.', - 'uppercase' => 'Il campo :attribute deve essere maiuscolo.', - 'url' => 'Il campo :attribute deve essere un URL valido.', - 'ulid' => 'Il campo :attribute deve essere un ULID valido.', - 'uuid' => 'Il campo :attribute deve essere un UUID valido.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | 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' => 'indirizzo', - 'age' => 'età', - 'body' => 'corpo del testo', - 'cell' => 'cella', - 'city' => 'città', - 'country' => 'nazione', - 'date' => 'data', - 'day' => 'giorno', - 'excerpt' => 'sommario', - 'first_name' => 'nome', - 'gender' => 'identità di genere', - 'marital_status' => 'stato civile', - 'profession' => 'professione', - 'nationality' => 'nazionalità', - 'hour' => 'ora', - 'last_name' => 'cognome', - 'message' => 'messaggio', - 'minute' => 'minuto', - 'mobile' => 'cellulare', - 'month' => 'mese', - 'name' => 'nome', - 'zipcode' => 'CAP', - 'company_name' => 'nome azienda', - 'neighborhood' => 'quartiere', - 'number' => 'numero', - 'password' => 'password', - 'phone' => 'telefono', - 'second' => 'secondo', - 'sex' => 'sesso', - 'state' => 'stato', - 'street' => 'strada', - 'subject' => 'oggetto', - 'text' => 'testo', - 'time' => 'ora', - 'title' => 'titolo', - 'username' => 'username', - 'year' => 'anno', - 'description' => 'descrizione', - 'password_confirmation' => 'conferma password', - 'current_password' => 'password corrente', - 'complement' => 'complemento', - 'modality' => 'modalità', - 'category' => 'categoria', - 'blood_type' => 'gruppo sanguigno', - 'birth_date' => 'data di nascita', - ], -]; diff --git a/lang/nl_NL/auth.php b/lang/nl_NL/auth.php deleted file mode 100644 index 8d24acff7..000000000 --- a/lang/nl_NL/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - 'De ingevoerde inloggegevens komen niet overeen.', - 'password' => 'Het ingevoerde wachtwoord is onjuist.', - 'throttle' => 'Te veel inlogpogingen. Wacht :seconds seconden en probeer het opnieuw.', - -]; diff --git a/lang/nl_NL/pagination.php b/lang/nl_NL/pagination.php deleted file mode 100644 index 7382e2e8e..000000000 --- a/lang/nl_NL/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Vorige', - 'next' => 'Volgende »', - -]; diff --git a/lang/nl_NL/passwords.php b/lang/nl_NL/passwords.php deleted file mode 100644 index 2e165a9f3..000000000 --- a/lang/nl_NL/passwords.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Je wachtwoord is succesvol opnieuw ingesteld!', - 'sent' => 'We hebben je een e-mail gestuurd met een link om je wachtwoord opnieuw in te stellen!', - 'password' => 'Het wachtwoord moet minstens 6 tekens lang zijn en overeenkomen met de bevestiging.', - 'throttled' => 'Wacht even voordat je het opnieuw probeert.', - 'token' => 'De link om het wachtwoord opnieuw in te stellen is ongeldig of verlopen.', - 'user' => 'Er bestaat geen gebruikersaccount met dit e-mailadres.', - -]; diff --git a/lang/nl_NL/validation.php b/lang/nl_NL/validation.php deleted file mode 100644 index 7f7a2f416..000000000 --- a/lang/nl_NL/validation.php +++ /dev/null @@ -1,230 +0,0 @@ - ':attribute moet worden geaccepteerd.', - 'accepted_if' => ':attribute moet worden geaccepteerd als :other :value is.', - 'active_url' => ':attribute moet een geldige URL zijn.', - 'after' => ':attribute moet een datum na :date zijn.', - 'after_or_equal' => ':attribute moet een datum zijn op of na :date.', - 'alpha' => ':attribute mag alleen letters bevatten.', - 'alpha_dash' => ':attribute mag alleen letters, cijfers, koppeltekens en underscores bevatten.', - 'alpha_num' => ':attribute mag alleen letters en cijfers bevatten.', - 'array' => ':attribute moet een lijst zijn.', - 'ascii' => ':attribute mag alleen standaardtekens bevatten.', - 'before' => ':attribute moet een datum voor :date zijn.', - 'before_or_equal' => ':attribute moet een datum zijn op of voor :date.', - 'between' => [ - 'array' => ':attribute moet tussen :min en :max items bevatten.', - 'file' => ':attribute moet tussen :min en :max kilobytes groot zijn.', - 'numeric' => ':attribute moet tussen :min en :max liggen.', - 'string' => ':attribute moet tussen :min en :max tekens lang zijn.', - ], - 'boolean' => ':attribute moet waar of onwaar zijn.', - 'can' => ':attribute bevat een ongeldige waarde.', - 'confirmed' => ':attribute komt niet overeen met de bevestiging.', - 'current_password' => 'Het ingevoerde wachtwoord is onjuist.', - 'date' => ':attribute is geen geldige datum.', - 'date_equals' => ':attribute moet exact :date zijn.', - 'date_format' => ':attribute komt niet overeen met het formaat :format.', - 'decimal' => ':attribute moet :decimal decimalen bevatten.', - 'declined' => ':attribute moet worden afgewezen.', - 'declined_if' => ':attribute moet worden afgewezen als :other :value is.', - 'different' => ':attribute en :other moeten verschillend zijn.', - 'digits' => ':attribute moet uit :digits cijfers bestaan.', - 'digits_between' => ':attribute moet tussen :min en :max cijfers bevatten.', - 'dimensions' => ':attribute heeft ongeldige afbeeldingsafmetingen.', - 'distinct' => ':attribute bevat een dubbele waarde.', - 'doesnt_end_with' => ':attribute mag niet eindigen met een van de volgende: :values.', - 'doesnt_start_with' => ':attribute mag niet beginnen met een van de volgende: :values.', - 'email' => ':attribute moet een geldig e-mailadres zijn.', - 'ends_with' => ':attribute moet eindigen met een van de volgende: :values.', - 'enum' => 'De geselecteerde waarde voor :attribute is ongeldig.', - 'exists' => ':attribute bestaat al.', - 'file' => ':attribute moet een bestand zijn.', - 'filled' => ':attribute mag niet leeg zijn.', - 'gt' => [ - 'array' => ':attribute moet meer dan :value items bevatten.', - 'file' => ':attribute moet groter zijn dan :value kilobytes.', - 'numeric' => ':attribute moet groter zijn dan :value.', - 'string' => ':attribute moet meer dan :value tekens bevatten.', - ], - 'gte' => [ - 'array' => ':attribute moet minimaal :value items bevatten.', - 'file' => ':attribute moet minimaal :value kilobytes zijn.', - 'numeric' => ':attribute moet minimaal :value zijn.', - 'string' => ':attribute moet minimaal :value tekens bevatten.', - ], - 'image' => ':attribute moet een afbeelding zijn.', - 'in' => 'De geselecteerde waarde voor :attribute is ongeldig.', - 'in_array' => ':attribute moet voorkomen in :other.', - 'integer' => ':attribute moet een geheel getal zijn.', - 'ip' => ':attribute moet een geldig IP-adres zijn.', - 'ipv4' => ':attribute moet een geldig IPv4-adres zijn.', - 'ipv6' => ':attribute moet een geldig IPv6-adres zijn.', - 'json' => ':attribute moet een geldige JSON-string zijn.', - 'lowercase' => ':attribute moet alleen kleine letters bevatten.', - 'lt' => [ - 'array' => ':attribute mag maximaal :value items bevatten.', - 'file' => ':attribute moet kleiner zijn dan :value kilobytes.', - 'numeric' => ':attribute moet kleiner zijn dan :value.', - 'string' => ':attribute moet minder dan :value tekens bevatten.', - ], - 'lte' => [ - 'array' => ':attribute mag niet meer dan :value items bevatten.', - 'file' => ':attribute mag maximaal :value kilobytes zijn.', - 'numeric' => ':attribute mag maximaal :value zijn.', - 'string' => ':attribute mag maximaal :value tekens bevatten.', - ], - 'mac_address' => ':attribute moet een geldig MAC-adres zijn.', - 'max' => [ - 'array' => ':attribute mag maximaal :max items bevatten.', - 'file' => ':attribute mag maximaal :max kilobytes zijn.', - 'numeric' => ':attribute mag niet groter zijn dan :max.', - 'string' => ':attribute mag niet langer zijn dan :max tekens.', - ], - 'max_digits' => ':attribute mag maximaal :max cijfers bevatten.', - 'mimes' => ':attribute moet een bestand zijn van het type: :values.', - 'mimetypes' => ':attribute moet een bestand zijn van het type: :values.', - 'min' => [ - 'array' => ':attribute moet minstens :min items bevatten.', - 'file' => ':attribute moet minstens :min kilobytes zijn.', - 'numeric' => ':attribute moet minstens :min zijn.', - 'string' => ':attribute moet minstens :min tekens bevatten.', - ], - 'min_digits' => ':attribute moet minstens :min cijfers bevatten.', - 'missing' => ':attribute moet ontbreken.', - 'missing_if' => ':attribute moet ontbreken als :other ":value" is.', - 'missing_unless' => ':attribute moet ontbreken tenzij :other :value is.', - 'missing_with' => ':attribute moet ontbreken als :values aanwezig is.', - 'missing_with_all' => ':attribute moet ontbreken als :values aanwezig zijn.', - 'multiple_of' => ':attribute moet een veelvoud van :value zijn.', - 'not_in' => 'De geselecteerde waarde voor :attribute is ongeldig.', - 'not_regex' => 'Het formaat van :attribute is ongeldig.', - 'numeric' => ':attribute moet een getal zijn.', - 'password' => [ - 'letters' => ':attribute moet minstens één letter bevatten.', - 'mixed' => ':attribute moet minstens één hoofdletter en één kleine letter bevatten.', - 'numbers' => ':attribute moet minstens één cijfer bevatten.', - 'symbols' => ':attribute moet minstens één speciaal teken bevatten.', - 'uncompromised' => 'Het opgegeven :attribute is aangetroffen in een datalek. Kies een andere :attribute.', - ], - 'present' => ':attribute moet aanwezig zijn.', - 'prohibited' => ':attribute mag niet worden opgegeven.', - 'prohibited_if' => ':attribute mag niet worden opgegeven als :other ":value" is.', - 'prohibited_unless' => ':attribute mag alleen worden opgegeven als :other één van de volgende waarden heeft: :values.', - 'prohibits' => ':attribute staat niet toe dat :other aanwezig is.', - 'regex' => 'Het formaat van :attribute is ongeldig.', - 'required' => ':attribute is verplicht.', - 'required_array_keys' => ':attribute moet waarden bevatten voor: :values.', - 'required_if' => ':attribute is verplicht als :other ":value" is.', - 'required_if_accepted' => ':attribute is verplicht als :other is geaccepteerd.', - 'required_unless' => ':attribute is verplicht tenzij :other één van de volgende waarden heeft: :values.', - 'required_with' => ':attribute is verplicht als :values aanwezig is.', - 'required_with_all' => ':attribute is verplicht als alle :values aanwezig zijn.', - 'required_without' => ':attribute is verplicht als :values niet aanwezig is.', - 'required_without_all' => ':attribute is verplicht als geen van :values aanwezig zijn.', - 'same' => ':attribute en :other moeten overeenkomen.', - 'size' => [ - 'array' => ':attribute moet precies :size items bevatten.', - 'file' => ':attribute moet :size kilobytes zijn.', - 'numeric' => ':attribute moet :size zijn.', - 'string' => ':attribute moet :size tekens lang zijn.', - ], - 'starts_with' => ':attribute moet beginnen met één van de volgende: :values.', - 'string' => ':attribute moet een tekst zijn.', - 'timezone' => ':attribute moet een geldige tijdzone zijn.', - 'unique' => ':attribute is al in gebruik.', - 'uploaded' => ':attribute kon niet worden geüpload.', - 'uppercase' => ':attribute moet alleen hoofdletters bevatten.', - 'url' => ':attribute moet een geldige URL zijn.', - 'ulid' => ':attribute moet een geldige ULID zijn.', - 'uuid' => ':attribute moet een geldige UUID zijn.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'aangepaste-bericht', - ], - ], - - /* - |-------------------------------------------------------------------------- - | 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' => 'Mobiel', - 'city' => 'Stad', - 'country' => 'Land', - 'date' => 'Datum', - 'day' => 'Dag', - 'excerpt' => 'Samenvatting', - 'first_name' => 'Voornaam', - 'gender' => 'Geslacht', - 'marital_status' => 'Burgerlijke staat', - 'profession' => 'Beroep', - 'nationality' => 'Nationaliteit', - 'hour' => 'Uur', - 'last_name' => 'Achternaam', - 'message' => 'Bericht', - 'minute' => 'Minuut', - 'mobile' => 'Mobiele nummer', - 'month' => 'Maand', - 'name' => 'Naam', - 'zipcode' => 'Postcode', - 'company_name' => 'Bedrijfsnaam', - 'neighborhood' => 'Wijk', - 'number' => 'Nummer', - 'password' => 'Wachtwoord', - 'phone' => 'Telefoonnummer', - 'second' => 'Seconde', - 'sex' => 'Geslacht', - 'state' => 'Provincie', - 'street' => 'Straat', - 'subject' => 'Onderwerp', - 'text' => 'Tekst', - 'time' => 'Tijd', - 'title' => 'Titel', - 'username' => 'Gebruikersnaam', - 'year' => 'Jaar', - 'description' => 'Beschrijving', - 'password_confirmation' => 'Wachtwoordbevestiging', - 'current_password' => 'Huidig wachtwoord', - 'complement' => 'Aanvulling', - 'modality' => 'Modaliteit', - 'category' => 'Categorie', - 'blood_type' => 'Bloedgroep', - 'birth_date' => 'Geboortedatum', - ], -]; diff --git a/lang/pt_BR/auth.php b/lang/pt_BR/auth.php deleted file mode 100644 index a9d4d26d8..000000000 --- a/lang/pt_BR/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - 'Essas credenciais não foram encontradas em nossos registros.', - 'password' => 'A senha informada está incorreta.', - 'throttle' => 'Muitas tentativas de login. Tente novamente em :seconds segundos.', - -]; diff --git a/lang/pt_BR/pagination.php b/lang/pt_BR/pagination.php deleted file mode 100644 index 4deabd6fb..000000000 --- a/lang/pt_BR/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Anterior', - 'next' => 'Próximo »', - -]; diff --git a/lang/pt_BR/passwords.php b/lang/pt_BR/passwords.php deleted file mode 100644 index b49c439f8..000000000 --- a/lang/pt_BR/passwords.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Sua senha foi redefinida!', - 'sent' => 'Enviamos seu link de redefinição de senha por e-mail!', - 'password' => 'A senha e a confirmação devem combinar e possuir pelo menos seis caracteres.', - 'throttled' => 'Aguarde antes de tentar novamente.', - 'token' => 'Este token de redefinição de senha é inválido.', - 'user' => 'Não encontramos um usuário com esse endereço de e-mail.', - -]; diff --git a/lang/pt_BR/validation.php b/lang/pt_BR/validation.php deleted file mode 100644 index e11c1bee1..000000000 --- a/lang/pt_BR/validation.php +++ /dev/null @@ -1,230 +0,0 @@ - 'O campo :attribute deve ser aceito.', - 'accepted_if' => 'O :attribute deve ser aceito quando :other for :value.', - 'active_url' => 'O campo :attribute não é uma URL válida.', - 'after' => 'O campo :attribute deve ser uma data posterior a :date.', - 'after_or_equal' => 'O campo :attribute deve ser uma data posterior ou igual a :date.', - 'alpha' => 'O campo :attribute só pode conter letras.', - 'alpha_dash' => 'O campo :attribute só pode conter letras, números e traços.', - 'alpha_num' => 'O campo :attribute só pode conter letras e números.', - 'array' => 'O campo :attribute deve ser uma matriz.', - 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', // TODO - 'before' => 'O campo :attribute deve ser uma data anterior :date.', - 'before_or_equal' => 'O campo :attribute deve ser uma data anterior ou igual a :date.', - 'between' => [ - 'numeric' => 'O campo :attribute deve ser entre :min e :max.', - 'file' => 'O campo :attribute deve ser entre :min e :max kilobytes.', - 'string' => 'O campo :attribute deve ser entre :min e :max caracteres.', - 'array' => 'O campo :attribute deve ter entre :min e :max itens.', - ], - 'boolean' => 'O campo :attribute deve ser verdadeiro ou falso.', - 'can' => 'The :attribute field contains an unauthorized value.', // TODO - 'confirmed' => 'O campo :attribute de confirmação não confere.', - 'current_password' => 'A senha está incorreta.', - 'date' => 'O campo :attribute não é uma data válida.', - 'date_equals' => 'O campo :attribute deve ser uma data igual a :date.', - 'date_format' => 'O campo :attribute não corresponde ao formato :format.', - 'decimal' => 'The :attribute field must have :decimal decimal places.', // TODO - 'declined' => 'O :attribute deve ser recusado.', - 'declined_if' => 'O :attribute deve ser recusado quando :other for :value.', - 'different' => 'Os campos :attribute e :other devem ser diferentes.', - 'digits' => 'O campo :attribute deve ter :digits dígitos.', - 'digits_between' => 'O campo :attribute deve ter entre :min e :max dígitos.', - 'dimensions' => 'O campo :attribute tem dimensões de imagem inválidas.', - 'distinct' => 'O campo :attribute campo tem um valor duplicado.', - 'doesnt_end_with' => 'O :attribute não pode terminar com um dos seguintes: :values.', - 'doesnt_start_with' => 'O :attribute não pode começar com um dos seguintes: :values.', - 'email' => 'O campo :attribute deve ser um endereço de e-mail válido.', - 'ends_with' => 'O campo :attribute deve terminar com um dos seguintes: :values', - 'enum' => 'O :attribute selecionado é inválido.', - 'exists' => 'O campo :attribute selecionado é inválido.', - 'file' => 'O campo :attribute deve ser um arquivo.', - 'filled' => 'O campo :attribute deve ter um valor.', - 'gt' => [ - 'numeric' => 'O campo :attribute deve ser maior que :value.', - 'file' => 'O campo :attribute deve ser maior que :value kilobytes.', - 'string' => 'O campo :attribute deve ser maior que :value caracteres.', - 'array' => 'O campo :attribute deve conter mais de :value itens.', - ], - 'gte' => [ - 'numeric' => 'O campo :attribute deve ser maior ou igual a :value.', - 'file' => 'O campo :attribute deve ser maior ou igual a :value kilobytes.', - 'string' => 'O campo :attribute deve ser maior ou igual a :value caracteres.', - 'array' => 'O campo :attribute deve conter :value itens ou mais.', - ], - 'image' => 'O campo :attribute deve ser uma imagem.', - 'in' => 'O campo :attribute selecionado é inválido.', - 'in_array' => 'O campo :attribute não existe em :other.', - 'integer' => 'O campo :attribute deve ser um número inteiro.', - 'ip' => 'O campo :attribute deve ser um endereço de IP válido.', - 'ipv4' => 'O campo :attribute deve ser um endereço IPv4 válido.', - 'ipv6' => 'O campo :attribute deve ser um endereço IPv6 válido.', - 'json' => 'O campo :attribute deve ser uma string JSON válida.', - 'lowercase' => 'The :attribute field must be lowercase.', // TODO - 'lt' => [ - 'numeric' => 'O campo :attribute deve ser menor que :value.', - 'file' => 'O campo :attribute deve ser menor que :value kilobytes.', - 'string' => 'O campo :attribute deve ser menor que :value caracteres.', - 'array' => 'O campo :attribute deve conter menos de :value itens.', - ], - 'lte' => [ - 'numeric' => 'O campo :attribute deve ser menor ou igual a :value.', - 'file' => 'O campo :attribute deve ser menor ou igual a :value kilobytes.', - 'string' => 'O campo :attribute deve ser menor ou igual a :value caracteres.', - 'array' => 'O campo :attribute não deve conter mais que :value itens.', - ], - 'mac_address' => 'The :attribute field must be a valid MAC address.', // TODO - 'max' => [ - 'numeric' => 'O campo :attribute não pode ser superior a :max.', - 'file' => 'O campo :attribute não pode ser superior a :max kilobytes.', - 'string' => 'O campo :attribute não pode ser superior a :max caracteres.', - 'array' => 'O campo :attribute não pode ter mais do que :max itens.', - ], - 'max_digits' => 'O campo :attribute não pode ser superior a :max dígitos', - 'mimes' => 'O campo :attribute deve ser um arquivo do tipo: :values.', - 'mimetypes' => 'O campo :attribute deve ser um arquivo do tipo: :values.', - 'min' => [ - 'numeric' => 'O campo :attribute deve ser pelo menos :min.', - 'file' => 'O campo :attribute deve ter pelo menos :min kilobytes.', - 'string' => 'O campo :attribute deve ter pelo menos :min caracteres.', - 'array' => 'O campo :attribute deve ter pelo menos :min itens.', - ], - 'min_digits' => 'O campo :attribute deve ter pelo menos :min dígitos', - 'missing' => 'The :attribute field must be missing.', // TODO - 'missing_if' => 'The :attribute field must be missing when :other is :value.', // TODO - 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', // TODO - 'missing_with' => 'O campo :attribute não deve estar presente quando houver :values.', - 'missing_with_all' => 'The :attribute field must be missing when :values are present.', // TODO - 'multiple_of' => 'O campo :attribute deve ser um múltiplo de :value.', - 'not_in' => 'O campo :attribute selecionado é inválido.', - 'not_regex' => 'O campo :attribute possui um formato inválido.', - 'numeric' => 'O campo :attribute deve ser um número.', - 'password' => [ - 'letters' => 'O campo :attribute deve conter pelo menos uma letra.', - 'mixed' => 'O campo :attribute deve conter pelo menos uma letra maiúscula e uma letra minúscula.', - 'numbers' => 'O campo :attribute deve conter pelo menos um número.', - 'symbols' => 'O campo :attribute deve conter pelo menos um símbolo.', - 'uncompromised' => 'A senha que você inseriu em :attribute está em um vazamento de dados. Por favor escolha uma senha diferente.', - ], - 'present' => 'O campo :attribute deve estar presente.', - 'prohibited' => 'O campo :attribute é proibido.', - 'prohibited_if' => 'O campo :attribute é proibido quando :other for :value.', - 'prohibited_unless' => 'O campo :attribute é proibido exceto quando :other for :values.', - 'prohibits' => 'O campo :attribute proíbe :other de estar presente.', - 'regex' => 'O campo :attribute tem um formato inválido.', - 'required' => 'O campo :attribute é obrigatório.', - 'required_array_keys' => 'O campo :attribute deve conter entradas para: :values.', - 'required_if' => 'O campo :attribute é obrigatório quando :other for :value.', - 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', // TODO - 'required_unless' => 'O campo :attribute é obrigatório exceto quando :other for :values.', - 'required_with' => 'O campo :attribute é obrigatório quando :values está presente.', - 'required_with_all' => 'O campo :attribute é obrigatório quando :values está presente.', - 'required_without' => 'O campo :attribute é obrigatório quando :values não está presente.', - 'required_without_all' => 'O campo :attribute é obrigatório quando nenhum dos :values estão presentes.', - 'same' => 'Os campos :attribute e :other devem corresponder.', - 'size' => [ - 'numeric' => 'O campo :attribute deve ser :size.', - 'file' => 'O campo :attribute deve ser :size kilobytes.', - 'string' => 'O campo :attribute deve ser :size caracteres.', - 'array' => 'O campo :attribute deve conter :size itens.', - ], - 'starts_with' => 'O campo :attribute deve começar com um dos seguintes valores: :values', - 'string' => 'O campo :attribute deve ser uma string.', - 'timezone' => 'O campo :attribute deve ser uma zona válida.', - 'unique' => 'O campo :attribute já está sendo utilizado.', - 'uploaded' => 'Ocorreu uma falha no upload do campo :attribute.', - 'uppercase' => 'The :attribute field must be uppercase.', // TODO - 'url' => 'O campo :attribute tem um formato inválido.', - 'ulid' => 'The :attribute field must be a valid ULID.', // TODO - 'uuid' => 'O campo :attribute deve ser um UUID válido.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | 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' => 'endereço', - 'age' => 'idade', - 'body' => 'conteúdo', - 'cell' => 'célula', - 'city' => 'cidade', - 'country' => 'país', - 'date' => 'data', - 'day' => 'dia', - 'excerpt' => 'resumo', - 'first_name' => 'primeiro nome', - 'gender' => 'gênero', - 'marital_status' => 'estado civil', - 'profession' => 'profissão', - 'nationality' => 'nacionalidade', - 'hour' => 'hora', - 'last_name' => 'sobrenome', - 'message' => 'mensagem', - 'minute' => 'minuto', - 'mobile' => 'celular', - 'month' => 'mês', - 'name' => 'nome', - 'zipcode' => 'cep', - 'company_name' => 'razão social', - 'neighborhood' => 'bairro', - 'number' => 'número', - 'password' => 'senha', - 'phone' => 'telefone', - 'second' => 'segundo', - 'sex' => 'sexo', - 'state' => 'estado', - 'street' => 'rua', - 'subject' => 'assunto', - 'text' => 'texto', - 'time' => 'hora', - 'title' => 'título', - 'username' => 'usuário', - 'year' => 'ano', - 'description' => 'descrição', - 'password_confirmation' => 'confirmação da senha', - 'current_password' => 'senha atual', - 'complement' => 'complemento', - 'modality' => 'modalidade', - 'category' => 'categoria', - 'blood_type' => 'tipo sanguíneo', - 'birth_date' => 'data de nascimento', - ], -]; diff --git a/lang/tr_TR/auth.php b/lang/tr_TR/auth.php deleted file mode 100644 index 273c94fee..000000000 --- a/lang/tr_TR/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - 'Bu bilgiler kayıtlarımızla uyuşmuyor.', - 'password' => 'Sağlanan şifre yanlış.', - 'throttle' => 'Çok fazla giriş denemesi. Lütfen :seconds saniye içinde tekrar deneyin.', - -]; diff --git a/lang/tr_TR/pagination.php b/lang/tr_TR/pagination.php deleted file mode 100644 index 8c760579e..000000000 --- a/lang/tr_TR/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« Önceki', - 'next' => 'Sonraki »', - -]; diff --git a/lang/tr_TR/passwords.php b/lang/tr_TR/passwords.php deleted file mode 100644 index a6563d39c..000000000 --- a/lang/tr_TR/passwords.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Parolanız sıfırlandı!', - 'sent' => 'Parola sıfırlama bağlantınızı e-postayla gönderdik!', - 'password' => 'Şifre ve onay aynı olmalı ve en az altı karakter uzunluğunda olmalıdır.', - 'throttled' => 'Tekrar denemeden önce lütfen bekleyin.', - 'token' => 'Bu parola sıfırlama anahtarı geçersiz.', - 'user' => 'Bu e-posta adresine sahip bir kullanıcı bulamadık.', - -]; diff --git a/lang/tr_TR/validation.php b/lang/tr_TR/validation.php deleted file mode 100644 index 92ff01c14..000000000 --- a/lang/tr_TR/validation.php +++ /dev/null @@ -1,230 +0,0 @@ - ':attribute alanı kabul edilmelidir.', - 'accepted_if' => ':attribute alanı, :other değeri :value olduğunda kabul edilmelidir.', - 'active_url' => ':attribute alanı geçerli bir URL olmalıdır.', - 'after' => ':attribute alanı :date değerinden sonraki bir tarih olmalıdır.', - 'after_or_equal' => ':attribute alanı :date tarihinden sonra veya ona eşit bir tarih olmalıdır.', - 'alpha' => ':attribute alanı yalnızca harf içermelidir.', - 'alpha_dash' => ':attribute alanı yalnızca harf, rakam, tire(-) ve alt çizgi(_) içermelidir.', - 'alpha_num' => ':attribute alanı yalnızca harf ve rakamlardan oluşmalıdır.', - 'array' => ':attribute alanı bir dizi olmalıdır.', - 'ascii' => ':attribute alanı yalnızca tek baytlık alfanümerik karakterler ve semboller içermelidir.', - 'before' => ':attribute alanı :date değerinden önceki bir tarih olmalıdır.', - 'before_or_equal' => ':attribute alanı :date tarihinden önce veya ona eşit bir tarih olmalıdır.', - 'between' => [ - 'array' => ':attribute :min ile :max öğe arasında olmalıdır.', - 'file' => ':attribute :min ile :max kilobayt arasında olmalıdır.', - 'numeric' => ':attribute :min ile :max arasında olmalıdır.', - 'string' => ':attribute :min ile :max karakter arasında olmalıdır.', - ], - 'boolean' => ':attribute alanı doğru veya yanlış olmalıdır.', - 'can' => ':attribute alanı yetkisiz bir değer içeriyor.', - 'confirmed' => ':attribute doğrulaması eşleşmiyor.', - 'current_password' => 'Şifre yanlış.', - 'date' => ':attribute geçerli bir tarih olmalıdır.', - 'date_equals' => ':attribute :date tarihine eşit bir tarih olmalıdır.', - 'date_format' => ':attribute :format formatıyla eşleşmelidir.', - 'decimal' => ':attribute :decimal ondalık basamak içermelidir.', - 'declined' => ':attribute reddedilmelidir.', - 'declined_if' => ':attribute, :other :value olduğunda reddedilmelidir.', - 'different' => ':attribute ve :other farklı olmalıdır.', - 'digits' => ':attribute :digits basamaklı olmalıdır.', - 'digits_between' => ':attribute :min ile :max basamak arasında olmalıdır.', - 'dimensions' => ':attribute geçersiz resim boyutlarına sahiptir.', - 'distinct' => ':attribute alanında yinelenen bir değer var.', - 'doesnt_end_with' => ':attribute şu değerlerden biriyle bitmemelidir: :values.', - 'doesnt_start_with' => ':attribute şu değerlerden biriyle başlamamalıdır: :values.', - 'email' => ':attribute geçerli bir e-posta adresi olmalıdır.', - 'ends_with' => ':attribute şu değerlerden biriyle bitmelidir: :values.', - 'enum' => 'Seçilen :attribute geçersiz.', - 'exists' => 'Seçilen :attribute geçersiz.', - 'file' => ':attribute bir dosya olmalıdır.', - 'filled' => ':attribute bir değer içermelidir.', - 'gt' => [ - 'array' => ':attribute :value öğeden fazla olmalıdır.', - 'file' => ':attribute :value kilobayttan büyük olmalıdır.', - 'numeric' => ':attribute :value değerinden büyük olmalıdır.', - 'string' => ':attribute :value karakterden uzun olmalıdır.', - ], - 'gte' => [ - 'array' => ':attribute :value veya daha fazla öğe içermelidir.', - 'file' => ':attribute :value kilobayt veya daha büyük olmalıdır.', - 'numeric' => ':attribute :value değerine eşit veya daha büyük olmalıdır.', - 'string' => ':attribute :value karakter veya daha fazla olmalıdır.', - ], - 'image' => ':attribute bir resim olmalıdır.', - 'in' => 'Seçilen :attribute geçersiz.', - 'in_array' => ':attribute, :other içinde mevcut olmalıdır.', - 'integer' => ':attribute bir tam sayı olmalıdır.', - 'ip' => ':attribute geçerli bir IP adresi olmalıdır.', - 'ipv4' => ':attribute geçerli bir IPv4 adresi olmalıdır.', - 'ipv6' => ':attribute geçerli bir IPv6 adresi olmalıdır.', - 'json' => ':attribute geçerli bir JSON metni olmalıdır.', - 'lowercase' => ':attribute küçük harflerden oluşmalıdır.', - 'lt' => [ - 'array' => ':attribute :value öğeden az olmalıdır.', - 'file' => ':attribute :value kilobayttan küçük olmalıdır.', - 'numeric' => ':attribute :value değerinden küçük olmalıdır.', - 'string' => ':attribute :value karakterden kısa olmalıdır.', - ], - 'lte' => [ - 'array' => ':attribute :value öğeden fazla olmamalıdır.', - 'file' => ':attribute :value kilobayt veya daha az olmalıdır.', - 'numeric' => ':attribute :value değerine eşit veya daha küçük olmalıdır.', - 'string' => ':attribute :value karakter veya daha az olmalıdır.', - ], - 'mac_address' => ':attribute geçerli bir MAC adresi olmalıdır.', - 'max' => [ - 'array' => ':attribute :max öğeden fazla olmamalıdır.', - 'file' => ':attribute :max kilobayttan büyük olmamalıdır.', - 'numeric' => ':attribute :max değerinden büyük olmamalıdır.', - 'string' => ':attribute :max karakterden uzun olmamalıdır.', - ], - 'max_digits' => ':attribute :max basamaktan fazla olmamalıdır.', - 'mimes' => ':attribute şu türde bir dosya olmalıdır: :values.', - 'mimetypes' => ':attribute şu türde bir dosya olmalıdır: :values.', - 'min' => [ - 'array' => ':attribute en az :min öğe içermelidir.', - 'file' => ':attribute en az :min kilobayt olmalıdır.', - 'numeric' => ':attribute en az :min olmalıdır.', - 'string' => ':attribute en az :min karakter olmalıdır.', - ], - 'min_digits' => ':attribute en az :min basamak içermelidir.', - 'missing' => ':attribute eksik olmalıdır.', - 'missing_if' => ':attribute, :other :value olduğunda eksik olmalıdır.', - 'missing_unless' => ':attribute, :other :value değilse eksik olmalıdır.', - 'missing_with' => ':attribute, :values mevcut olduğunda eksik olmalıdır.', - 'missing_with_all' => ':attribute, :values mevcut olduğunda eksik olmalıdır.', - 'multiple_of' => ':attribute :value katı olmalıdır.', - 'not_in' => 'Seçilen :attribute geçersiz.', - 'not_regex' => ':attribute formatı geçersiz.', - 'numeric' => ':attribute bir sayı olmalıdır.', - 'password' => [ - 'letters' => ':attribute en az bir harf içermelidir.', - 'mixed' => ':attribute en az bir büyük harf ve bir küçük harf içermelidir.', - 'numbers' => ':attribute en az bir rakam içermelidir.', - 'symbols' => ':attribute en az bir sembol içermelidir.', - 'uncompromised' => 'Verilen :attribute bir veri ihlalinde tespit edilmiştir. Lütfen farklı bir :attribute seçin.', - ], - 'present' => ':attribute mevcut olmalıdır.', - 'prohibited' => ':attribute yasaktır.', - 'prohibited_if' => ':attribute, :other :value olduğunda yasaktır.', - 'prohibited_unless' => ':attribute, :other :values içinde olmadıkça yasaktır.', - 'prohibits' => ':attribute, :other alanının mevcut olmasını yasaklar.', - 'regex' => ':attribute formatı geçersiz.', - 'required' => ':attribute alanı gereklidir.', - 'required_array_keys' => ':attribute şu anahtarları içermelidir: :values.', - 'required_if' => ':attribute, :other :value olduğunda gereklidir.', - 'required_if_accepted' => ':attribute, :other kabul edildiğinde gereklidir.', - 'required_unless' => ':attribute, :other :values içinde olmadıkça gereklidir.', - 'required_with' => ':attribute, :values mevcut olduğunda gereklidir.', - 'required_with_all' => ':attribute, :values mevcut olduğunda gereklidir.', - 'required_without' => ':attribute, :values mevcut değilse gereklidir.', - 'required_without_all' => ':attribute, :values hiçbirisi mevcut değilse gereklidir.', - 'same' => ':attribute, :other ile eşleşmelidir.', - 'size' => [ - 'array' => ':attribute :size öğe içermelidir.', - 'file' => ':attribute :size kilobayt olmalıdır.', - 'numeric' => ':attribute :size olmalıdır.', - 'string' => ':attribute :size karakter olmalıdır.', - ], - 'starts_with' => ':attribute şu değerlerden biriyle başlamalıdır: :values.', - 'string' => ':attribute bir metin olmalıdır.', - 'timezone' => ':attribute geçerli bir zaman dilimi olmalıdır.', - 'unique' => ':attribute zaten alınmış.', - 'uploaded' => ':attribute yüklenemedi.', - 'uppercase' => ':attribute büyük harflerden oluşmalıdır.', - 'url' => ':attribute geçerli bir URL olmalıdır.', - 'ulid' => ':attribute geçerli bir ULID olmalıdır.', - 'uuid' => ':attribute geçerli bir UUID olmalıdır.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | 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' => 'yaş', - 'body' => 'içerik', - 'cell' => 'hücre', - 'city' => 'şehir', - 'country' => 'ülke', - 'date' => 'tarih', - 'day' => 'gün', - 'excerpt' => 'özet', - 'first_name' => 'ad', - 'gender' => 'cinsiyet', - 'marital_status' => 'medeni hal', - 'profession' => 'meslek', - 'nationality' => 'uyruk', - 'hour' => 'saat', - 'last_name' => 'soyad', - 'message' => 'mesaj', - 'minute' => 'dakika', - 'mobile' => 'cep telefonu', - 'month' => 'ay', - 'name' => 'isim', - 'zipcode' => 'posta kodu', - 'company_name' => 'şirket adı', - 'neighborhood' => 'mahalle', - 'number' => 'numara', - 'password' => 'şifre', - 'phone' => 'telefon', - 'second' => 'saniye', - 'sex' => 'cinsiyet', - 'state' => 'eyalet', - 'street' => 'sokak', - 'subject' => 'konu', - 'text' => 'metin', - 'time' => 'zaman', - 'title' => 'başlık', - 'username' => 'kullanıcı adı', - 'year' => 'yıl', - 'description' => 'açıklama', - 'password_confirmation' => 'şifre doğrulama', - 'current_password' => 'mevcut şifre', - 'complement' => 'ek bilgi', - 'modality' => 'mod', - 'category' => 'kategori', - 'blood_type' => 'kan grubu', - 'birth_date' => 'doğum tarihi', - ], -]; diff --git a/lang/zh_TW/pagination.php b/lang/zh_TW/pagination.php deleted file mode 100644 index cca0a8930..000000000 --- a/lang/zh_TW/pagination.php +++ /dev/null @@ -1,19 +0,0 @@ - '« 上一頁', - 'next' => '下一頁 »', - -]; diff --git a/lang/zh_TW/passwords.php b/lang/zh_TW/passwords.php deleted file mode 100644 index f3e0935c9..000000000 --- a/lang/zh_TW/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '您的密碼已成功重設!', - 'sent' => '我們已將密碼重設連結寄送至您的電子郵件信箱!', - 'password' => '密碼必須至少包含六個字元,且與確認密碼相符。', - -]; diff --git a/lang/zh_TW/validation.php b/lang/zh_TW/validation.php deleted file mode 100644 index 2f4c46f4c..000000000 --- a/lang/zh_TW/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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' => '地址', - 'age' => '年齡', - 'body' => '內文', - 'cell' => '行動電話', - 'city' => '縣市', - 'country' => '國家', - 'date' => '日期', - 'day' => '日', - 'excerpt' => '摘要', - 'first_name' => '名字', - 'gender' => '性別', - 'marital_status' => '婚姻狀態', - 'profession' => '職業', - 'nationality' => '國籍', - 'hour' => '時', - 'last_name' => '姓氏', - 'message' => '訊息內容', - 'minute' => '分', - 'mobile' => '行動電話', - 'month' => '月', - 'name' => '名稱', - 'zipcode' => '郵遞區號', - 'company_name' => '公司名稱', - 'neighborhood' => '鄰里', - 'number' => '號碼', - 'password' => '密碼', - 'phone' => '電話號碼', - 'second' => '秒', - 'sex' => '性別', - 'state' => '縣市', - 'street' => '街道', - 'subject' => '主旨', - 'text' => '文字', - 'time' => '時間', - 'title' => '標題', - 'username' => '使用者帳號', - 'year' => '年', - 'description' => '說明', - 'password_confirmation' => '確認密碼', - 'current_password' => '目前密碼', - 'complement' => '補充說明', - 'modality' => '模式', - 'category' => '類別', - 'blood_type' => '血型', - 'birth_date' => '出生日期', - ], -]; diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php index 4f41794d5..6ab1cea54 100644 --- a/resources/views/errors/500.blade.php +++ b/resources/views/errors/500.blade.php @@ -1,9 +1,9 @@ - +

500

-

{{ __('Oops, server error!') }}

+

{{ __('errors.oops_server_error') }}

There was an issue, check the logs or view the docs for help.

From 1b7898e79665fbb214d937744bfe332ab0105b0c Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Mon, 17 Nov 2025 18:12:36 +0100 Subject: [PATCH 2/8] chore: update Claude.md and add translation option issue (#2413) --- .github/ISSUE_TEMPLATE/config.yml | 3 +++ CLAUDE.md | 4 ++++ crowdin.yml | 2 ++ 3 files changed, 9 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 678cea79e..25fd46494 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,8 @@ blank_issues_enabled: false contact_links: + - name: Translations + url: https://crowdin.com/project/speedtest-tracker + about: Please report translation issues and request new translations here. - name: GitHub Community Support url: https://github.com/orgs/community/discussions about: Please ask and answer questions here. diff --git a/CLAUDE.md b/CLAUDE.md index c51b1a6c9..2a6120728 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -34,6 +34,10 @@ This application is a Laravel application and its main Laravel ecosystems packag - Stick to existing directory structure - don't create new base folders without approval. - Do not change the application's dependencies without approval. +## Localization +- Only create or update language files in the `lang/en` directory. Do not create or modify language files for other locales. +- All translation strings should be added only to the English language files. + ## Frontend Bundling - If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `npm run build`, `npm run dev`, or `composer run dev`. Ask them. diff --git a/crowdin.yml b/crowdin.yml index daee5d0e5..453c3fe81 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,5 +1,7 @@ base_path: /lang preserve_hierarchy: true +pull_request_labels: + - ":earth_africa: Translations" files: # PHP language files - root level From 269f9616b912eed7985b605acb0637745f010bbe Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Mon, 17 Nov 2025 16:30:00 -0500 Subject: [PATCH 3/8] New Crowdin updates (#2411) --- lang/ar_SA/api_tokens.php | 30 +++++++ lang/ar_SA/auth.php | 20 +++++ lang/ar_SA/dashboard.php | 14 +++ lang/ar_SA/enums.php | 21 +++++ lang/ar_SA/errors.php | 23 +++++ lang/ar_SA/general.php | 106 +++++++++++++++++++++++ lang/ar_SA/passwords.php | 20 +++++ lang/ar_SA/results.php | 73 ++++++++++++++++ lang/ar_SA/settings.php | 13 +++ lang/ar_SA/settings/data_integration.php | 39 +++++++++ lang/ar_SA/settings/notifications.php | 56 ++++++++++++ lang/ar_SA/settings/thresholds.php | 22 +++++ lang/ar_SA/tools.php | 6 ++ lang/ar_SA/users.php | 15 ++++ lang/ar_SA/validation.php | 91 +++++++++++++++++++ lang/da_DK/api_tokens.php | 30 +++++++ lang/da_DK/auth.php | 20 +++++ lang/da_DK/dashboard.php | 14 +++ lang/da_DK/enums.php | 21 +++++ lang/da_DK/errors.php | 23 +++++ lang/da_DK/general.php | 106 +++++++++++++++++++++++ lang/da_DK/passwords.php | 20 +++++ lang/da_DK/results.php | 73 ++++++++++++++++ lang/da_DK/settings.php | 13 +++ lang/da_DK/settings/data_integration.php | 39 +++++++++ lang/da_DK/settings/notifications.php | 56 ++++++++++++ lang/da_DK/settings/thresholds.php | 22 +++++ lang/da_DK/tools.php | 6 ++ lang/da_DK/users.php | 15 ++++ lang/da_DK/validation.php | 91 +++++++++++++++++++ lang/de_DE/api_tokens.php | 30 +++++++ lang/de_DE/auth.php | 20 +++++ lang/de_DE/dashboard.php | 14 +++ lang/de_DE/enums.php | 21 +++++ lang/de_DE/errors.php | 23 +++++ lang/de_DE/general.php | 106 +++++++++++++++++++++++ lang/de_DE/passwords.php | 20 +++++ lang/de_DE/results.php | 73 ++++++++++++++++ lang/de_DE/settings.php | 13 +++ lang/de_DE/settings/data_integration.php | 39 +++++++++ lang/de_DE/settings/notifications.php | 56 ++++++++++++ lang/de_DE/settings/thresholds.php | 22 +++++ lang/de_DE/tools.php | 6 ++ lang/de_DE/users.php | 15 ++++ lang/de_DE/validation.php | 91 +++++++++++++++++++ lang/el_GR/api_tokens.php | 30 +++++++ lang/el_GR/auth.php | 20 +++++ lang/el_GR/dashboard.php | 14 +++ lang/el_GR/enums.php | 21 +++++ lang/el_GR/errors.php | 23 +++++ lang/el_GR/general.php | 106 +++++++++++++++++++++++ lang/el_GR/passwords.php | 20 +++++ lang/el_GR/results.php | 73 ++++++++++++++++ lang/el_GR/settings.php | 13 +++ lang/el_GR/settings/data_integration.php | 39 +++++++++ lang/el_GR/settings/notifications.php | 56 ++++++++++++ lang/el_GR/settings/thresholds.php | 22 +++++ lang/el_GR/tools.php | 6 ++ lang/el_GR/users.php | 15 ++++ lang/el_GR/validation.php | 91 +++++++++++++++++++ lang/es_ES/api_tokens.php | 30 +++++++ lang/es_ES/auth.php | 20 +++++ lang/es_ES/dashboard.php | 14 +++ lang/es_ES/enums.php | 21 +++++ lang/es_ES/errors.php | 23 +++++ lang/es_ES/general.php | 106 +++++++++++++++++++++++ lang/es_ES/passwords.php | 20 +++++ lang/es_ES/results.php | 73 ++++++++++++++++ lang/es_ES/settings.php | 13 +++ lang/es_ES/settings/data_integration.php | 39 +++++++++ lang/es_ES/settings/notifications.php | 56 ++++++++++++ lang/es_ES/settings/thresholds.php | 22 +++++ lang/es_ES/tools.php | 6 ++ lang/es_ES/users.php | 15 ++++ lang/es_ES/validation.php | 91 +++++++++++++++++++ lang/fr_FR/api_tokens.php | 30 +++++++ lang/fr_FR/auth.php | 20 +++++ lang/fr_FR/dashboard.php | 14 +++ lang/fr_FR/enums.php | 21 +++++ lang/fr_FR/errors.php | 23 +++++ lang/fr_FR/general.php | 106 +++++++++++++++++++++++ lang/fr_FR/passwords.php | 20 +++++ lang/fr_FR/results.php | 73 ++++++++++++++++ lang/fr_FR/settings.php | 13 +++ lang/fr_FR/settings/data_integration.php | 39 +++++++++ lang/fr_FR/settings/notifications.php | 56 ++++++++++++ lang/fr_FR/settings/thresholds.php | 22 +++++ lang/fr_FR/tools.php | 6 ++ lang/fr_FR/users.php | 15 ++++ lang/fr_FR/validation.php | 91 +++++++++++++++++++ lang/hi_IN/api_tokens.php | 30 +++++++ lang/hi_IN/auth.php | 20 +++++ lang/hi_IN/dashboard.php | 14 +++ lang/hi_IN/enums.php | 21 +++++ lang/hi_IN/errors.php | 23 +++++ lang/hi_IN/general.php | 106 +++++++++++++++++++++++ lang/hi_IN/passwords.php | 20 +++++ lang/hi_IN/results.php | 73 ++++++++++++++++ lang/hi_IN/settings.php | 13 +++ lang/hi_IN/settings/data_integration.php | 39 +++++++++ lang/hi_IN/settings/notifications.php | 56 ++++++++++++ lang/hi_IN/settings/thresholds.php | 22 +++++ lang/hi_IN/tools.php | 6 ++ lang/hi_IN/users.php | 15 ++++ lang/hi_IN/validation.php | 91 +++++++++++++++++++ lang/hr_HR/api_tokens.php | 30 +++++++ lang/hr_HR/auth.php | 20 +++++ lang/hr_HR/dashboard.php | 14 +++ lang/hr_HR/enums.php | 21 +++++ lang/hr_HR/errors.php | 23 +++++ lang/hr_HR/general.php | 106 +++++++++++++++++++++++ lang/hr_HR/passwords.php | 20 +++++ lang/hr_HR/results.php | 73 ++++++++++++++++ lang/hr_HR/settings.php | 13 +++ lang/hr_HR/settings/data_integration.php | 39 +++++++++ lang/hr_HR/settings/notifications.php | 56 ++++++++++++ lang/hr_HR/settings/thresholds.php | 22 +++++ lang/hr_HR/tools.php | 6 ++ lang/hr_HR/users.php | 15 ++++ lang/hr_HR/validation.php | 91 +++++++++++++++++++ lang/hu_HU/api_tokens.php | 30 +++++++ lang/hu_HU/auth.php | 20 +++++ lang/hu_HU/dashboard.php | 14 +++ lang/hu_HU/enums.php | 21 +++++ lang/hu_HU/errors.php | 23 +++++ lang/hu_HU/general.php | 106 +++++++++++++++++++++++ lang/hu_HU/passwords.php | 20 +++++ lang/hu_HU/results.php | 73 ++++++++++++++++ lang/hu_HU/settings.php | 13 +++ lang/hu_HU/settings/data_integration.php | 39 +++++++++ lang/hu_HU/settings/notifications.php | 56 ++++++++++++ lang/hu_HU/settings/thresholds.php | 22 +++++ lang/hu_HU/tools.php | 6 ++ lang/hu_HU/users.php | 15 ++++ lang/hu_HU/validation.php | 91 +++++++++++++++++++ lang/it_IT/api_tokens.php | 30 +++++++ lang/it_IT/auth.php | 20 +++++ lang/it_IT/dashboard.php | 14 +++ lang/it_IT/enums.php | 21 +++++ lang/it_IT/errors.php | 23 +++++ lang/it_IT/general.php | 106 +++++++++++++++++++++++ lang/it_IT/passwords.php | 20 +++++ lang/it_IT/results.php | 73 ++++++++++++++++ lang/it_IT/settings.php | 13 +++ lang/it_IT/settings/data_integration.php | 39 +++++++++ lang/it_IT/settings/notifications.php | 56 ++++++++++++ lang/it_IT/settings/thresholds.php | 22 +++++ lang/it_IT/tools.php | 6 ++ lang/it_IT/users.php | 15 ++++ lang/it_IT/validation.php | 91 +++++++++++++++++++ lang/ja_JP/api_tokens.php | 30 +++++++ lang/ja_JP/auth.php | 20 +++++ lang/ja_JP/dashboard.php | 14 +++ lang/ja_JP/enums.php | 21 +++++ lang/ja_JP/errors.php | 23 +++++ lang/ja_JP/general.php | 106 +++++++++++++++++++++++ lang/ja_JP/passwords.php | 20 +++++ lang/ja_JP/results.php | 73 ++++++++++++++++ lang/ja_JP/settings.php | 13 +++ lang/ja_JP/settings/data_integration.php | 39 +++++++++ lang/ja_JP/settings/notifications.php | 56 ++++++++++++ lang/ja_JP/settings/thresholds.php | 22 +++++ lang/ja_JP/tools.php | 6 ++ lang/ja_JP/users.php | 15 ++++ lang/ja_JP/validation.php | 91 +++++++++++++++++++ lang/ko_KR/api_tokens.php | 30 +++++++ lang/ko_KR/auth.php | 20 +++++ lang/ko_KR/dashboard.php | 14 +++ lang/ko_KR/enums.php | 21 +++++ lang/ko_KR/errors.php | 23 +++++ lang/ko_KR/general.php | 106 +++++++++++++++++++++++ lang/ko_KR/passwords.php | 20 +++++ lang/ko_KR/results.php | 73 ++++++++++++++++ lang/ko_KR/settings.php | 13 +++ lang/ko_KR/settings/data_integration.php | 39 +++++++++ lang/ko_KR/settings/notifications.php | 56 ++++++++++++ lang/ko_KR/settings/thresholds.php | 22 +++++ lang/ko_KR/tools.php | 6 ++ lang/ko_KR/users.php | 15 ++++ lang/ko_KR/validation.php | 91 +++++++++++++++++++ lang/nl_NL/api_tokens.php | 30 +++++++ lang/nl_NL/auth.php | 20 +++++ lang/nl_NL/dashboard.php | 14 +++ lang/nl_NL/enums.php | 21 +++++ lang/nl_NL/errors.php | 23 +++++ lang/nl_NL/general.php | 106 +++++++++++++++++++++++ lang/nl_NL/passwords.php | 20 +++++ lang/nl_NL/results.php | 73 ++++++++++++++++ lang/nl_NL/settings.php | 13 +++ lang/nl_NL/settings/data_integration.php | 39 +++++++++ lang/nl_NL/settings/notifications.php | 56 ++++++++++++ lang/nl_NL/settings/thresholds.php | 22 +++++ lang/nl_NL/tools.php | 6 ++ lang/nl_NL/users.php | 15 ++++ lang/nl_NL/validation.php | 91 +++++++++++++++++++ lang/pl_PL/api_tokens.php | 30 +++++++ lang/pl_PL/auth.php | 20 +++++ lang/pl_PL/dashboard.php | 14 +++ lang/pl_PL/enums.php | 21 +++++ lang/pl_PL/errors.php | 23 +++++ lang/pl_PL/general.php | 106 +++++++++++++++++++++++ lang/pl_PL/passwords.php | 20 +++++ lang/pl_PL/results.php | 73 ++++++++++++++++ lang/pl_PL/settings.php | 13 +++ lang/pl_PL/settings/data_integration.php | 39 +++++++++ lang/pl_PL/settings/notifications.php | 56 ++++++++++++ lang/pl_PL/settings/thresholds.php | 22 +++++ lang/pl_PL/tools.php | 6 ++ lang/pl_PL/users.php | 15 ++++ lang/pl_PL/validation.php | 91 +++++++++++++++++++ lang/pt_BR/api_tokens.php | 30 +++++++ lang/pt_BR/auth.php | 20 +++++ lang/pt_BR/dashboard.php | 14 +++ lang/pt_BR/enums.php | 21 +++++ lang/pt_BR/errors.php | 23 +++++ lang/pt_BR/general.php | 106 +++++++++++++++++++++++ lang/pt_BR/passwords.php | 20 +++++ lang/pt_BR/results.php | 73 ++++++++++++++++ lang/pt_BR/settings.php | 13 +++ lang/pt_BR/settings/data_integration.php | 39 +++++++++ lang/pt_BR/settings/notifications.php | 56 ++++++++++++ lang/pt_BR/settings/thresholds.php | 22 +++++ lang/pt_BR/tools.php | 6 ++ lang/pt_BR/users.php | 15 ++++ lang/pt_BR/validation.php | 91 +++++++++++++++++++ lang/pt_PT/api_tokens.php | 30 +++++++ lang/pt_PT/auth.php | 20 +++++ lang/pt_PT/dashboard.php | 14 +++ lang/pt_PT/enums.php | 21 +++++ lang/pt_PT/errors.php | 23 +++++ lang/pt_PT/general.php | 106 +++++++++++++++++++++++ lang/pt_PT/passwords.php | 20 +++++ lang/pt_PT/results.php | 73 ++++++++++++++++ lang/pt_PT/settings.php | 13 +++ lang/pt_PT/settings/data_integration.php | 39 +++++++++ lang/pt_PT/settings/notifications.php | 56 ++++++++++++ lang/pt_PT/settings/thresholds.php | 22 +++++ lang/pt_PT/tools.php | 6 ++ lang/pt_PT/users.php | 15 ++++ lang/pt_PT/validation.php | 91 +++++++++++++++++++ lang/ro_RO/api_tokens.php | 30 +++++++ lang/ro_RO/auth.php | 20 +++++ lang/ro_RO/dashboard.php | 14 +++ lang/ro_RO/enums.php | 21 +++++ lang/ro_RO/errors.php | 23 +++++ lang/ro_RO/general.php | 106 +++++++++++++++++++++++ lang/ro_RO/passwords.php | 20 +++++ lang/ro_RO/results.php | 73 ++++++++++++++++ lang/ro_RO/settings.php | 13 +++ lang/ro_RO/settings/data_integration.php | 39 +++++++++ lang/ro_RO/settings/notifications.php | 56 ++++++++++++ lang/ro_RO/settings/thresholds.php | 22 +++++ lang/ro_RO/tools.php | 6 ++ lang/ro_RO/users.php | 15 ++++ lang/ro_RO/validation.php | 91 +++++++++++++++++++ lang/ru_RU/api_tokens.php | 30 +++++++ lang/ru_RU/auth.php | 20 +++++ lang/ru_RU/dashboard.php | 14 +++ lang/ru_RU/enums.php | 21 +++++ lang/ru_RU/errors.php | 23 +++++ lang/ru_RU/general.php | 106 +++++++++++++++++++++++ lang/ru_RU/passwords.php | 20 +++++ lang/ru_RU/results.php | 73 ++++++++++++++++ lang/ru_RU/settings.php | 13 +++ lang/ru_RU/settings/data_integration.php | 39 +++++++++ lang/ru_RU/settings/notifications.php | 56 ++++++++++++ lang/ru_RU/settings/thresholds.php | 22 +++++ lang/ru_RU/tools.php | 6 ++ lang/ru_RU/users.php | 15 ++++ lang/ru_RU/validation.php | 91 +++++++++++++++++++ lang/ru_UA/api_tokens.php | 30 +++++++ lang/ru_UA/auth.php | 20 +++++ lang/ru_UA/dashboard.php | 14 +++ lang/ru_UA/enums.php | 21 +++++ lang/ru_UA/errors.php | 23 +++++ lang/ru_UA/general.php | 106 +++++++++++++++++++++++ lang/ru_UA/passwords.php | 20 +++++ lang/ru_UA/results.php | 73 ++++++++++++++++ lang/ru_UA/settings.php | 13 +++ lang/ru_UA/settings/data_integration.php | 39 +++++++++ lang/ru_UA/settings/notifications.php | 56 ++++++++++++ lang/ru_UA/settings/thresholds.php | 22 +++++ lang/ru_UA/tools.php | 6 ++ lang/ru_UA/users.php | 15 ++++ lang/ru_UA/validation.php | 91 +++++++++++++++++++ lang/sv_SE/api_tokens.php | 30 +++++++ lang/sv_SE/auth.php | 20 +++++ lang/sv_SE/dashboard.php | 14 +++ lang/sv_SE/enums.php | 21 +++++ lang/sv_SE/errors.php | 23 +++++ lang/sv_SE/general.php | 106 +++++++++++++++++++++++ lang/sv_SE/passwords.php | 20 +++++ lang/sv_SE/results.php | 73 ++++++++++++++++ lang/sv_SE/settings.php | 13 +++ lang/sv_SE/settings/data_integration.php | 39 +++++++++ lang/sv_SE/settings/notifications.php | 56 ++++++++++++ lang/sv_SE/settings/thresholds.php | 22 +++++ lang/sv_SE/tools.php | 6 ++ lang/sv_SE/users.php | 15 ++++ lang/sv_SE/validation.php | 91 +++++++++++++++++++ lang/tr_TR/api_tokens.php | 30 +++++++ lang/tr_TR/auth.php | 20 +++++ lang/tr_TR/dashboard.php | 14 +++ lang/tr_TR/enums.php | 21 +++++ lang/tr_TR/errors.php | 23 +++++ lang/tr_TR/general.php | 106 +++++++++++++++++++++++ lang/tr_TR/passwords.php | 20 +++++ lang/tr_TR/results.php | 73 ++++++++++++++++ lang/tr_TR/settings.php | 13 +++ lang/tr_TR/settings/data_integration.php | 39 +++++++++ lang/tr_TR/settings/notifications.php | 56 ++++++++++++ lang/tr_TR/settings/thresholds.php | 22 +++++ lang/tr_TR/tools.php | 6 ++ lang/tr_TR/users.php | 15 ++++ lang/tr_TR/validation.php | 91 +++++++++++++++++++ lang/zh_TW/api_tokens.php | 30 +++++++ lang/zh_TW/auth.php | 20 +++++ lang/zh_TW/dashboard.php | 14 +++ lang/zh_TW/enums.php | 21 +++++ lang/zh_TW/errors.php | 23 +++++ lang/zh_TW/general.php | 106 +++++++++++++++++++++++ lang/zh_TW/passwords.php | 20 +++++ lang/zh_TW/results.php | 73 ++++++++++++++++ lang/zh_TW/settings.php | 13 +++ lang/zh_TW/settings/data_integration.php | 39 +++++++++ lang/zh_TW/settings/notifications.php | 56 ++++++++++++ lang/zh_TW/settings/thresholds.php | 22 +++++ lang/zh_TW/tools.php | 6 ++ lang/zh_TW/users.php | 15 ++++ lang/zh_TW/validation.php | 91 +++++++++++++++++++ 330 files changed, 12078 insertions(+) create mode 100644 lang/ar_SA/api_tokens.php create mode 100644 lang/ar_SA/auth.php create mode 100644 lang/ar_SA/dashboard.php create mode 100644 lang/ar_SA/enums.php create mode 100644 lang/ar_SA/errors.php create mode 100644 lang/ar_SA/general.php create mode 100644 lang/ar_SA/passwords.php create mode 100644 lang/ar_SA/results.php create mode 100644 lang/ar_SA/settings.php create mode 100644 lang/ar_SA/settings/data_integration.php create mode 100644 lang/ar_SA/settings/notifications.php create mode 100644 lang/ar_SA/settings/thresholds.php create mode 100644 lang/ar_SA/tools.php create mode 100644 lang/ar_SA/users.php create mode 100644 lang/ar_SA/validation.php create mode 100644 lang/da_DK/api_tokens.php create mode 100644 lang/da_DK/auth.php create mode 100644 lang/da_DK/dashboard.php create mode 100644 lang/da_DK/enums.php create mode 100644 lang/da_DK/errors.php create mode 100644 lang/da_DK/general.php create mode 100644 lang/da_DK/passwords.php create mode 100644 lang/da_DK/results.php create mode 100644 lang/da_DK/settings.php create mode 100644 lang/da_DK/settings/data_integration.php create mode 100644 lang/da_DK/settings/notifications.php create mode 100644 lang/da_DK/settings/thresholds.php create mode 100644 lang/da_DK/tools.php create mode 100644 lang/da_DK/users.php create mode 100644 lang/da_DK/validation.php create mode 100644 lang/de_DE/api_tokens.php create mode 100644 lang/de_DE/auth.php create mode 100644 lang/de_DE/dashboard.php create mode 100644 lang/de_DE/enums.php create mode 100644 lang/de_DE/errors.php create mode 100644 lang/de_DE/general.php create mode 100644 lang/de_DE/passwords.php create mode 100644 lang/de_DE/results.php create mode 100644 lang/de_DE/settings.php create mode 100644 lang/de_DE/settings/data_integration.php create mode 100644 lang/de_DE/settings/notifications.php create mode 100644 lang/de_DE/settings/thresholds.php create mode 100644 lang/de_DE/tools.php create mode 100644 lang/de_DE/users.php create mode 100644 lang/de_DE/validation.php create mode 100644 lang/el_GR/api_tokens.php create mode 100644 lang/el_GR/auth.php create mode 100644 lang/el_GR/dashboard.php create mode 100644 lang/el_GR/enums.php create mode 100644 lang/el_GR/errors.php create mode 100644 lang/el_GR/general.php create mode 100644 lang/el_GR/passwords.php create mode 100644 lang/el_GR/results.php create mode 100644 lang/el_GR/settings.php create mode 100644 lang/el_GR/settings/data_integration.php create mode 100644 lang/el_GR/settings/notifications.php create mode 100644 lang/el_GR/settings/thresholds.php create mode 100644 lang/el_GR/tools.php create mode 100644 lang/el_GR/users.php create mode 100644 lang/el_GR/validation.php create mode 100644 lang/es_ES/api_tokens.php create mode 100644 lang/es_ES/auth.php create mode 100644 lang/es_ES/dashboard.php create mode 100644 lang/es_ES/enums.php create mode 100644 lang/es_ES/errors.php create mode 100644 lang/es_ES/general.php create mode 100644 lang/es_ES/passwords.php create mode 100644 lang/es_ES/results.php create mode 100644 lang/es_ES/settings.php create mode 100644 lang/es_ES/settings/data_integration.php create mode 100644 lang/es_ES/settings/notifications.php create mode 100644 lang/es_ES/settings/thresholds.php create mode 100644 lang/es_ES/tools.php create mode 100644 lang/es_ES/users.php create mode 100644 lang/es_ES/validation.php create mode 100644 lang/fr_FR/api_tokens.php create mode 100644 lang/fr_FR/auth.php create mode 100644 lang/fr_FR/dashboard.php create mode 100644 lang/fr_FR/enums.php create mode 100644 lang/fr_FR/errors.php create mode 100644 lang/fr_FR/general.php create mode 100644 lang/fr_FR/passwords.php create mode 100644 lang/fr_FR/results.php create mode 100644 lang/fr_FR/settings.php create mode 100644 lang/fr_FR/settings/data_integration.php create mode 100644 lang/fr_FR/settings/notifications.php create mode 100644 lang/fr_FR/settings/thresholds.php create mode 100644 lang/fr_FR/tools.php create mode 100644 lang/fr_FR/users.php create mode 100644 lang/fr_FR/validation.php create mode 100644 lang/hi_IN/api_tokens.php create mode 100644 lang/hi_IN/auth.php create mode 100644 lang/hi_IN/dashboard.php create mode 100644 lang/hi_IN/enums.php create mode 100644 lang/hi_IN/errors.php create mode 100644 lang/hi_IN/general.php create mode 100644 lang/hi_IN/passwords.php create mode 100644 lang/hi_IN/results.php create mode 100644 lang/hi_IN/settings.php create mode 100644 lang/hi_IN/settings/data_integration.php create mode 100644 lang/hi_IN/settings/notifications.php create mode 100644 lang/hi_IN/settings/thresholds.php create mode 100644 lang/hi_IN/tools.php create mode 100644 lang/hi_IN/users.php create mode 100644 lang/hi_IN/validation.php create mode 100644 lang/hr_HR/api_tokens.php create mode 100644 lang/hr_HR/auth.php create mode 100644 lang/hr_HR/dashboard.php create mode 100644 lang/hr_HR/enums.php create mode 100644 lang/hr_HR/errors.php create mode 100644 lang/hr_HR/general.php create mode 100644 lang/hr_HR/passwords.php create mode 100644 lang/hr_HR/results.php create mode 100644 lang/hr_HR/settings.php create mode 100644 lang/hr_HR/settings/data_integration.php create mode 100644 lang/hr_HR/settings/notifications.php create mode 100644 lang/hr_HR/settings/thresholds.php create mode 100644 lang/hr_HR/tools.php create mode 100644 lang/hr_HR/users.php create mode 100644 lang/hr_HR/validation.php create mode 100644 lang/hu_HU/api_tokens.php create mode 100644 lang/hu_HU/auth.php create mode 100644 lang/hu_HU/dashboard.php create mode 100644 lang/hu_HU/enums.php create mode 100644 lang/hu_HU/errors.php create mode 100644 lang/hu_HU/general.php create mode 100644 lang/hu_HU/passwords.php create mode 100644 lang/hu_HU/results.php create mode 100644 lang/hu_HU/settings.php create mode 100644 lang/hu_HU/settings/data_integration.php create mode 100644 lang/hu_HU/settings/notifications.php create mode 100644 lang/hu_HU/settings/thresholds.php create mode 100644 lang/hu_HU/tools.php create mode 100644 lang/hu_HU/users.php create mode 100644 lang/hu_HU/validation.php create mode 100644 lang/it_IT/api_tokens.php create mode 100644 lang/it_IT/auth.php create mode 100644 lang/it_IT/dashboard.php create mode 100644 lang/it_IT/enums.php create mode 100644 lang/it_IT/errors.php create mode 100644 lang/it_IT/general.php create mode 100644 lang/it_IT/passwords.php create mode 100644 lang/it_IT/results.php create mode 100644 lang/it_IT/settings.php create mode 100644 lang/it_IT/settings/data_integration.php create mode 100644 lang/it_IT/settings/notifications.php create mode 100644 lang/it_IT/settings/thresholds.php create mode 100644 lang/it_IT/tools.php create mode 100644 lang/it_IT/users.php create mode 100644 lang/it_IT/validation.php create mode 100644 lang/ja_JP/api_tokens.php create mode 100644 lang/ja_JP/auth.php create mode 100644 lang/ja_JP/dashboard.php create mode 100644 lang/ja_JP/enums.php create mode 100644 lang/ja_JP/errors.php create mode 100644 lang/ja_JP/general.php create mode 100644 lang/ja_JP/passwords.php create mode 100644 lang/ja_JP/results.php create mode 100644 lang/ja_JP/settings.php create mode 100644 lang/ja_JP/settings/data_integration.php create mode 100644 lang/ja_JP/settings/notifications.php create mode 100644 lang/ja_JP/settings/thresholds.php create mode 100644 lang/ja_JP/tools.php create mode 100644 lang/ja_JP/users.php create mode 100644 lang/ja_JP/validation.php create mode 100644 lang/ko_KR/api_tokens.php create mode 100644 lang/ko_KR/auth.php create mode 100644 lang/ko_KR/dashboard.php create mode 100644 lang/ko_KR/enums.php create mode 100644 lang/ko_KR/errors.php create mode 100644 lang/ko_KR/general.php create mode 100644 lang/ko_KR/passwords.php create mode 100644 lang/ko_KR/results.php create mode 100644 lang/ko_KR/settings.php create mode 100644 lang/ko_KR/settings/data_integration.php create mode 100644 lang/ko_KR/settings/notifications.php create mode 100644 lang/ko_KR/settings/thresholds.php create mode 100644 lang/ko_KR/tools.php create mode 100644 lang/ko_KR/users.php create mode 100644 lang/ko_KR/validation.php create mode 100644 lang/nl_NL/api_tokens.php create mode 100644 lang/nl_NL/auth.php create mode 100644 lang/nl_NL/dashboard.php create mode 100644 lang/nl_NL/enums.php create mode 100644 lang/nl_NL/errors.php create mode 100644 lang/nl_NL/general.php create mode 100644 lang/nl_NL/passwords.php create mode 100644 lang/nl_NL/results.php create mode 100644 lang/nl_NL/settings.php create mode 100644 lang/nl_NL/settings/data_integration.php create mode 100644 lang/nl_NL/settings/notifications.php create mode 100644 lang/nl_NL/settings/thresholds.php create mode 100644 lang/nl_NL/tools.php create mode 100644 lang/nl_NL/users.php create mode 100644 lang/nl_NL/validation.php create mode 100644 lang/pl_PL/api_tokens.php create mode 100644 lang/pl_PL/auth.php create mode 100644 lang/pl_PL/dashboard.php create mode 100644 lang/pl_PL/enums.php create mode 100644 lang/pl_PL/errors.php create mode 100644 lang/pl_PL/general.php create mode 100644 lang/pl_PL/passwords.php create mode 100644 lang/pl_PL/results.php create mode 100644 lang/pl_PL/settings.php create mode 100644 lang/pl_PL/settings/data_integration.php create mode 100644 lang/pl_PL/settings/notifications.php create mode 100644 lang/pl_PL/settings/thresholds.php create mode 100644 lang/pl_PL/tools.php create mode 100644 lang/pl_PL/users.php create mode 100644 lang/pl_PL/validation.php create mode 100644 lang/pt_BR/api_tokens.php create mode 100644 lang/pt_BR/auth.php create mode 100644 lang/pt_BR/dashboard.php create mode 100644 lang/pt_BR/enums.php create mode 100644 lang/pt_BR/errors.php create mode 100644 lang/pt_BR/general.php create mode 100644 lang/pt_BR/passwords.php create mode 100644 lang/pt_BR/results.php create mode 100644 lang/pt_BR/settings.php create mode 100644 lang/pt_BR/settings/data_integration.php create mode 100644 lang/pt_BR/settings/notifications.php create mode 100644 lang/pt_BR/settings/thresholds.php create mode 100644 lang/pt_BR/tools.php create mode 100644 lang/pt_BR/users.php create mode 100644 lang/pt_BR/validation.php create mode 100644 lang/pt_PT/api_tokens.php create mode 100644 lang/pt_PT/auth.php create mode 100644 lang/pt_PT/dashboard.php create mode 100644 lang/pt_PT/enums.php create mode 100644 lang/pt_PT/errors.php create mode 100644 lang/pt_PT/general.php create mode 100644 lang/pt_PT/passwords.php create mode 100644 lang/pt_PT/results.php create mode 100644 lang/pt_PT/settings.php create mode 100644 lang/pt_PT/settings/data_integration.php create mode 100644 lang/pt_PT/settings/notifications.php create mode 100644 lang/pt_PT/settings/thresholds.php create mode 100644 lang/pt_PT/tools.php create mode 100644 lang/pt_PT/users.php create mode 100644 lang/pt_PT/validation.php create mode 100644 lang/ro_RO/api_tokens.php create mode 100644 lang/ro_RO/auth.php create mode 100644 lang/ro_RO/dashboard.php create mode 100644 lang/ro_RO/enums.php create mode 100644 lang/ro_RO/errors.php create mode 100644 lang/ro_RO/general.php create mode 100644 lang/ro_RO/passwords.php create mode 100644 lang/ro_RO/results.php create mode 100644 lang/ro_RO/settings.php create mode 100644 lang/ro_RO/settings/data_integration.php create mode 100644 lang/ro_RO/settings/notifications.php create mode 100644 lang/ro_RO/settings/thresholds.php create mode 100644 lang/ro_RO/tools.php create mode 100644 lang/ro_RO/users.php create mode 100644 lang/ro_RO/validation.php create mode 100644 lang/ru_RU/api_tokens.php create mode 100644 lang/ru_RU/auth.php create mode 100644 lang/ru_RU/dashboard.php create mode 100644 lang/ru_RU/enums.php create mode 100644 lang/ru_RU/errors.php create mode 100644 lang/ru_RU/general.php create mode 100644 lang/ru_RU/passwords.php create mode 100644 lang/ru_RU/results.php create mode 100644 lang/ru_RU/settings.php create mode 100644 lang/ru_RU/settings/data_integration.php create mode 100644 lang/ru_RU/settings/notifications.php create mode 100644 lang/ru_RU/settings/thresholds.php create mode 100644 lang/ru_RU/tools.php create mode 100644 lang/ru_RU/users.php create mode 100644 lang/ru_RU/validation.php create mode 100644 lang/ru_UA/api_tokens.php create mode 100644 lang/ru_UA/auth.php create mode 100644 lang/ru_UA/dashboard.php create mode 100644 lang/ru_UA/enums.php create mode 100644 lang/ru_UA/errors.php create mode 100644 lang/ru_UA/general.php create mode 100644 lang/ru_UA/passwords.php create mode 100644 lang/ru_UA/results.php create mode 100644 lang/ru_UA/settings.php create mode 100644 lang/ru_UA/settings/data_integration.php create mode 100644 lang/ru_UA/settings/notifications.php create mode 100644 lang/ru_UA/settings/thresholds.php create mode 100644 lang/ru_UA/tools.php create mode 100644 lang/ru_UA/users.php create mode 100644 lang/ru_UA/validation.php create mode 100644 lang/sv_SE/api_tokens.php create mode 100644 lang/sv_SE/auth.php create mode 100644 lang/sv_SE/dashboard.php create mode 100644 lang/sv_SE/enums.php create mode 100644 lang/sv_SE/errors.php create mode 100644 lang/sv_SE/general.php create mode 100644 lang/sv_SE/passwords.php create mode 100644 lang/sv_SE/results.php create mode 100644 lang/sv_SE/settings.php create mode 100644 lang/sv_SE/settings/data_integration.php create mode 100644 lang/sv_SE/settings/notifications.php create mode 100644 lang/sv_SE/settings/thresholds.php create mode 100644 lang/sv_SE/tools.php create mode 100644 lang/sv_SE/users.php create mode 100644 lang/sv_SE/validation.php create mode 100644 lang/tr_TR/api_tokens.php create mode 100644 lang/tr_TR/auth.php create mode 100644 lang/tr_TR/dashboard.php create mode 100644 lang/tr_TR/enums.php create mode 100644 lang/tr_TR/errors.php create mode 100644 lang/tr_TR/general.php create mode 100644 lang/tr_TR/passwords.php create mode 100644 lang/tr_TR/results.php create mode 100644 lang/tr_TR/settings.php create mode 100644 lang/tr_TR/settings/data_integration.php create mode 100644 lang/tr_TR/settings/notifications.php create mode 100644 lang/tr_TR/settings/thresholds.php create mode 100644 lang/tr_TR/tools.php create mode 100644 lang/tr_TR/users.php create mode 100644 lang/tr_TR/validation.php create mode 100644 lang/zh_TW/api_tokens.php create mode 100644 lang/zh_TW/auth.php create mode 100644 lang/zh_TW/dashboard.php create mode 100644 lang/zh_TW/enums.php create mode 100644 lang/zh_TW/errors.php create mode 100644 lang/zh_TW/general.php create mode 100644 lang/zh_TW/passwords.php create mode 100644 lang/zh_TW/results.php create mode 100644 lang/zh_TW/settings.php create mode 100644 lang/zh_TW/settings/data_integration.php create mode 100644 lang/zh_TW/settings/notifications.php create mode 100644 lang/zh_TW/settings/thresholds.php create mode 100644 lang/zh_TW/tools.php create mode 100644 lang/zh_TW/users.php create mode 100644 lang/zh_TW/validation.php 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', + ], +]; From eaa1fab2b24dfdb79abfea6873fba0bbf4286f7c Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Mon, 17 Nov 2025 22:30:45 +0100 Subject: [PATCH 4/8] bug: Add missing strings to translation files (#2416) Co-authored-by: Alex Justesen --- lang/en/results.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lang/en/results.php b/lang/en/results.php index a50b85022..5799aa30a 100644 --- a/lang/en/results.php +++ b/lang/en/results.php @@ -70,4 +70,6 @@ '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', + 'run_speedtest' => 'Run Speedtest', + 'start' => 'Start', ]; From 405f155511521ae9f39639dfbc09a2c2afe07dc5 Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Mon, 17 Nov 2025 16:35:30 -0500 Subject: [PATCH 5/8] Removed unused translations (#2417) Co-authored-by: Alex Justesen <1144087+alexjustesen@users.noreply.github.com> --- lang/ar_SA/api_tokens.php | 30 ------- lang/ar_SA/auth.php | 20 ----- lang/ar_SA/dashboard.php | 14 --- lang/ar_SA/enums.php | 21 ----- lang/ar_SA/errors.php | 23 ----- lang/ar_SA/general.php | 106 ----------------------- lang/ar_SA/passwords.php | 20 ----- lang/ar_SA/results.php | 73 ---------------- lang/ar_SA/settings.php | 13 --- lang/ar_SA/settings/data_integration.php | 39 --------- lang/ar_SA/settings/notifications.php | 56 ------------ lang/ar_SA/settings/thresholds.php | 22 ----- lang/ar_SA/tools.php | 6 -- lang/ar_SA/users.php | 15 ---- lang/ar_SA/validation.php | 91 ------------------- lang/da_DK/api_tokens.php | 30 ------- lang/da_DK/auth.php | 20 ----- lang/da_DK/dashboard.php | 14 --- lang/da_DK/enums.php | 21 ----- lang/da_DK/errors.php | 23 ----- lang/da_DK/general.php | 106 ----------------------- lang/da_DK/passwords.php | 20 ----- lang/da_DK/results.php | 73 ---------------- lang/da_DK/settings.php | 13 --- lang/da_DK/settings/data_integration.php | 39 --------- lang/da_DK/settings/notifications.php | 56 ------------ lang/da_DK/settings/thresholds.php | 22 ----- lang/da_DK/tools.php | 6 -- lang/da_DK/users.php | 15 ---- lang/da_DK/validation.php | 91 ------------------- lang/el_GR/api_tokens.php | 30 ------- lang/el_GR/auth.php | 20 ----- lang/el_GR/dashboard.php | 14 --- lang/el_GR/enums.php | 21 ----- lang/el_GR/errors.php | 23 ----- lang/el_GR/general.php | 106 ----------------------- lang/el_GR/passwords.php | 20 ----- lang/el_GR/results.php | 73 ---------------- lang/el_GR/settings.php | 13 --- lang/el_GR/settings/data_integration.php | 39 --------- lang/el_GR/settings/notifications.php | 56 ------------ lang/el_GR/settings/thresholds.php | 22 ----- lang/el_GR/tools.php | 6 -- lang/el_GR/users.php | 15 ---- lang/el_GR/validation.php | 91 ------------------- lang/hi_IN/api_tokens.php | 30 ------- lang/hi_IN/auth.php | 20 ----- lang/hi_IN/dashboard.php | 14 --- lang/hi_IN/enums.php | 21 ----- lang/hi_IN/errors.php | 23 ----- lang/hi_IN/general.php | 106 ----------------------- lang/hi_IN/passwords.php | 20 ----- lang/hi_IN/results.php | 73 ---------------- lang/hi_IN/settings.php | 13 --- lang/hi_IN/settings/data_integration.php | 39 --------- lang/hi_IN/settings/notifications.php | 56 ------------ lang/hi_IN/settings/thresholds.php | 22 ----- lang/hi_IN/tools.php | 6 -- lang/hi_IN/users.php | 15 ---- lang/hi_IN/validation.php | 91 ------------------- lang/hr_HR/api_tokens.php | 30 ------- lang/hr_HR/auth.php | 20 ----- lang/hr_HR/dashboard.php | 14 --- lang/hr_HR/enums.php | 21 ----- lang/hr_HR/errors.php | 23 ----- lang/hr_HR/general.php | 106 ----------------------- lang/hr_HR/passwords.php | 20 ----- lang/hr_HR/results.php | 73 ---------------- lang/hr_HR/settings.php | 13 --- lang/hr_HR/settings/data_integration.php | 39 --------- lang/hr_HR/settings/notifications.php | 56 ------------ lang/hr_HR/settings/thresholds.php | 22 ----- lang/hr_HR/tools.php | 6 -- lang/hr_HR/users.php | 15 ---- lang/hr_HR/validation.php | 91 ------------------- lang/hu_HU/api_tokens.php | 30 ------- lang/hu_HU/auth.php | 20 ----- lang/hu_HU/dashboard.php | 14 --- lang/hu_HU/enums.php | 21 ----- lang/hu_HU/errors.php | 23 ----- lang/hu_HU/general.php | 106 ----------------------- lang/hu_HU/passwords.php | 20 ----- lang/hu_HU/results.php | 73 ---------------- lang/hu_HU/settings.php | 13 --- lang/hu_HU/settings/data_integration.php | 39 --------- lang/hu_HU/settings/notifications.php | 56 ------------ lang/hu_HU/settings/thresholds.php | 22 ----- lang/hu_HU/tools.php | 6 -- lang/hu_HU/users.php | 15 ---- lang/hu_HU/validation.php | 91 ------------------- lang/it_IT/api_tokens.php | 30 ------- lang/it_IT/auth.php | 20 ----- lang/it_IT/dashboard.php | 14 --- lang/it_IT/enums.php | 21 ----- lang/it_IT/errors.php | 23 ----- lang/it_IT/general.php | 106 ----------------------- lang/it_IT/passwords.php | 20 ----- lang/it_IT/results.php | 73 ---------------- lang/it_IT/settings.php | 13 --- lang/it_IT/settings/data_integration.php | 39 --------- lang/it_IT/settings/notifications.php | 56 ------------ lang/it_IT/settings/thresholds.php | 22 ----- lang/it_IT/tools.php | 6 -- lang/it_IT/users.php | 15 ---- lang/it_IT/validation.php | 91 ------------------- lang/ja_JP/api_tokens.php | 30 ------- lang/ja_JP/auth.php | 20 ----- lang/ja_JP/dashboard.php | 14 --- lang/ja_JP/enums.php | 21 ----- lang/ja_JP/errors.php | 23 ----- lang/ja_JP/general.php | 106 ----------------------- lang/ja_JP/passwords.php | 20 ----- lang/ja_JP/results.php | 73 ---------------- lang/ja_JP/settings.php | 13 --- lang/ja_JP/settings/data_integration.php | 39 --------- lang/ja_JP/settings/notifications.php | 56 ------------ lang/ja_JP/settings/thresholds.php | 22 ----- lang/ja_JP/tools.php | 6 -- lang/ja_JP/users.php | 15 ---- lang/ja_JP/validation.php | 91 ------------------- lang/ko_KR/api_tokens.php | 30 ------- lang/ko_KR/auth.php | 20 ----- lang/ko_KR/dashboard.php | 14 --- lang/ko_KR/enums.php | 21 ----- lang/ko_KR/errors.php | 23 ----- lang/ko_KR/general.php | 106 ----------------------- lang/ko_KR/passwords.php | 20 ----- lang/ko_KR/results.php | 73 ---------------- lang/ko_KR/settings.php | 13 --- lang/ko_KR/settings/data_integration.php | 39 --------- lang/ko_KR/settings/notifications.php | 56 ------------ lang/ko_KR/settings/thresholds.php | 22 ----- lang/ko_KR/tools.php | 6 -- lang/ko_KR/users.php | 15 ---- lang/ko_KR/validation.php | 91 ------------------- lang/pl_PL/api_tokens.php | 30 ------- lang/pl_PL/auth.php | 20 ----- lang/pl_PL/dashboard.php | 14 --- lang/pl_PL/enums.php | 21 ----- lang/pl_PL/errors.php | 23 ----- lang/pl_PL/general.php | 106 ----------------------- lang/pl_PL/passwords.php | 20 ----- lang/pl_PL/results.php | 73 ---------------- lang/pl_PL/settings.php | 13 --- lang/pl_PL/settings/data_integration.php | 39 --------- lang/pl_PL/settings/notifications.php | 56 ------------ lang/pl_PL/settings/thresholds.php | 22 ----- lang/pl_PL/tools.php | 6 -- lang/pl_PL/users.php | 15 ---- lang/pl_PL/validation.php | 91 ------------------- lang/pt_BR/api_tokens.php | 30 ------- lang/pt_BR/auth.php | 20 ----- lang/pt_BR/dashboard.php | 14 --- lang/pt_BR/enums.php | 21 ----- lang/pt_BR/errors.php | 23 ----- lang/pt_BR/general.php | 106 ----------------------- lang/pt_BR/passwords.php | 20 ----- lang/pt_BR/results.php | 73 ---------------- lang/pt_BR/settings.php | 13 --- lang/pt_BR/settings/data_integration.php | 39 --------- lang/pt_BR/settings/notifications.php | 56 ------------ lang/pt_BR/settings/thresholds.php | 22 ----- lang/pt_BR/tools.php | 6 -- lang/pt_BR/users.php | 15 ---- lang/pt_BR/validation.php | 91 ------------------- lang/pt_PT/api_tokens.php | 30 ------- lang/pt_PT/auth.php | 20 ----- lang/pt_PT/dashboard.php | 14 --- lang/pt_PT/enums.php | 21 ----- lang/pt_PT/errors.php | 23 ----- lang/pt_PT/general.php | 106 ----------------------- lang/pt_PT/passwords.php | 20 ----- lang/pt_PT/results.php | 73 ---------------- lang/pt_PT/settings.php | 13 --- lang/pt_PT/settings/data_integration.php | 39 --------- lang/pt_PT/settings/notifications.php | 56 ------------ lang/pt_PT/settings/thresholds.php | 22 ----- lang/pt_PT/tools.php | 6 -- lang/pt_PT/users.php | 15 ---- lang/pt_PT/validation.php | 91 ------------------- lang/ro_RO/api_tokens.php | 30 ------- lang/ro_RO/auth.php | 20 ----- lang/ro_RO/dashboard.php | 14 --- lang/ro_RO/enums.php | 21 ----- lang/ro_RO/errors.php | 23 ----- lang/ro_RO/general.php | 106 ----------------------- lang/ro_RO/passwords.php | 20 ----- lang/ro_RO/results.php | 73 ---------------- lang/ro_RO/settings.php | 13 --- lang/ro_RO/settings/data_integration.php | 39 --------- lang/ro_RO/settings/notifications.php | 56 ------------ lang/ro_RO/settings/thresholds.php | 22 ----- lang/ro_RO/tools.php | 6 -- lang/ro_RO/users.php | 15 ---- lang/ro_RO/validation.php | 91 ------------------- lang/ru_RU/api_tokens.php | 30 ------- lang/ru_RU/auth.php | 20 ----- lang/ru_RU/dashboard.php | 14 --- lang/ru_RU/enums.php | 21 ----- lang/ru_RU/errors.php | 23 ----- lang/ru_RU/general.php | 106 ----------------------- lang/ru_RU/passwords.php | 20 ----- lang/ru_RU/results.php | 73 ---------------- lang/ru_RU/settings.php | 13 --- lang/ru_RU/settings/data_integration.php | 39 --------- lang/ru_RU/settings/notifications.php | 56 ------------ lang/ru_RU/settings/thresholds.php | 22 ----- lang/ru_RU/tools.php | 6 -- lang/ru_RU/users.php | 15 ---- lang/ru_RU/validation.php | 91 ------------------- lang/ru_UA/api_tokens.php | 30 ------- lang/ru_UA/auth.php | 20 ----- lang/ru_UA/dashboard.php | 14 --- lang/ru_UA/enums.php | 21 ----- lang/ru_UA/errors.php | 23 ----- lang/ru_UA/general.php | 106 ----------------------- lang/ru_UA/passwords.php | 20 ----- lang/ru_UA/results.php | 73 ---------------- lang/ru_UA/settings.php | 13 --- lang/ru_UA/settings/data_integration.php | 39 --------- lang/ru_UA/settings/notifications.php | 56 ------------ lang/ru_UA/settings/thresholds.php | 22 ----- lang/ru_UA/tools.php | 6 -- lang/ru_UA/users.php | 15 ---- lang/ru_UA/validation.php | 91 ------------------- lang/sv_SE/api_tokens.php | 30 ------- lang/sv_SE/auth.php | 20 ----- lang/sv_SE/dashboard.php | 14 --- lang/sv_SE/enums.php | 21 ----- lang/sv_SE/errors.php | 23 ----- lang/sv_SE/general.php | 106 ----------------------- lang/sv_SE/passwords.php | 20 ----- lang/sv_SE/results.php | 73 ---------------- lang/sv_SE/settings.php | 13 --- lang/sv_SE/settings/data_integration.php | 39 --------- lang/sv_SE/settings/notifications.php | 56 ------------ lang/sv_SE/settings/thresholds.php | 22 ----- lang/sv_SE/tools.php | 6 -- lang/sv_SE/users.php | 15 ---- lang/sv_SE/validation.php | 91 ------------------- lang/tr_TR/api_tokens.php | 30 ------- lang/tr_TR/auth.php | 20 ----- lang/tr_TR/dashboard.php | 14 --- lang/tr_TR/enums.php | 21 ----- lang/tr_TR/errors.php | 23 ----- lang/tr_TR/general.php | 106 ----------------------- lang/tr_TR/passwords.php | 20 ----- lang/tr_TR/results.php | 73 ---------------- lang/tr_TR/settings.php | 13 --- lang/tr_TR/settings/data_integration.php | 39 --------- lang/tr_TR/settings/notifications.php | 56 ------------ lang/tr_TR/settings/thresholds.php | 22 ----- lang/tr_TR/tools.php | 6 -- lang/tr_TR/users.php | 15 ---- lang/tr_TR/validation.php | 91 ------------------- lang/zh_TW/api_tokens.php | 30 ------- lang/zh_TW/auth.php | 20 ----- lang/zh_TW/dashboard.php | 14 --- lang/zh_TW/enums.php | 21 ----- lang/zh_TW/errors.php | 23 ----- lang/zh_TW/general.php | 106 ----------------------- lang/zh_TW/passwords.php | 20 ----- lang/zh_TW/results.php | 73 ---------------- lang/zh_TW/settings.php | 13 --- lang/zh_TW/settings/data_integration.php | 39 --------- lang/zh_TW/settings/notifications.php | 56 ------------ lang/zh_TW/settings/thresholds.php | 22 ----- lang/zh_TW/tools.php | 6 -- lang/zh_TW/users.php | 15 ---- lang/zh_TW/validation.php | 91 ------------------- 270 files changed, 9882 deletions(-) delete mode 100644 lang/ar_SA/api_tokens.php delete mode 100644 lang/ar_SA/auth.php delete mode 100644 lang/ar_SA/dashboard.php delete mode 100644 lang/ar_SA/enums.php delete mode 100644 lang/ar_SA/errors.php delete mode 100644 lang/ar_SA/general.php delete mode 100644 lang/ar_SA/passwords.php delete mode 100644 lang/ar_SA/results.php delete mode 100644 lang/ar_SA/settings.php delete mode 100644 lang/ar_SA/settings/data_integration.php delete mode 100644 lang/ar_SA/settings/notifications.php delete mode 100644 lang/ar_SA/settings/thresholds.php delete mode 100644 lang/ar_SA/tools.php delete mode 100644 lang/ar_SA/users.php delete mode 100644 lang/ar_SA/validation.php delete mode 100644 lang/da_DK/api_tokens.php delete mode 100644 lang/da_DK/auth.php delete mode 100644 lang/da_DK/dashboard.php delete mode 100644 lang/da_DK/enums.php delete mode 100644 lang/da_DK/errors.php delete mode 100644 lang/da_DK/general.php delete mode 100644 lang/da_DK/passwords.php delete mode 100644 lang/da_DK/results.php delete mode 100644 lang/da_DK/settings.php delete mode 100644 lang/da_DK/settings/data_integration.php delete mode 100644 lang/da_DK/settings/notifications.php delete mode 100644 lang/da_DK/settings/thresholds.php delete mode 100644 lang/da_DK/tools.php delete mode 100644 lang/da_DK/users.php delete mode 100644 lang/da_DK/validation.php delete mode 100644 lang/el_GR/api_tokens.php delete mode 100644 lang/el_GR/auth.php delete mode 100644 lang/el_GR/dashboard.php delete mode 100644 lang/el_GR/enums.php delete mode 100644 lang/el_GR/errors.php delete mode 100644 lang/el_GR/general.php delete mode 100644 lang/el_GR/passwords.php delete mode 100644 lang/el_GR/results.php delete mode 100644 lang/el_GR/settings.php delete mode 100644 lang/el_GR/settings/data_integration.php delete mode 100644 lang/el_GR/settings/notifications.php delete mode 100644 lang/el_GR/settings/thresholds.php delete mode 100644 lang/el_GR/tools.php delete mode 100644 lang/el_GR/users.php delete mode 100644 lang/el_GR/validation.php delete mode 100644 lang/hi_IN/api_tokens.php delete mode 100644 lang/hi_IN/auth.php delete mode 100644 lang/hi_IN/dashboard.php delete mode 100644 lang/hi_IN/enums.php delete mode 100644 lang/hi_IN/errors.php delete mode 100644 lang/hi_IN/general.php delete mode 100644 lang/hi_IN/passwords.php delete mode 100644 lang/hi_IN/results.php delete mode 100644 lang/hi_IN/settings.php delete mode 100644 lang/hi_IN/settings/data_integration.php delete mode 100644 lang/hi_IN/settings/notifications.php delete mode 100644 lang/hi_IN/settings/thresholds.php delete mode 100644 lang/hi_IN/tools.php delete mode 100644 lang/hi_IN/users.php delete mode 100644 lang/hi_IN/validation.php delete mode 100644 lang/hr_HR/api_tokens.php delete mode 100644 lang/hr_HR/auth.php delete mode 100644 lang/hr_HR/dashboard.php delete mode 100644 lang/hr_HR/enums.php delete mode 100644 lang/hr_HR/errors.php delete mode 100644 lang/hr_HR/general.php delete mode 100644 lang/hr_HR/passwords.php delete mode 100644 lang/hr_HR/results.php delete mode 100644 lang/hr_HR/settings.php delete mode 100644 lang/hr_HR/settings/data_integration.php delete mode 100644 lang/hr_HR/settings/notifications.php delete mode 100644 lang/hr_HR/settings/thresholds.php delete mode 100644 lang/hr_HR/tools.php delete mode 100644 lang/hr_HR/users.php delete mode 100644 lang/hr_HR/validation.php delete mode 100644 lang/hu_HU/api_tokens.php delete mode 100644 lang/hu_HU/auth.php delete mode 100644 lang/hu_HU/dashboard.php delete mode 100644 lang/hu_HU/enums.php delete mode 100644 lang/hu_HU/errors.php delete mode 100644 lang/hu_HU/general.php delete mode 100644 lang/hu_HU/passwords.php delete mode 100644 lang/hu_HU/results.php delete mode 100644 lang/hu_HU/settings.php delete mode 100644 lang/hu_HU/settings/data_integration.php delete mode 100644 lang/hu_HU/settings/notifications.php delete mode 100644 lang/hu_HU/settings/thresholds.php delete mode 100644 lang/hu_HU/tools.php delete mode 100644 lang/hu_HU/users.php delete mode 100644 lang/hu_HU/validation.php delete mode 100644 lang/it_IT/api_tokens.php delete mode 100644 lang/it_IT/auth.php delete mode 100644 lang/it_IT/dashboard.php delete mode 100644 lang/it_IT/enums.php delete mode 100644 lang/it_IT/errors.php delete mode 100644 lang/it_IT/general.php delete mode 100644 lang/it_IT/passwords.php delete mode 100644 lang/it_IT/results.php delete mode 100644 lang/it_IT/settings.php delete mode 100644 lang/it_IT/settings/data_integration.php delete mode 100644 lang/it_IT/settings/notifications.php delete mode 100644 lang/it_IT/settings/thresholds.php delete mode 100644 lang/it_IT/tools.php delete mode 100644 lang/it_IT/users.php delete mode 100644 lang/it_IT/validation.php delete mode 100644 lang/ja_JP/api_tokens.php delete mode 100644 lang/ja_JP/auth.php delete mode 100644 lang/ja_JP/dashboard.php delete mode 100644 lang/ja_JP/enums.php delete mode 100644 lang/ja_JP/errors.php delete mode 100644 lang/ja_JP/general.php delete mode 100644 lang/ja_JP/passwords.php delete mode 100644 lang/ja_JP/results.php delete mode 100644 lang/ja_JP/settings.php delete mode 100644 lang/ja_JP/settings/data_integration.php delete mode 100644 lang/ja_JP/settings/notifications.php delete mode 100644 lang/ja_JP/settings/thresholds.php delete mode 100644 lang/ja_JP/tools.php delete mode 100644 lang/ja_JP/users.php delete mode 100644 lang/ja_JP/validation.php delete mode 100644 lang/ko_KR/api_tokens.php delete mode 100644 lang/ko_KR/auth.php delete mode 100644 lang/ko_KR/dashboard.php delete mode 100644 lang/ko_KR/enums.php delete mode 100644 lang/ko_KR/errors.php delete mode 100644 lang/ko_KR/general.php delete mode 100644 lang/ko_KR/passwords.php delete mode 100644 lang/ko_KR/results.php delete mode 100644 lang/ko_KR/settings.php delete mode 100644 lang/ko_KR/settings/data_integration.php delete mode 100644 lang/ko_KR/settings/notifications.php delete mode 100644 lang/ko_KR/settings/thresholds.php delete mode 100644 lang/ko_KR/tools.php delete mode 100644 lang/ko_KR/users.php delete mode 100644 lang/ko_KR/validation.php delete mode 100644 lang/pl_PL/api_tokens.php delete mode 100644 lang/pl_PL/auth.php delete mode 100644 lang/pl_PL/dashboard.php delete mode 100644 lang/pl_PL/enums.php delete mode 100644 lang/pl_PL/errors.php delete mode 100644 lang/pl_PL/general.php delete mode 100644 lang/pl_PL/passwords.php delete mode 100644 lang/pl_PL/results.php delete mode 100644 lang/pl_PL/settings.php delete mode 100644 lang/pl_PL/settings/data_integration.php delete mode 100644 lang/pl_PL/settings/notifications.php delete mode 100644 lang/pl_PL/settings/thresholds.php delete mode 100644 lang/pl_PL/tools.php delete mode 100644 lang/pl_PL/users.php delete mode 100644 lang/pl_PL/validation.php delete mode 100644 lang/pt_BR/api_tokens.php delete mode 100644 lang/pt_BR/auth.php delete mode 100644 lang/pt_BR/dashboard.php delete mode 100644 lang/pt_BR/enums.php delete mode 100644 lang/pt_BR/errors.php delete mode 100644 lang/pt_BR/general.php delete mode 100644 lang/pt_BR/passwords.php delete mode 100644 lang/pt_BR/results.php delete mode 100644 lang/pt_BR/settings.php delete mode 100644 lang/pt_BR/settings/data_integration.php delete mode 100644 lang/pt_BR/settings/notifications.php delete mode 100644 lang/pt_BR/settings/thresholds.php delete mode 100644 lang/pt_BR/tools.php delete mode 100644 lang/pt_BR/users.php delete mode 100644 lang/pt_BR/validation.php delete mode 100644 lang/pt_PT/api_tokens.php delete mode 100644 lang/pt_PT/auth.php delete mode 100644 lang/pt_PT/dashboard.php delete mode 100644 lang/pt_PT/enums.php delete mode 100644 lang/pt_PT/errors.php delete mode 100644 lang/pt_PT/general.php delete mode 100644 lang/pt_PT/passwords.php delete mode 100644 lang/pt_PT/results.php delete mode 100644 lang/pt_PT/settings.php delete mode 100644 lang/pt_PT/settings/data_integration.php delete mode 100644 lang/pt_PT/settings/notifications.php delete mode 100644 lang/pt_PT/settings/thresholds.php delete mode 100644 lang/pt_PT/tools.php delete mode 100644 lang/pt_PT/users.php delete mode 100644 lang/pt_PT/validation.php delete mode 100644 lang/ro_RO/api_tokens.php delete mode 100644 lang/ro_RO/auth.php delete mode 100644 lang/ro_RO/dashboard.php delete mode 100644 lang/ro_RO/enums.php delete mode 100644 lang/ro_RO/errors.php delete mode 100644 lang/ro_RO/general.php delete mode 100644 lang/ro_RO/passwords.php delete mode 100644 lang/ro_RO/results.php delete mode 100644 lang/ro_RO/settings.php delete mode 100644 lang/ro_RO/settings/data_integration.php delete mode 100644 lang/ro_RO/settings/notifications.php delete mode 100644 lang/ro_RO/settings/thresholds.php delete mode 100644 lang/ro_RO/tools.php delete mode 100644 lang/ro_RO/users.php delete mode 100644 lang/ro_RO/validation.php delete mode 100644 lang/ru_RU/api_tokens.php delete mode 100644 lang/ru_RU/auth.php delete mode 100644 lang/ru_RU/dashboard.php delete mode 100644 lang/ru_RU/enums.php delete mode 100644 lang/ru_RU/errors.php delete mode 100644 lang/ru_RU/general.php delete mode 100644 lang/ru_RU/passwords.php delete mode 100644 lang/ru_RU/results.php delete mode 100644 lang/ru_RU/settings.php delete mode 100644 lang/ru_RU/settings/data_integration.php delete mode 100644 lang/ru_RU/settings/notifications.php delete mode 100644 lang/ru_RU/settings/thresholds.php delete mode 100644 lang/ru_RU/tools.php delete mode 100644 lang/ru_RU/users.php delete mode 100644 lang/ru_RU/validation.php delete mode 100644 lang/ru_UA/api_tokens.php delete mode 100644 lang/ru_UA/auth.php delete mode 100644 lang/ru_UA/dashboard.php delete mode 100644 lang/ru_UA/enums.php delete mode 100644 lang/ru_UA/errors.php delete mode 100644 lang/ru_UA/general.php delete mode 100644 lang/ru_UA/passwords.php delete mode 100644 lang/ru_UA/results.php delete mode 100644 lang/ru_UA/settings.php delete mode 100644 lang/ru_UA/settings/data_integration.php delete mode 100644 lang/ru_UA/settings/notifications.php delete mode 100644 lang/ru_UA/settings/thresholds.php delete mode 100644 lang/ru_UA/tools.php delete mode 100644 lang/ru_UA/users.php delete mode 100644 lang/ru_UA/validation.php delete mode 100644 lang/sv_SE/api_tokens.php delete mode 100644 lang/sv_SE/auth.php delete mode 100644 lang/sv_SE/dashboard.php delete mode 100644 lang/sv_SE/enums.php delete mode 100644 lang/sv_SE/errors.php delete mode 100644 lang/sv_SE/general.php delete mode 100644 lang/sv_SE/passwords.php delete mode 100644 lang/sv_SE/results.php delete mode 100644 lang/sv_SE/settings.php delete mode 100644 lang/sv_SE/settings/data_integration.php delete mode 100644 lang/sv_SE/settings/notifications.php delete mode 100644 lang/sv_SE/settings/thresholds.php delete mode 100644 lang/sv_SE/tools.php delete mode 100644 lang/sv_SE/users.php delete mode 100644 lang/sv_SE/validation.php delete mode 100644 lang/tr_TR/api_tokens.php delete mode 100644 lang/tr_TR/auth.php delete mode 100644 lang/tr_TR/dashboard.php delete mode 100644 lang/tr_TR/enums.php delete mode 100644 lang/tr_TR/errors.php delete mode 100644 lang/tr_TR/general.php delete mode 100644 lang/tr_TR/passwords.php delete mode 100644 lang/tr_TR/results.php delete mode 100644 lang/tr_TR/settings.php delete mode 100644 lang/tr_TR/settings/data_integration.php delete mode 100644 lang/tr_TR/settings/notifications.php delete mode 100644 lang/tr_TR/settings/thresholds.php delete mode 100644 lang/tr_TR/tools.php delete mode 100644 lang/tr_TR/users.php delete mode 100644 lang/tr_TR/validation.php delete mode 100644 lang/zh_TW/api_tokens.php delete mode 100644 lang/zh_TW/auth.php delete mode 100644 lang/zh_TW/dashboard.php delete mode 100644 lang/zh_TW/enums.php delete mode 100644 lang/zh_TW/errors.php delete mode 100644 lang/zh_TW/general.php delete mode 100644 lang/zh_TW/passwords.php delete mode 100644 lang/zh_TW/results.php delete mode 100644 lang/zh_TW/settings.php delete mode 100644 lang/zh_TW/settings/data_integration.php delete mode 100644 lang/zh_TW/settings/notifications.php delete mode 100644 lang/zh_TW/settings/thresholds.php delete mode 100644 lang/zh_TW/tools.php delete mode 100644 lang/zh_TW/users.php delete mode 100644 lang/zh_TW/validation.php diff --git a/lang/ar_SA/api_tokens.php b/lang/ar_SA/api_tokens.php deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/ar_SA/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/ar_SA/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/ar_SA/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/ar_SA/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/ar_SA/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/ar_SA/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/ar_SA/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/ar_SA/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/ar_SA/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/ar_SA/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/ar_SA/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/ar_SA/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/ar_SA/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/ar_SA/users.php b/lang/ar_SA/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/ar_SA/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/ar_SA/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/da_DK/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/da_DK/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/da_DK/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/da_DK/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/da_DK/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/da_DK/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/da_DK/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/da_DK/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/da_DK/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/da_DK/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/da_DK/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/da_DK/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/da_DK/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/da_DK/users.php b/lang/da_DK/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/da_DK/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/da_DK/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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/el_GR/api_tokens.php b/lang/el_GR/api_tokens.php deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/el_GR/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/el_GR/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/el_GR/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/el_GR/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/el_GR/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/el_GR/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/el_GR/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/el_GR/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/el_GR/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/el_GR/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/el_GR/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/el_GR/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/el_GR/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/el_GR/users.php b/lang/el_GR/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/el_GR/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/el_GR/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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/hi_IN/api_tokens.php b/lang/hi_IN/api_tokens.php deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/hi_IN/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/hi_IN/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/hi_IN/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/hi_IN/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/hi_IN/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/hi_IN/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/hi_IN/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/hi_IN/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/hi_IN/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/hi_IN/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/hi_IN/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/hi_IN/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/hi_IN/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/hi_IN/users.php b/lang/hi_IN/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/hi_IN/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/hi_IN/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/hr_HR/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/hr_HR/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/hr_HR/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/hr_HR/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/hr_HR/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/hr_HR/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/hr_HR/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/hr_HR/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/hr_HR/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/hr_HR/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/hr_HR/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/hr_HR/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/hr_HR/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/hr_HR/users.php b/lang/hr_HR/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/hr_HR/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/hr_HR/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/hu_HU/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/hu_HU/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/hu_HU/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/hu_HU/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/hu_HU/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/hu_HU/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/hu_HU/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/hu_HU/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/hu_HU/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/hu_HU/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/hu_HU/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/hu_HU/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/hu_HU/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/hu_HU/users.php b/lang/hu_HU/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/hu_HU/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/hu_HU/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/it_IT/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/it_IT/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/it_IT/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/it_IT/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/it_IT/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/it_IT/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/it_IT/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/it_IT/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/it_IT/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/it_IT/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/it_IT/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/it_IT/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/it_IT/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/it_IT/users.php b/lang/it_IT/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/it_IT/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/it_IT/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/ja_JP/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/ja_JP/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/ja_JP/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/ja_JP/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/ja_JP/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/ja_JP/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/ja_JP/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/ja_JP/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/ja_JP/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/ja_JP/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/ja_JP/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/ja_JP/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/ja_JP/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/ja_JP/users.php b/lang/ja_JP/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/ja_JP/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/ja_JP/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/ko_KR/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/ko_KR/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/ko_KR/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/ko_KR/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/ko_KR/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/ko_KR/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/ko_KR/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/ko_KR/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/ko_KR/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/ko_KR/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/ko_KR/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/ko_KR/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/ko_KR/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/ko_KR/users.php b/lang/ko_KR/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/ko_KR/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/ko_KR/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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/pl_PL/api_tokens.php b/lang/pl_PL/api_tokens.php deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/pl_PL/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/pl_PL/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/pl_PL/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/pl_PL/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/pl_PL/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/pl_PL/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/pl_PL/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/pl_PL/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/pl_PL/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/pl_PL/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/pl_PL/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/pl_PL/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/pl_PL/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/pl_PL/users.php b/lang/pl_PL/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/pl_PL/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/pl_PL/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/pt_BR/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/pt_BR/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/pt_BR/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/pt_BR/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/pt_BR/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/pt_BR/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/pt_BR/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/pt_BR/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/pt_BR/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/pt_BR/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/pt_BR/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/pt_BR/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/pt_BR/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/pt_BR/users.php b/lang/pt_BR/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/pt_BR/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/pt_BR/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/pt_PT/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/pt_PT/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/pt_PT/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/pt_PT/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/pt_PT/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/pt_PT/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/pt_PT/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/pt_PT/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/pt_PT/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/pt_PT/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/pt_PT/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/pt_PT/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/pt_PT/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/pt_PT/users.php b/lang/pt_PT/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/pt_PT/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/pt_PT/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/ro_RO/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/ro_RO/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/ro_RO/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/ro_RO/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/ro_RO/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/ro_RO/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/ro_RO/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/ro_RO/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/ro_RO/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/ro_RO/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/ro_RO/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/ro_RO/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/ro_RO/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/ro_RO/users.php b/lang/ro_RO/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/ro_RO/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/ro_RO/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/ru_RU/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/ru_RU/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/ru_RU/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/ru_RU/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/ru_RU/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/ru_RU/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/ru_RU/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/ru_RU/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/ru_RU/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/ru_RU/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/ru_RU/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/ru_RU/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/ru_RU/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/ru_RU/users.php b/lang/ru_RU/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/ru_RU/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/ru_RU/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/ru_UA/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/ru_UA/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/ru_UA/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/ru_UA/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/ru_UA/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/ru_UA/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/ru_UA/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/ru_UA/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/ru_UA/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/ru_UA/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/ru_UA/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/ru_UA/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/ru_UA/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/ru_UA/users.php b/lang/ru_UA/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/ru_UA/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/ru_UA/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/sv_SE/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/sv_SE/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/sv_SE/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/sv_SE/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/sv_SE/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/sv_SE/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/sv_SE/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/sv_SE/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/sv_SE/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/sv_SE/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/sv_SE/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/sv_SE/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/sv_SE/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/sv_SE/users.php b/lang/sv_SE/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/sv_SE/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/sv_SE/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/tr_TR/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/tr_TR/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/tr_TR/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/tr_TR/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/tr_TR/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/tr_TR/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/tr_TR/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/tr_TR/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/tr_TR/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/tr_TR/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/tr_TR/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/tr_TR/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/tr_TR/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/tr_TR/users.php b/lang/tr_TR/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/tr_TR/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/tr_TR/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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 deleted file mode 100644 index 7324ea6b4..000000000 --- a/lang/zh_TW/api_tokens.php +++ /dev/null @@ -1,30 +0,0 @@ - '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 deleted file mode 100644 index 6598e2c06..000000000 --- a/lang/zh_TW/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index 14e843caa..000000000 --- a/lang/zh_TW/dashboard.php +++ /dev/null @@ -1,14 +0,0 @@ - '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 deleted file mode 100644 index c1ff432af..000000000 --- a/lang/zh_TW/enums.php +++ /dev/null @@ -1,21 +0,0 @@ - [ - '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 deleted file mode 100644 index 9287fe21a..000000000 --- a/lang/zh_TW/errors.php +++ /dev/null @@ -1,23 +0,0 @@ - '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 deleted file mode 100644 index 41f3add2c..000000000 --- a/lang/zh_TW/general.php +++ /dev/null @@ -1,106 +0,0 @@ - '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 deleted file mode 100644 index 6c82e5827..000000000 --- a/lang/zh_TW/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '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 deleted file mode 100644 index a50b85022..000000000 --- a/lang/zh_TW/results.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 31933b420..000000000 --- a/lang/zh_TW/settings.php +++ /dev/null @@ -1,13 +0,0 @@ - '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 deleted file mode 100644 index 0f3887671..000000000 --- a/lang/zh_TW/settings/data_integration.php +++ /dev/null @@ -1,39 +0,0 @@ - '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 deleted file mode 100644 index 77f779529..000000000 --- a/lang/zh_TW/settings/notifications.php +++ /dev/null @@ -1,56 +0,0 @@ - '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 deleted file mode 100644 index 6746d607b..000000000 --- a/lang/zh_TW/settings/thresholds.php +++ /dev/null @@ -1,22 +0,0 @@ - '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 deleted file mode 100644 index f24f227c4..000000000 --- a/lang/zh_TW/tools.php +++ /dev/null @@ -1,6 +0,0 @@ - 'Ookla servers', -]; diff --git a/lang/zh_TW/users.php b/lang/zh_TW/users.php deleted file mode 100644 index e1a2db217..000000000 --- a/lang/zh_TW/users.php +++ /dev/null @@ -1,15 +0,0 @@ - '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 deleted file mode 100644 index 1db044439..000000000 --- a/lang/zh_TW/validation.php +++ /dev/null @@ -1,91 +0,0 @@ - [ - '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', - ], -]; From e2f65f8f161b1c7909669eee68304be6cf2da459 Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Mon, 17 Nov 2025 17:00:26 -0500 Subject: [PATCH 6/8] Update translation for column titles in results table (#2420) Co-authored-by: Alex Justesen <1144087+alexjustesen@users.noreply.github.com> --- app/Filament/Resources/Results/Tables/ResultTable.php | 2 +- lang/en/results.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/Results/Tables/ResultTable.php b/app/Filament/Resources/Results/Tables/ResultTable.php index 06ce2626a..e09d98082 100644 --- a/app/Filament/Resources/Results/Tables/ResultTable.php +++ b/app/Filament/Resources/Results/Tables/ResultTable.php @@ -182,7 +182,7 @@ public static function table(Table $table): Table ->sortable() ->alignment(Alignment::Center), TextColumn::make('data.message') - ->label(__('results.error_message')) + ->label(__('results.error_message_title')) ->limit(15) ->tooltip(fn ($state) => $state) ->toggleable(isToggledHiddenByDefault: true) diff --git a/lang/en/results.php b/lang/en/results.php index 5799aa30a..1cd083492 100644 --- a/lang/en/results.php +++ b/lang/en/results.php @@ -3,18 +3,22 @@ return [ 'title' => 'Results', 'result_overview' => 'Result overview', + 'error_message_title' => 'Error message', // Metrics + 'download' => 'Download', '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' => 'Upload', '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' => 'Ping', 'ping_details' => 'Ping details', 'ping_jitter' => 'Ping jitter', 'ping_high' => 'Ping high', From a1d04010d33ff795ad566589c7b90918ca5ca082 Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Mon, 17 Nov 2025 17:19:50 -0500 Subject: [PATCH 7/8] New Crowdin updates (#2419) --- lang/de_DE/results.php | 6 ++++++ lang/es_ES/results.php | 6 ++++++ lang/fr_FR/results.php | 6 ++++++ lang/nl_NL/results.php | 6 ++++++ 4 files changed, 24 insertions(+) diff --git a/lang/de_DE/results.php b/lang/de_DE/results.php index 143dbcf2f..e14106acf 100644 --- a/lang/de_DE/results.php +++ b/lang/de_DE/results.php @@ -3,18 +3,22 @@ return [ 'title' => 'Ergebnisse', 'result_overview' => 'Ergebnisübersicht', + 'error_message_title' => 'Error message', // Metrics + 'download' => 'Download', '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' => 'Upload', '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' => 'Ping', 'ping_details' => 'Ping-Details', 'ping_jitter' => 'Ping-Jitter', 'ping_high' => 'Ping hoch', @@ -70,4 +74,6 @@ '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', + 'run_speedtest' => 'Run Speedtest', + 'start' => 'Start', ]; diff --git a/lang/es_ES/results.php b/lang/es_ES/results.php index 9127c6122..f41af5df8 100644 --- a/lang/es_ES/results.php +++ b/lang/es_ES/results.php @@ -3,18 +3,22 @@ return [ 'title' => 'Resultados', 'result_overview' => 'Resumen de resultados', + 'error_message_title' => 'Mensaje de error', // Metrics + 'download' => 'Descargar', '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' => 'Subir', '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' => 'Señal', 'ping_details' => 'Detalles de ping', 'ping_jitter' => 'Ping jitter', 'ping_high' => 'Ping alto', @@ -70,4 +74,6 @@ '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', + 'run_speedtest' => 'Ejecutar prueba de velocidad', + 'start' => 'Empezar', ]; diff --git a/lang/fr_FR/results.php b/lang/fr_FR/results.php index 8a9d1a15e..79ffac786 100644 --- a/lang/fr_FR/results.php +++ b/lang/fr_FR/results.php @@ -3,18 +3,22 @@ return [ 'title' => 'Résultats', 'result_overview' => 'Aperçu des résultats', + 'error_message_title' => 'Error message', // Metrics + 'download' => 'Download', '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' => 'Upload', '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' => 'Ping', 'ping_details' => 'Détails des latences', 'ping_jitter' => 'Latence gigue', 'ping_high' => 'Latence élevée', @@ -70,4 +74,6 @@ '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', + 'run_speedtest' => 'Run Speedtest', + 'start' => 'Start', ]; diff --git a/lang/nl_NL/results.php b/lang/nl_NL/results.php index 546f857c3..353be80ab 100644 --- a/lang/nl_NL/results.php +++ b/lang/nl_NL/results.php @@ -3,18 +3,22 @@ return [ 'title' => 'Resultaten', 'result_overview' => 'Overzicht van resultaten', + 'error_message_title' => 'Error message', // Metrics + 'download' => 'Download', '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' => 'Upload', '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' => 'Ping', 'ping_details' => 'Ping details', 'ping_jitter' => 'Ping jitter', 'ping_high' => 'Ping hoog', @@ -70,4 +74,6 @@ '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', + 'run_speedtest' => 'Snelheidstest uitvoeren', + 'start' => 'Begin test', ]; From 0e137833244fdf4341dadcaeefccf09506eae205 Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Mon, 17 Nov 2025 17:20:52 -0500 Subject: [PATCH 8/8] Release v1.8.0 (#2418) Co-authored-by: Alex Justesen <1144087+alexjustesen@users.noreply.github.com> --- config/app.php | 148 ++++++++++++++++++++++++++++++++++++++++++- config/speedtest.php | 4 +- 2 files changed, 149 insertions(+), 3 deletions(-) diff --git a/config/app.php b/config/app.php index d670df243..3222e37bd 100644 --- a/config/app.php +++ b/config/app.php @@ -2,19 +2,165 @@ return [ + /* + |-------------------------------------------------------------------------- + | Application Name + |-------------------------------------------------------------------------- + | + | This value is the name of your application, which will be used when the + | framework needs to place the application's name in a notification or + | other UI elements where an application name needs to be displayed. + | + */ + 'name' => env('APP_NAME', 'Speedtest Tracker'), + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + 'env' => env('APP_ENV', 'production'), + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | the application so that it's available within Artisan commands. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'force_https' => env('FORCE_HTTPS', false), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. The timezone + | is set to "UTC" by default as it is suitable for most use cases. + | + */ + + 'timezone' => env('APP_TIMEZONE', 'UTC'), + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by Laravel's translation / localization methods. This option can be + | set to any locale for which you plan to have translation strings. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), + + 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is utilized by Laravel's encryption services and should be set + | to a random, 32 character string to ensure that all encrypted values + | are secure. You should do this prior to deploying the application. + | + */ + + 'cipher' => 'AES-256-CBC', + + 'key' => env('APP_KEY'), + + 'previous_keys' => [ + ...array_filter( + explode(',', env('APP_PREVIOUS_KEYS', '')) + ), + ], + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), + ], + + // TODO: move to speedtest.php configuration file + + /* + |-------------------------------------------------------------------------- + | Chart Configuration + |-------------------------------------------------------------------------- + | + | Here you may specify the default settings for charts used in the application. + | + */ + 'chart_begin_at_zero' => env('CHART_BEGIN_AT_ZERO', true), 'chart_datetime_format' => env('CHART_DATETIME_FORMAT', 'M. j - G:i'), + /* + |-------------------------------------------------------------------------- + | Display Configuration + |-------------------------------------------------------------------------- + | + | Here you may specify the default settings for displaying data in the application. + | + */ + 'datetime_format' => env('DATETIME_FORMAT', 'M. jS, Y g:ia'), 'display_timezone' => env('DISPLAY_TIMEZONE', 'UTC'), - 'force_https' => env('FORCE_HTTPS', false), + /* + |-------------------------------------------------------------------------- + | Admin Configuration + |-------------------------------------------------------------------------- + | + | Here you may specify the default account settings for the admin user at installation. + | + */ 'admin_name' => env('ADMIN_NAME', 'Admin'), diff --git a/config/speedtest.php b/config/speedtest.php index 7afdd56f5..e58c75a47 100644 --- a/config/speedtest.php +++ b/config/speedtest.php @@ -6,9 +6,9 @@ /** * General settings. */ - 'build_date' => Carbon::parse('2025-11-13'), + 'build_date' => Carbon::parse('2025-11-17'), - 'build_version' => 'v1.7.4', + 'build_version' => 'v1.8.0', 'content_width' => env('CONTENT_WIDTH', '7xl'),