From 84697624095cf1a921881fae18d893cb6b1360d8 Mon Sep 17 00:00:00 2001 From: petrekanics <75931275+petrekanics@users.noreply.github.com> Date: Fri, 31 Oct 2025 19:57:10 +0100 Subject: [PATCH 1/5] feature add language switcher and translations (#2345) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Petrekanics Máté Co-authored-by: Alex Justesen --- .../SendDatabaseTestNotification.php | 8 +- .../SendDiscordTestNotification.php | 6 +- .../SendGotifyTestNotification.php | 6 +- .../SendHealthCheckTestNotification.php | 6 +- .../SendMailTestNotification.php | 4 +- .../SendNtfyTestNotification.php | 6 +- .../SendPushoverTestNotification.php | 6 +- .../SendSlackTestNotification.php | 6 +- .../SendTelegramTestNotification.php | 4 +- .../SendWebhookTestNotification.php | 6 +- app/Console/Commands/OoklaListServers.php | 2 +- app/Console/Commands/ResultFixStatuses.php | 10 +- app/Console/Commands/UserChangeRole.php | 10 +- app/Console/Commands/UserResetPassword.php | 6 +- app/Enums/ResultService.php | 2 +- app/Enums/ResultStatus.php | 2 +- app/Enums/UserRole.php | 2 +- app/Filament/Exports/ResultExporter.php | 27 +- .../Pages/Settings/DataIntegrationPage.php | 45 +-- .../Pages/Settings/NotificationPage.php | 186 ++++++----- .../Pages/Settings/ThresholdsPage.php | 19 +- .../ApiTokenResource/Pages/ListApiTokens.php | 6 +- app/Filament/Widgets/StatsOverviewWidget.php | 24 +- app/Providers/Filament/AdminPanelProvider.php | 21 +- app/Rules/Cron.php | 2 +- lang/en/translations.php | 290 ++++++++++++++++++ 26 files changed, 531 insertions(+), 181 deletions(-) create mode 100644 lang/en/translations.php diff --git a/app/Actions/Notifications/SendDatabaseTestNotification.php b/app/Actions/Notifications/SendDatabaseTestNotification.php index 6611ad491..2c50f39f0 100644 --- a/app/Actions/Notifications/SendDatabaseTestNotification.php +++ b/app/Actions/Notifications/SendDatabaseTestNotification.php @@ -14,15 +14,15 @@ public function handle(User $user) { $user->notify( Notification::make() - ->title('Test database notification received!') - ->body('You say pong') + ->title(__('translations.notifications.database.received')) + ->body(__('translations.notifications.database.pong')) ->success() ->toDatabase(), ); Notification::make() - ->title('Test database notification sent.') - ->body('I say ping') + ->title(__('translations.notifications.database.sent')) + ->body(__('translations.notifications.database.ping')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendDiscordTestNotification.php b/app/Actions/Notifications/SendDiscordTestNotification.php index edad6d239..dda8ad924 100644 --- a/app/Actions/Notifications/SendDiscordTestNotification.php +++ b/app/Actions/Notifications/SendDiscordTestNotification.php @@ -14,7 +14,7 @@ public function handle(array $webhooks) { if (! count($webhooks)) { Notification::make() - ->title('You need to add Discord urls!') + ->title(__('translations.notifications.discord.add')) ->warning() ->send(); @@ -24,13 +24,13 @@ public function handle(array $webhooks) foreach ($webhooks as $webhook) { WebhookCall::create() ->url($webhook['url']) - ->payload(['content' => '👋 Testing the Discord notification channel.']) + ->payload(['content' => __('translations.notifications.discord.payload')]) ->doNotSign() ->dispatch(); } Notification::make() - ->title('Test Discord notification sent.') + ->title(__('translations.notifications.discord.sent')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendGotifyTestNotification.php b/app/Actions/Notifications/SendGotifyTestNotification.php index fdd6405de..54fde0766 100644 --- a/app/Actions/Notifications/SendGotifyTestNotification.php +++ b/app/Actions/Notifications/SendGotifyTestNotification.php @@ -14,7 +14,7 @@ public function handle(array $webhooks) { if (! count($webhooks)) { Notification::make() - ->title('You need to add Gotify urls!') + ->title(__('translations.notifications.gotfy.add')) ->warning() ->send(); @@ -24,13 +24,13 @@ public function handle(array $webhooks) foreach ($webhooks as $webhook) { WebhookCall::create() ->url($webhook['url']) - ->payload(['message' => '👋 Testing the Gotify notification channel.']) + ->payload(['message' => __('translations.notifications.gotfy.payload')]) ->doNotSign() ->dispatch(); } Notification::make() - ->title('Test Gotify notification sent.') + ->title(__('translations.notifications.gotfy.sent')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendHealthCheckTestNotification.php b/app/Actions/Notifications/SendHealthCheckTestNotification.php index f37e20fad..ceccf15ac 100644 --- a/app/Actions/Notifications/SendHealthCheckTestNotification.php +++ b/app/Actions/Notifications/SendHealthCheckTestNotification.php @@ -14,7 +14,7 @@ public function handle(array $webhooks) { if (! count($webhooks)) { Notification::make() - ->title('You need to add HealthCheck.io urls!') + ->title(__('translations.notifications.health_check.add')) ->warning() ->send(); @@ -24,13 +24,13 @@ public function handle(array $webhooks) foreach ($webhooks as $webhook) { WebhookCall::create() ->url($webhook['url']) - ->payload(['message' => '👋 Testing the HealthCheck.io notification channel.']) + ->payload(['message' => __('translations.notifications.health_check.payload')]) ->doNotSign() ->dispatch(); } Notification::make() - ->title('Test HealthCheck.io notification sent.') + ->title(__('translations.notifications.health_check.sent')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendMailTestNotification.php b/app/Actions/Notifications/SendMailTestNotification.php index df293ef6b..e5139436a 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(__('translations.notifications.mail.add')) ->warning() ->send(); @@ -28,7 +28,7 @@ public function handle(array $recipients) } Notification::make() - ->title('Test mail notification sent.') + ->title(__('translations.notifications.mail.sent')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendNtfyTestNotification.php b/app/Actions/Notifications/SendNtfyTestNotification.php index 8975febaa..ae1812375 100644 --- a/app/Actions/Notifications/SendNtfyTestNotification.php +++ b/app/Actions/Notifications/SendNtfyTestNotification.php @@ -14,7 +14,7 @@ public function handle(array $webhooks) { if (! count($webhooks)) { Notification::make() - ->title('You need to add ntfy urls!') + ->title(__('translations.notifications.ntfy.add')) ->warning() ->send(); @@ -26,7 +26,7 @@ public function handle(array $webhooks) ->url($webhook['url']) ->payload([ 'topic' => $webhook['topic'], - 'message' => '👋 Testing the ntfy notification channel.', + 'message' => __('translations.notifications.ntfy.payload'), ]) ->doNotSign(); @@ -42,7 +42,7 @@ public function handle(array $webhooks) } Notification::make() - ->title('Test ntfy notification sent.') + ->title(__('translations.notifications.ntfy.sent')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendPushoverTestNotification.php b/app/Actions/Notifications/SendPushoverTestNotification.php index d37b0594d..a2c9f865e 100644 --- a/app/Actions/Notifications/SendPushoverTestNotification.php +++ b/app/Actions/Notifications/SendPushoverTestNotification.php @@ -14,7 +14,7 @@ public function handle(array $webhooks) { if (! count($webhooks)) { Notification::make() - ->title('You need to add Pushover URLs!') + ->title(__('translations.notifications.pushover.add')) ->warning() ->send(); @@ -27,14 +27,14 @@ public function handle(array $webhooks) ->payload([ 'token' => $webhook['api_token'], 'user' => $webhook['user_key'], - 'message' => '👋 Testing the Pushover notification channel.', + 'message' => __('translations.notifications.pushover.payload'), ]) ->doNotSign() ->dispatch(); } Notification::make() - ->title('Test Pushover notification sent.') + ->title(__('translations.notifications.pushover.sent')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendSlackTestNotification.php b/app/Actions/Notifications/SendSlackTestNotification.php index 95db18439..640e0e080 100644 --- a/app/Actions/Notifications/SendSlackTestNotification.php +++ b/app/Actions/Notifications/SendSlackTestNotification.php @@ -14,7 +14,7 @@ public function handle(array $webhooks) { if (! count($webhooks)) { Notification::make() - ->title('You need to add Slack URLs!') + ->title(__('translations.notifications.slack.add')) ->warning() ->send(); @@ -24,13 +24,13 @@ public function handle(array $webhooks) foreach ($webhooks as $webhook) { WebhookCall::create() ->url($webhook['url']) - ->payload(['text' => '👋 Testing the Slack notification channel.']) + ->payload(['text' => __('translations.notifications.slack.payload')]) ->doNotSign() ->dispatch(); } Notification::make() - ->title('Test Slack notification sent.') + ->title(__('translations.notifications.slack.sent')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendTelegramTestNotification.php b/app/Actions/Notifications/SendTelegramTestNotification.php index c7c64a815..72a96812d 100644 --- a/app/Actions/Notifications/SendTelegramTestNotification.php +++ b/app/Actions/Notifications/SendTelegramTestNotification.php @@ -15,7 +15,7 @@ public function handle(array $recipients) { if (! count($recipients)) { Notification::make() - ->title('You need to add Telegram recipients!') + ->title(__('translations.notifications.telegram.add')) ->warning() ->send(); @@ -28,7 +28,7 @@ public function handle(array $recipients) } Notification::make() - ->title('Test Telegram notification sent.') + ->title(__('translations.notifications.telegram.sent')) ->success() ->send(); } diff --git a/app/Actions/Notifications/SendWebhookTestNotification.php b/app/Actions/Notifications/SendWebhookTestNotification.php index 834a1d0cc..995f003b9 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(__('translations.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' => __('translations.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(__('translations.notifications.webhook.sent')) ->success() ->send(); } diff --git a/app/Console/Commands/OoklaListServers.php b/app/Console/Commands/OoklaListServers.php index 5710a1bee..584eb9a73 100644 --- a/app/Console/Commands/OoklaListServers.php +++ b/app/Console/Commands/OoklaListServers.php @@ -40,7 +40,7 @@ public function handle(): void ); if ($response->failed()) { - $this->fail('There was an issue retrieving a list of speedtest servers, check the logs.'); + $this->fail(__('translations.ookla_error')); } $fields = ['id', 'sponsor', 'name', 'country', 'distance']; diff --git a/app/Console/Commands/ResultFixStatuses.php b/app/Console/Commands/ResultFixStatuses.php index 16aa20f64..5188ae74d 100644 --- a/app/Console/Commands/ResultFixStatuses.php +++ b/app/Console/Commands/ResultFixStatuses.php @@ -30,11 +30,11 @@ public function handle(): void { $this->newLine(); - $this->info('This will check each result and correct the status to "completed" or "failed" based on the data column.'); - $this->info('📖 Read the docs: https://docs.speedtest-tracker.dev/other/commands'); + $this->info(__('translations.status_fix.info_1')); + $this->info(__('translations.status_fix.info_2')); - if (! $this->confirm('Do you want to continue?')) { - $this->fail('Command cancelled.'); + if (! $this->confirm(__('translations.confirm'))) { + $this->fail(__('translations.fail')); } /** @@ -63,6 +63,6 @@ public function handle(): void 'status' => ResultStatus::Failed, ]); - $this->line('✅ finished!'); + $this->line(__('translations.status_fix.finished')); } } diff --git a/app/Console/Commands/UserChangeRole.php b/app/Console/Commands/UserChangeRole.php index e21db8f96..38dae7fee 100644 --- a/app/Console/Commands/UserChangeRole.php +++ b/app/Console/Commands/UserChangeRole.php @@ -31,7 +31,7 @@ class UserChangeRole extends Command public function handle(): void { $email = text( - label: 'What is the email address?', + label: __('translations.user_change.what_is_the_email_address'), required: true, validate: fn (string $value) => match (true) { ! User::firstWhere('email', $value) => 'User not found.', @@ -40,10 +40,10 @@ public function handle(): void ); $role = select( - label: 'What role should the user have?', + label: __('translations.user_change.what_role'), options: [ - 'admin' => 'Admin', - 'user' => 'User', + 'admin' => __('translations.Admin'), + 'user' => __('translations.User'), ], default: 'user' ); @@ -53,6 +53,6 @@ public function handle(): void 'role' => $role, ]); - info('User role updated.'); + info(__('translations.user_change.info')); } } diff --git a/app/Console/Commands/UserResetPassword.php b/app/Console/Commands/UserResetPassword.php index b6fb784e1..0de28023b 100644 --- a/app/Console/Commands/UserResetPassword.php +++ b/app/Console/Commands/UserResetPassword.php @@ -32,7 +32,7 @@ class UserResetPassword extends Command public function handle(): void { $email = text( - label: 'What is the email address?', + label: __('translations.user_change.welcome_email'), required: true, validate: fn (string $value) => match (true) { ! User::firstWhere('email', $value) => 'User not found.', @@ -41,7 +41,7 @@ public function handle(): void ); $password = password( - label: 'What is the new password?', + label: __('translations.user_change.what_is_password'), required: true, ); @@ -50,6 +50,6 @@ public function handle(): void 'password' => Hash::make($password), ]); - info('The password for "'.$email.'" has been updated.'); + info(__('translations.user_change.password_updated_info', ['email' => $email])); } } diff --git a/app/Enums/ResultService.php b/app/Enums/ResultService.php index b324633a3..01531836d 100644 --- a/app/Enums/ResultService.php +++ b/app/Enums/ResultService.php @@ -12,6 +12,6 @@ enum ResultService: string implements HasLabel public function getLabel(): ?string { - return Str::title($this->name); + return Str::title(__('translations.'.$this->name)); } } diff --git a/app/Enums/ResultStatus.php b/app/Enums/ResultStatus.php index 8b554f426..b1fbb1da7 100644 --- a/app/Enums/ResultStatus.php +++ b/app/Enums/ResultStatus.php @@ -33,6 +33,6 @@ public function getColor(): ?string public function getLabel(): ?string { - return Str::title($this->name); + return Str::title(__('translations.'.$this->name)); } } diff --git a/app/Enums/UserRole.php b/app/Enums/UserRole.php index 69884c8e8..f0cc85ab2 100644 --- a/app/Enums/UserRole.php +++ b/app/Enums/UserRole.php @@ -21,6 +21,6 @@ public function getColor(): ?string public function getLabel(): ?string { - return Str::title($this->name); + return Str::title(__('translations.'.$this->name)); } } diff --git a/app/Filament/Exports/ResultExporter.php b/app/Filament/Exports/ResultExporter.php index 15ff08118..5f1b18329 100644 --- a/app/Filament/Exports/ResultExporter.php +++ b/app/Filament/Exports/ResultExporter.php @@ -22,14 +22,15 @@ public function getFormats(): array public static function getColumns(): array { $columns = [ - ExportColumn::make('id')->label('ID'), + ExportColumn::make('id') + ->label(__('translations.id')), ExportColumn::make('service')->state(fn (Result $r) => $r->service->getLabel()), ExportColumn::make('status')->state(fn (Result $r) => $r->status->getLabel()), - ExportColumn::make('scheduled')->state(fn (Result $r) => $r->scheduled ? 'Yes' : 'No'), - ExportColumn::make('healthy')->state(fn (Result $r) => $r->healthy ? 'Yes' : 'No'), - ExportColumn::make('created_at'), - ExportColumn::make('updated_at'), - ExportColumn::make('comments'), + ExportColumn::make('scheduled')->state(fn (Result $r) => $r->scheduled ? __('translations.yes') : __('translations.no')), + ExportColumn::make('healthy')->state(fn (Result $r) => $r->healthy ? __('translations.yes') : __('translations.no')), + ExportColumn::make('created_at')->label(__('translations.created_at')), + ExportColumn::make('updated_at')->label(__('translations.updated_at')), + ExportColumn::make('comments')->label(__('translations.comments')), ]; $columns = array_merge($columns, self::generateDataColumns()); @@ -78,10 +79,20 @@ protected static function flatten(array $array, string $prefix = ''): array public static function getCompletedNotificationBody(Export $export): string { - $body = 'Your result export has completed and '.number_format($export->successful_rows).' '.str('row')->plural($export->successful_rows).' exported.'; + $body = __('translations.export_completed', [ + 'count' => number_format($export->successful_rows), + 'rows' => trans_choice('translations.row', $export->successful_rows, [ + 'count' => number_format($export->successful_rows), + ]), + ]); if ($failedRowsCount = $export->getFailedRowsCount()) { - $body .= ' '.number_format($failedRowsCount).' '.str('row')->plural($failedRowsCount).' failed to export.'; + $body .= __('translations.failed_export', [ + 'count' => $failedRowsCount, + 'rows' => trans_choice('translations.row', $export->$failedRowsCount, [ + 'count' => number_format($export->$failedRowsCount), + ]), + ]); } return $body; diff --git a/app/Filament/Pages/Settings/DataIntegrationPage.php b/app/Filament/Pages/Settings/DataIntegrationPage.php index 16a48284e..9ee4df493 100644 --- a/app/Filament/Pages/Settings/DataIntegrationPage.php +++ b/app/Filament/Pages/Settings/DataIntegrationPage.php @@ -22,15 +22,24 @@ class DataIntegrationPage extends SettingsPage { protected static ?string $navigationIcon = 'heroicon-o-circle-stack'; - protected static ?string $navigationGroup = 'Settings'; - protected static ?int $navigationSort = 2; - protected static ?string $title = 'Data Integration'; + protected static string $settings = DataIntegrationSettings::class; - protected static ?string $navigationLabel = 'Data Integration'; + public static function getNavigationGroup(): string + { + return __('translations.settings'); + } - protected static string $settings = DataIntegrationSettings::class; + public function getTitle(): string + { + return __('translations.data_integration'); + } + + public static function getNavigationLabel(): string + { + return __('translations.data_integration'); + } public static function canAccess(): bool { @@ -51,11 +60,11 @@ public function form(Form $form): Form { return $form ->schema([ - Section::make('InfluxDB v2') - ->description('When enabled, all new Speedtest results will also be sent to InfluxDB.') + Section::make(__('translations.infoluxdb')) + ->description(__('translations.infoluxdb_description')) ->schema([ Forms\Components\Toggle::make('influxdb_v2_enabled') - ->label('Enable') + ->label(__('translations.enable')) ->reactive() ->columnSpanFull(), @@ -63,39 +72,39 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('influxdb_v2_enabled') !== true) ->schema([ TextInput::make('influxdb_v2_url') - ->label('URL') + ->label(__('translations.url')) ->placeholder('http://your-influxdb-instance') ->maxLength(255) ->required(fn (Forms\Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 1]), TextInput::make('influxdb_v2_org') - ->label('Org') + ->label(__('translations.org')) ->maxLength(255) ->required(fn (Forms\Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 1]), TextInput::make('influxdb_v2_bucket') - ->placeholder('speedtest-tracker') - ->label('Bucket') + ->placeholder(__('translations.speedtest_tracker')) + ->label(__('translations.bucket')) ->maxLength(255) ->required(fn (Forms\Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 2]), TextInput::make('influxdb_v2_token') - ->label('Token') + ->label(__('translations.token')) ->maxLength(255) ->password() ->required(fn (Forms\Get $get) => $get('influxdb_v2_enabled') === true) ->autocomplete(false) ->columnSpan(['md' => 2]), Checkbox::make('influxdb_v2_verify_ssl') - ->label('Verify SSL') + ->label(__('translations.verify_ssl')) ->columnSpanFull(), // Button to send old data to InfluxDB Actions::make([ Action::make('Export current results') - ->label('Export current results') + ->label(__('translations.export_current_results')) ->action(function () { Notification::make() - ->title('Starting bulk data write to Influxdb') + ->title(__('translations.starting_bulk_data_write_to_influxdb')) ->info() ->send(); @@ -108,10 +117,10 @@ public function form(Form $form): Form // Button to test InfluxDB connection Actions::make([ Action::make('Test connection') - ->label('Test connection') + ->label(__('translations.test_connection')) ->action(function () { Notification::make() - ->title('Sending test data to Influxdb') + ->title(__('translations.sending_test_data_to_influxdb')) ->info() ->send(); diff --git a/app/Filament/Pages/Settings/NotificationPage.php b/app/Filament/Pages/Settings/NotificationPage.php index 83f8e03ca..3f511542c 100755 --- a/app/Filament/Pages/Settings/NotificationPage.php +++ b/app/Filament/Pages/Settings/NotificationPage.php @@ -30,15 +30,24 @@ class NotificationPage extends SettingsPage { protected static ?string $navigationIcon = 'heroicon-o-bell'; - protected static ?string $navigationGroup = 'Settings'; - protected static ?int $navigationSort = 3; - protected static ?string $title = 'Notifications'; + protected static string $settings = NotificationSettings::class; - protected static ?string $navigationLabel = 'Notifications'; + public static function getNavigationGroup(): string + { + return __('translations.settings'); + } - protected static string $settings = NotificationSettings::class; + public function getTitle(): string + { + return __('translations.notifications.label'); + } + + public static function getNavigationLabel(): string + { + return __('translations.notifications.label'); + } public static function canAccess(): bool { @@ -59,11 +68,11 @@ public function form(Form $form): Form { return $form ->schema([ - Section::make('Database') - ->description('Notifications sent to this channel will show up under the 🔔 icon in the header.') + Section::make(__('translations.database')) + ->description(__('translations.database_description')) ->schema([ Toggle::make('database_enabled') - ->label('Enable database notifications') + ->label(__('translations.enable_database_notifications')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -72,17 +81,18 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('database_enabled') !== true) ->schema([ Fieldset::make('Triggers') + ->label(__('translations.triggers')) ->schema([ Toggle::make('database_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('translations.notify_on_every_speedtest_run')) ->columnSpanFull(), Toggle::make('database_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('translations.notify_on_threshold_failures')) ->columnSpanFull(), ]), Actions::make([ Action::make('test database') - ->label('Test database channel') + ->label(__('translations.test_database_channel')) ->action(fn () => SendDatabaseTestNotification::run(user: Auth::user())), ]), ]), @@ -93,10 +103,10 @@ public function form(Form $form): Form 'md' => 2, ]), - Section::make('Mail') + Section::make(__('translations.mail')) ->schema([ Toggle::make('mail_enabled') - ->label('Enable mail notifications') + ->label(__('translations.enable_mail_notifications')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -105,18 +115,20 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('mail_enabled') !== true) ->schema([ Fieldset::make('Triggers') + ->label(__('translations.triggers')) ->schema([ Toggle::make('mail_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('translations.notify_on_every_speedtest_run')) ->columnSpanFull(), Toggle::make('mail_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('translations.notify_on_threshold_failures')) ->columnSpanFull(), ]), Repeater::make('mail_recipients') - ->label('Recipients') + ->label(__('translations.recipients')) ->schema([ Forms\Components\TextInput::make('email_address') + ->label(__('translations.email_address')) ->placeholder('your@email.com') ->email() ->required(), @@ -124,7 +136,7 @@ public function form(Form $form): Form ->columnSpanFull(), Actions::make([ Action::make('test mail') - ->label('Test mail channel') + ->label(__('translations.test_mail_channel')) ->action(fn (Forms\Get $get) => SendMailTestNotification::run(recipients: $get('mail_recipients'))) ->hidden(fn (Forms\Get $get) => ! count($get('mail_recipients'))), ]), @@ -136,10 +148,10 @@ public function form(Form $form): Form 'md' => 2, ]), - Section::make('Webhook') + Section::make(__('translations.webhook')) ->schema([ Toggle::make('webhook_enabled') - ->label('Enable webhook notifications') + ->label(__('translations.enable_webhook_notifications')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -148,18 +160,20 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('webhook_enabled') !== true) ->schema([ Fieldset::make('Triggers') + ->label('translations.triggers') ->schema([ Toggle::make('webhook_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('notify_on_every_speedtest_run')) ->columnSpan(2), Toggle::make('webhook_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('notify_on_threshold_failures')) ->columnSpan(2), ]), Repeater::make('webhook_urls') - ->label('Recipients') + ->label(__('translations.recipients')) ->schema([ Forms\Components\TextInput::make('url') + ->label(__('translations.url')) ->placeholder('https://webhook.site/longstringofcharacters') ->maxLength(2000) ->required() @@ -168,7 +182,7 @@ public function form(Form $form): Form ->columnSpanFull(), Actions::make([ Action::make('test webhook') - ->label('Test webhook channel') + ->label(__('translations.test_webhook_channel')) ->action(fn (Forms\Get $get) => SendWebhookTestNotification::run(webhooks: $get('webhook_urls'))) ->hidden(fn (Forms\Get $get) => ! count($get('webhook_urls'))), ]), @@ -180,10 +194,10 @@ public function form(Form $form): Form 'md' => 2, ]), - Section::make('Pushover') + Section::make(__('translations.pushover')) ->schema([ Toggle::make('pushover_enabled') - ->label('Enable Pushover webhook notifications') + ->label(__('translations.enable_pushover_webhook_notifications')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -192,38 +206,39 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('pushover_enabled') !== true) ->schema([ Fieldset::make('Triggers') + ->label(__('translations.triggers')) ->schema([ Toggle::make('pushover_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('translations.notify_on_every_speedtest_run')) ->columnSpanFull(), Toggle::make('pushover_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('translations.notify_on_threshold_failures')) ->columnSpanFull(), ]), Repeater::make('pushover_webhooks') - ->label('Pushover Webhooks') + ->label(__('translations.pushover_webhooks')) ->schema([ Forms\Components\TextInput::make('url') - ->label('URL') + ->label(__('translations.url')) ->placeholder('http://api.pushover.net/1/messages.json') ->maxLength(2000) ->required() ->url(), Forms\Components\TextInput::make('user_key') - ->label('User Key') - ->placeholder('Your Pushover User Key') + ->label(__('translations.user_key')) + ->placeholder(__('translations.your_pushover_user_key')) ->maxLength(200) ->required(), Forms\Components\TextInput::make('api_token') - ->label('API Token') - ->placeholder('Your Pushover API Token') + ->label(__('translations.api_token')) + ->placeholder(__('translations.your_pushover_api_token')) ->maxLength(200) ->required(), ]) ->columnSpanFull(), Actions::make([ Action::make('test pushover') - ->label('Test Pushover webhook') + ->label(__('translations.test_pushover_webhook')) ->action(fn (Forms\Get $get) => SendPushoverTestNotification::run( webhooks: $get('pushover_webhooks') )) @@ -237,10 +252,10 @@ public function form(Form $form): Form 'md' => 2, ]), - Section::make('Discord') + Section::make(__('translations.discord')) ->schema([ Toggle::make('discord_enabled') - ->label('Enable Discord webhook notifications') + ->label(__('translations.enable_discord_webhook_notifications')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -249,18 +264,20 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('discord_enabled') !== true) ->schema([ Fieldset::make('Triggers') + ->label(__('translations.triggers')) ->schema([ Toggle::make('discord_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('translations.notify_on_every_speedtest_run')) ->columnSpanFull(), Toggle::make('discord_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('translations.notify_on_threshold_failures')) ->columnSpanFull(), ]), Repeater::make('discord_webhooks') - ->label('Webhooks') + ->label(__('translations.webhooks')) ->schema([ Forms\Components\TextInput::make('url') + ->label(__('translations.url')) ->placeholder('https://discord.com/api/webhooks/longstringofcharacters') ->maxLength(2000) ->required() @@ -269,7 +286,7 @@ public function form(Form $form): Form ->columnSpanFull(), Actions::make([ Action::make('test discord') - ->label('Test Discord webhook') + ->label(__('translations.test_discord_webhook')) ->action(fn (Forms\Get $get) => SendDiscordTestNotification::run(webhooks: $get('discord_webhooks'))) ->hidden(fn (Forms\Get $get) => ! count($get('discord_webhooks'))), ]), @@ -281,10 +298,10 @@ public function form(Form $form): Form 'md' => 2, ]), - Section::make('Gotify') + Section::make(__('translations.gotify')) ->schema([ Toggle::make('gotify_enabled') - ->label('Enable Gotify webhook notifications') + ->label(__('translations.gotify_enabled')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -295,16 +312,17 @@ public function form(Form $form): Form Fieldset::make('Triggers') ->schema([ Toggle::make('gotify_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('translations.notify_on_every_speedtest_run')) ->columnSpanFull(), Toggle::make('gotify_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('translations.notify_on_threshold_failures')) ->columnSpanFull(), ]), Repeater::make('gotify_webhooks') - ->label('Webhooks') + ->label(__('translations.webhooks')) ->schema([ Forms\Components\TextInput::make('url') + ->label(__('translations.url')) ->placeholder('https://example.com/message?token=') ->maxLength(2000) ->required() @@ -313,7 +331,7 @@ public function form(Form $form): Form ->columnSpanFull(), Actions::make([ Action::make('test gotify') - ->label('Test Gotify webhook') + ->label(__('translations.test_gotify_webhook')) ->action(fn (Forms\Get $get) => SendgotifyTestNotification::run(webhooks: $get('gotify_webhooks'))) ->hidden(fn (Forms\Get $get) => ! count($get('gotify_webhooks'))), ]), @@ -325,10 +343,10 @@ public function form(Form $form): Form 'md' => 2, ]), - Section::make('Slack') + Section::make(__('translations.slack')) ->schema([ Toggle::make('slack_enabled') - ->label('Enable Slack webhook notifications') + ->label(__('translations.slack_enabled')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -337,18 +355,20 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('slack_enabled') !== true) ->schema([ Fieldset::make('Triggers') + ->label('translations.triggers') ->schema([ Toggle::make('slack_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('translations.notify_on_every_speedtest_run')) ->columnSpanFull(), Toggle::make('slack_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('translations.notify_on_threshold_failures')) ->columnSpanFull(), ]), Repeater::make('slack_webhooks') - ->label('Webhooks') + ->label(__('translations.webhooks')) ->schema([ Forms\Components\TextInput::make('url') + ->label(__('translations.url')) ->placeholder('https://hooks.slack.com/services/abc/xyz') ->maxLength(2000) ->required() @@ -357,7 +377,7 @@ public function form(Form $form): Form ->columnSpanFull(), Actions::make([ Action::make('test Slack') - ->label('Test slack webhook') + ->label(__('translations.test_slack_webhook')) ->action(fn (Forms\Get $get) => SendSlackTestNotification::run(webhooks: $get('slack_webhooks'))) ->hidden(fn (Forms\Get $get) => ! count($get('slack_webhooks'))), ]), @@ -369,10 +389,10 @@ public function form(Form $form): Form 'md' => 2, ]), - Section::make('Ntfy') + Section::make(__('translations.ntfy')) ->schema([ Toggle::make('ntfy_enabled') - ->label('Enable Ntfy webhook notifications') + ->label(__('translations.ntfy_enabled')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -381,41 +401,43 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('ntfy_enabled') !== true) ->schema([ Fieldset::make('Triggers') + ->label('translations.triggers') ->schema([ Toggle::make('ntfy_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('translations.notify_on_every_speedtest_run')) ->columnSpanFull(), Toggle::make('ntfy_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('translations.notify_on_threshold_failures')) ->columnSpanFull(), ]), Repeater::make('ntfy_webhooks') - ->label('Webhooks') + ->label(__('translations.webhooks')) ->schema([ Forms\Components\TextInput::make('url') + ->label(__('translations.url')) ->maxLength(2000) - ->placeholder('Your ntfy server url') + ->placeholder(__('translations.your_ntfy_server_url')) ->required() ->url(), Forms\Components\TextInput::make('topic') - ->label('Topic') - ->placeholder('Your ntfy Topic') + ->label(__('translations.topic')) + ->placeholder(__('translations.your_ntfy_topic')) ->maxLength(200) ->required(), Forms\Components\TextInput::make('username') - ->label('Username') - ->placeholder('Username for Basic Auth (optional)') + ->label(__('translations.username')) + ->placeholder(__('translations.username_placeholder')) ->maxLength(200), Forms\Components\TextInput::make('password') - ->label('Password') - ->placeholder('Password for Basic Auth (optional)') + ->label(__('translations.password')) + ->placeholder(__('translations.password_placeholder')) ->password() ->maxLength(200), ]) ->columnSpanFull(), Actions::make([ Action::make('test ntfy') - ->label('Test Ntfy webhook') + ->label(__('translations.test_ntfy_webhook')) ->action(fn (Forms\Get $get) => SendNtfyTestNotification::run(webhooks: $get('ntfy_webhooks'))) ->hidden(fn (Forms\Get $get) => ! count($get('ntfy_webhooks'))), ]), @@ -427,10 +449,10 @@ public function form(Form $form): Form 'md' => 2, ]), - Section::make('Healthcheck.io') + Section::make(__('translations.healthcheck_io')) ->schema([ Toggle::make('healthcheck_enabled') - ->label('Enable healthcheck.io webhook notifications') + ->label(__('translations.healthcheck_enabled')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -439,19 +461,21 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('healthcheck_enabled') !== true) ->schema([ Fieldset::make('Triggers') + ->label('translations.triggers') ->schema([ Toggle::make('healthcheck_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('translations.notify_on_every_speedtest_run')) ->columnSpanFull(), Toggle::make('healthcheck_on_threshold_failure') - ->label('Notify on threshold failures') - ->helperText('Threshold notifications will be sent to the /fail path of the URL.') + ->label(__('translations.notify_on_threshold_failures')) + ->helperText(__('translations.threshold_helper_text')) ->columnSpanFull(), ]), Repeater::make('healthcheck_webhooks') - ->label('webhooks') + ->label(__('translations.webhooks')) ->schema([ Forms\Components\TextInput::make('url') + ->label(__('translations.url')) ->placeholder('https://hc-ping.com/your-uuid-here') ->maxLength(2000) ->required() @@ -460,7 +484,7 @@ public function form(Form $form): Form ->columnSpanFull(), Actions::make([ Action::make('test healthcheck') - ->label('Test healthcheck.io webhook') + ->label(__('translations.test_healthcheck_webhook')) ->action(fn (Forms\Get $get) => SendHealthCheckTestNotification::run(webhooks: $get('healthcheck_webhooks'))) ->hidden(fn (Forms\Get $get) => ! count($get('healthcheck_webhooks'))), ]), @@ -472,10 +496,10 @@ public function form(Form $form): Form 'md' => 2, ]), - Section::make('Telegram') + Section::make(__('translations.telegram')) ->schema([ Toggle::make('telegram_enabled') - ->label('Enable telegram notifications') + ->label(__('translations.enable_telegram')) ->reactive() ->columnSpanFull(), Grid::make([ @@ -484,33 +508,35 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('telegram_enabled') !== true) ->schema([ Fieldset::make('Options') + ->label(__('translations.options')) ->schema([ Toggle::make('telegram_disable_notification') - ->label('Send the message silently to the user') + ->label(__('translations.telegram_disable_notification')) ->columnSpanFull(), ]), Fieldset::make('Triggers') + ->label(__('translations.triggers')) ->schema([ Toggle::make('telegram_on_speedtest_run') - ->label('Notify on every speedtest run') + ->label(__('translations.notify_on_every_speedtest_run')) ->columnSpanFull(), Toggle::make('telegram_on_threshold_failure') - ->label('Notify on threshold failures') + ->label(__('translations.notify_on_threshold_failures')) ->columnSpanFull(), ]), Repeater::make('telegram_recipients') - ->label('Recipients') + ->label(__('translations.recipients')) ->schema([ Forms\Components\TextInput::make('telegram_chat_id') ->placeholder('12345678910') - ->label('Telegram Chat ID') + ->label('') ->maxLength(50) ->required(), ]) ->columnSpanFull(), Actions::make([ Action::make('test telegram') - ->label('Test Telegram channel') + ->label(__('translations.test_telegram_webhook')) ->action(fn (Forms\Get $get) => SendTelegramTestNotification::run(recipients: $get('telegram_recipients'))) ->hidden(fn (Forms\Get $get) => ! count($get('telegram_recipients')) || blank(config('telegram.bot'))), ]), diff --git a/app/Filament/Pages/Settings/ThresholdsPage.php b/app/Filament/Pages/Settings/ThresholdsPage.php index e6d5b4f1c..372439f49 100644 --- a/app/Filament/Pages/Settings/ThresholdsPage.php +++ b/app/Filament/Pages/Settings/ThresholdsPage.php @@ -18,15 +18,24 @@ class ThresholdsPage extends SettingsPage { protected static ?string $navigationIcon = 'heroicon-o-exclamation-triangle'; - protected static ?string $navigationGroup = 'Settings'; - protected static ?int $navigationSort = 4; - protected static ?string $title = 'Thresholds'; + protected static string $settings = ThresholdSettings::class; - protected static ?string $navigationLabel = 'Thresholds'; + public static function getNavigationGroup(): string + { + return __('translations.settings'); + } - protected static string $settings = ThresholdSettings::class; + public function getTitle(): string + { + return __('translations.thresholds'); + } + + public static function getNavigationLabel(): string + { + return __('translations.thresholds'); + } public static function canAccess(): bool { diff --git a/app/Filament/Resources/ApiTokenResource/Pages/ListApiTokens.php b/app/Filament/Resources/ApiTokenResource/Pages/ListApiTokens.php index 2f5cda512..2e6d59dfc 100644 --- a/app/Filament/Resources/ApiTokenResource/Pages/ListApiTokens.php +++ b/app/Filament/Resources/ApiTokenResource/Pages/ListApiTokens.php @@ -16,7 +16,7 @@ protected function getHeaderActions(): array { return [ Action::make('createToken') - ->label('Create API Token') + ->label(__('translations.create_api_token')) ->form(ApiTokenResource::getTokenFormSchema()) ->action(function (array $data): void { $token = auth()->user()->createToken( @@ -26,8 +26,8 @@ protected function getHeaderActions(): array ); Notification::make() - ->title('Token Created') - ->body('Your token: `'.explode('|', $token->plainTextToken)[1].'`') + ->title(__('translations.token_created')) + ->body(__('translations.your_token').': `'.explode('|', $token->plainTextToken)[1].'`') ->success() ->persistent() ->send(); diff --git a/app/Filament/Widgets/StatsOverviewWidget.php b/app/Filament/Widgets/StatsOverviewWidget.php index 5aaf55e85..29364c595 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(__('translations.latest_download'), '-') ->icon('heroicon-o-arrow-down-tray'), - Stat::make('Latest upload', '-') + Stat::make(__('translations.latest_upload'), '-') ->icon('heroicon-o-arrow-up-tray'), - Stat::make('Latest ping', '-') + Stat::make(__('translations.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(__('translations.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(__('translations.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(__('translations.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(__('translations.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.'% '.__('translations.faster') : abs($downloadChange).'% '.__('translations.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(__('translations.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.'% '.__('translations.faster') : abs($uploadChange).'% '.__('translations.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(__('translations.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.'% '.__('translations.slower') : abs($pingChange).'% '.__('translations.faster')) ->descriptionIcon($pingChange > 0 ? 'heroicon-m-arrow-trending-up' : 'heroicon-m-arrow-trending-down') ->color($pingChange > 0 ? 'danger' : 'success'), ]; diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 15d972dee..52a6191fd 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -63,25 +63,30 @@ public function panel(Panel $panel): Panel ]) ->navigationGroups([ NavigationGroup::make() - ->label('Settings'), + ->label(__('translations.settings')), NavigationGroup::make() - ->label('Links') + ->label(__('translations.links')) ->collapsible(false), ]) ->navigationItems([ - NavigationItem::make('Documentation') + NavigationItem::make() + ->label(fn () => __('translations.documentation')) ->url('https://docs.speedtest-tracker.dev/', shouldOpenInNewTab: true) ->icon('heroicon-o-book-open') - ->group('Links'), - NavigationItem::make('Donate') + ->group(fn () => __('translations.links')) + ->sort(97), + NavigationItem::make() + ->label(fn () => __('translations.donate')) ->url('https://github.com/sponsors/alexjustesen', shouldOpenInNewTab: true) ->icon('heroicon-o-banknotes') - ->group('Links'), + ->group(fn () => __('translations.links')) + ->sort(98), 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() ? __('translations.update_available') : __('translations.up_to_date')) + ->group(fn () => __('translations.links')) + ->sort(99), ]); } } diff --git a/app/Rules/Cron.php b/app/Rules/Cron.php index 570c0aff2..2600d77b0 100644 --- a/app/Rules/Cron.php +++ b/app/Rules/Cron.php @@ -16,7 +16,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(__('translations.cron_invalid')); } } } diff --git a/lang/en/translations.php b/lang/en/translations.php new file mode 100644 index 000000000..f2b9d6788 --- /dev/null +++ b/lang/en/translations.php @@ -0,0 +1,290 @@ + 'Admin', + 'User' => 'User', + 'abilities' => 'Abilities', + 'active_tokens' => 'Active tokens', + 'all_tokens' => 'All tokens', + 'api_token' => 'API Token', + 'api_tokens' => 'API Tokens', + 'average' => 'Average', + 'average_ms' => 'Average (ms)', + 'Benchmarking' => 'Benchmarking', + 'bucket' => 'Bucket', + 'Checking' => 'Checking', + 'comment' => 'Comment', + 'comments' => 'Comments', + 'Completed' => 'Completed', + 'create_api_token' => 'Create API Token', + 'created_at' => 'Created at', + 'created_from' => 'Created from', + 'created_until' => 'Created until', + 'cron_invalid' => 'Cron expression is not valid', + 'data_integration' => 'Data integration', + 'database' => 'Database', + 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', + 'details' => 'Details', + 'dashboard' => 'Dashboard', + 'discord' => 'Discord', + 'documentation' => 'Documentation', + 'donate' => 'Donate', + 'download' => 'Download', + 'download_latency' => 'Download Latency', + 'download_latency_high' => 'Download latency high', + 'download_latency_iqm' => 'Download latency iqm', + 'download_latency_jitter' => 'Download latency jitter', + 'download_latency_low' => 'Download latency low', + 'download_mbps' => 'Download (Mbps)', + 'download_ms' => 'Download (ms)', + 'email' => 'Email', + 'email_address' => 'Email address', + 'enable' => 'Enable', + 'enable_database_notifications' => 'Enable database notifications', + 'enable_discord_webhook_notifications' => 'Enable Discord webhook notifications', + 'enable_mail_notifications' => 'Enable mail notifications', + 'enable_pushover_webhook_notifications' => 'Enable Pushover webhook notifications', + 'enable_telegram' => 'Enable telegram notifications', + 'enable_webhook_notifications' => 'Enable webhook notifications', + 'error_message' => 'Error message', + 'expired_tokens' => 'Expired tokens', + 'expires_at' => 'Expires at', + 'expires_at_helper_text' => 'Leave empty for no expiration', + 'export_all_results' => 'Export all Results', + 'export_all_results_description' => 'This will export all columns for all results.', + 'export_completed' => 'Your result export has completed and :count :rows exported.', + 'export_current_results' => 'Export current results', + 'Failed' => 'Failed', + 'failed_export' => ' :count :rows failed to exported.', + 'Faker' => 'faker', + 'faster' => 'faster', + 'general_settings' => [ + 'label' => 'General settings', + 'description' => 'The general application settings can be set here', + 'app_settings' => 'App settings', + 'speedtest_settings' => 'Speedtest settings', + 'api_settings' => 'Api settings', + 'app_name' => 'App name', + 'asset_url' => 'Asset url', + 'app_timezone' => 'App timezone', + 'chart_begin_at_zero' => 'Chart begin at zero', + 'chart_datetime_format' => 'Chart datetime format', + 'datetime_format' => 'Datetime format', + 'display_timezone' => 'Display timezone', + 'public_dashboard' => 'Public dashboard', + 'speedtest_skip_ips' => 'Speedtest skip ips', + 'speedtest_schedule' => 'Speedtest schedule', + 'speedtest_schedule_description' => 'Enter valid cron expressions. Example: * * * * * runs every minute.', + 'speedtest_servers' => 'Speedtest servers', + 'speedtest_blocked_servers' => 'Speedtest blocked servers', + 'speedtest_interface' => 'Speedtest interface', + 'speedtest_checkinternet_url' => 'Speedtest check internet url', + 'threshold_enabled' => 'Threshold enabled', + 'threshold_download' => 'Threshold download', + 'threshold_upload' => 'Threshold upload', + 'threshold_ping' => 'Threshold ping', + 'prune_results_older_than' => 'Prune results older than', + 'api_rate_limit' => 'Api rate limit', + ], + 'gotify' => 'Gotify', + 'gotify_enabled' => 'Enable Gotify webhook notifications', + 'healthcheck_enabled' => 'Enable healthcheck.io webhook notifications', + 'healthcheck_io' => 'Healthcheck.io', + 'healthy' => 'Healthy', + 'high' => 'High', + 'high_ms' => 'High (ms)', + 'id' => 'ID', + 'infoluxdb' => 'InfluxDB v2', + 'infoluxdb_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', + 'ip_address' => 'IP Address', + 'iqm' => 'IQM', + 'isp' => 'ISP', + 'jitter' => 'Jitter', + 'last_24h' => 'Last 24h', + 'last_month' => 'Last month', + 'last_used_at' => 'Last used at', + 'last_week' => 'Last week', + 'latest_download' => 'Latest download', + 'latest_ping' => 'Latest ping', + 'latest_upload' => 'Latest upload', + 'links' => 'Links', + 'list_servers' => 'List servers', + 'list_servers_description' => 'Grant this token permission to list available servers.', + 'low' => 'Low', + 'low_ms' => 'Low (ms)', + 'mail' => 'E-mail', + 'message' => 'Message', + 'ms' => 'ms', + 'name' => 'Name', + 'next_speedtest_at' => 'Next speedtest at:', + 'no' => 'No', + 'no_speedtests_scheduled' => 'No speedtests scheduled.', + 'notifications' => [ + 'label' => 'Notifications', + 'database' => [ + 'ping' => 'I say ping', + 'pong' => 'You say pong', + 'received' => 'Test database notification received!', + 'sent' => 'Test database notification sent.', + ], + 'discord' => [ + 'add' => 'You need to add Discord urls!', + 'sent' => 'Test Discord notification sent.', + 'payload' => '👋 Testing the Discord notification channel.', + ], + 'health_check' => [ + 'add' => 'You need to add HealthCheck.io urls!', + 'sent' => 'Test HealthCheck.io notification sent.', + 'payload' => '👋 Testing the HealthCheck.io notification channel.', + ], + 'gotfy' => [ + 'add' => 'You need to add Gotify urls!', + 'sent' => 'Test Gotify notification sent.', + 'payload' => '👋 Testing the Gotify notification channel.', + ], + 'mail' => [ + 'add' => 'You need to add mail recipients!', + 'sent' => 'Test mail notification sent.', + ], + 'ntfy' => [ + 'add' => 'You need to add ntfy urls!', + 'sent' => 'Test ntfy notification sent.', + 'payload' => '👋 Testing the ntfy notification channel.', + ], + 'pushover' => [ + 'add' => 'You need to add Pushover URLs!', + 'sent' => 'Test Pushover notification sent.', + 'payload' => '👋 Testing the Pushover notification channel.', + ], + 'slack' => [ + 'add' => 'You need to add Slack URLs!', + 'sent' => 'Test Slack notification sent.', + 'payload' => '👋 Testing the Slack notification channel.', + ], + 'telegram' => [ + 'add' => 'You need to add Telegram recipients!', + 'sent' => 'Test Telegram notification sent.', + ], + 'webhook' => [ + 'add' => 'You need to add webhook URLs!', + 'sent' => 'Test webhook notification sent.', + 'payload' => 'Webhook Notification Testing', + ], + ], + 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', + 'notify_on_threshold_failures' => 'Notify on threshold failures', + 'ntfy' => 'Ntfy', + 'ntfy_enabled' => 'Enable Ntfy webhook notifications', + 'only_healthy_speedtests' => 'Only healthy speedtests', + 'only_manual_speedtests' => 'Only manual speedtests', + 'only_scheduled_speedtests' => 'Only scheduled speedtests', + 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', + 'Ookla' => 'ookla', + 'ookla_error' => 'There was an issue retrieving a list of speedtest servers, check the logs.', + 'options' => 'Options', + 'org' => 'Org', + 'packet_loss' => 'Packet loss', + 'password' => 'Password', + 'password_confirmation' => 'Password Confirmation', + 'password_placeholder' => 'Password for Basic Auth (optional)', + 'ping' => 'Ping', + 'ping_details' => 'Ping details', + 'ping_high' => 'Ping high', + 'ping_jitter' => 'Ping jitter', + 'ping_low' => 'Ping low', + 'ping_ms' => 'Ping (ms)', + 'platform' => 'Platform', + 'pushover' => 'Pushover', + 'pushover_webhooks' => 'Pushover Webhooks', + 'read_results' => 'Read results', + 'read_results_description' => 'Grant this token permission to read results and statistics.', + 'recipients' => 'Recipients', + 'results' => 'Results', + 'result_overview' => 'Result overview', + 'role' => 'Role', + 'row' => '{1} :count row|[2,*] :count rows', + 'run_speedtest' => 'Run speedtest', + 'run_speedtest_description' => 'Grant this token permission to run speedtests.', + 'Running' => 'Running', + 'scheduled' => 'Scheduled', + 'sending_test_data_to_influxdb' => 'Sending test data to Influxdb', + 'server_&_metadata' => 'Server & Metadata', + 'server_host' => 'Server Host', + 'server_id' => 'Server ID', + 'server_location' => 'Server Location', + 'server_name' => 'Server Name', + 'service' => 'Service', + 'settings' => 'Settings', + 'Skipped' => 'Skipped', + 'slack' => 'Slack', + 'slack_enabled' => 'Enable Slack webhook notifications', + 'slower' => 'slower', + 'speedtest_tracker' => 'speedtest-tracker', + 'Started' => 'Started', + 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to Influxdb', + 'status' => 'Status', + 'status_fix' => [ + 'confirm' => 'Do you want to continue?', + 'fail' => 'Command cancelled.', + 'finished' => '✅ finished!', + 'info_1' => 'This will check each result and correct the status to "completed" or "failed" based on the data column.', + 'info_2' => '📖 Read the docs: https://docs.speedtest-tracker.dev/other/commands', + ], + 'telegram' => 'Telegram', + 'telegram_chat_id' => 'Telegram Chat ID', + 'telegram_disable_notification' => 'Send the message silently to the user', + 'test_connection' => 'Test connection', + 'test_database_channel' => 'Test database channel', + 'test_discord_webhook' => 'Test Discord webhook', + 'test_gotify_webhook' => 'Test Gotify webhook', + 'test_healthcheck_webhook' => 'Test healthcheck.io webhook', + 'test_mail_channel' => 'Test mail channel', + 'test_ntfy_webhook' => 'Test Ntfy webhook', + 'test_pushover_webhook' => 'Test Pushover webhook', + 'test_slack_webhook' => 'Test Slack webhook', + 'test_telegram_channel' => 'Test telegram channel', + 'test_webhook_channel' => 'Test webhook channel', + 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail path of the URL.', + 'thresholds' => 'Thresholds', + 'token' => 'Token', + 'token_created' => 'Token created', + 'token_status' => 'Token Status', + 'topic' => 'Topic', + 'triggers' => 'Triggers', + 'truncate' => 'Truncate', + 'truncate_results' => 'Truncate Results', + 'truncate_results_description' => 'Are you sure you want to truncate all results data? This can\'t be undone . ', + 'update_comments' => 'Update comments', + 'updated_at' => 'Updated at', + 'update_available' => 'Update available!', + 'upload' => 'Upload', + 'upload_latency' => 'Upload Latency', + 'upload_latency_high' => 'Upload latency high', + 'upload_latency_jitter' => 'Upload latency jitter', + 'upload_ms' => 'Upload(ms)', + 'up_to_date' => 'Up to date', + 'url' => 'URL', + 'users' => 'Users', + 'user_change' => [ + 'info' => 'User role updated.', + 'password_updated_info' => 'The password for :email has been 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?', + ], + 'user_key' => 'User Key', + 'username' => 'Username', + 'username_placeholder' => 'Username for Basic Auth(optional)', + 'verify_ssl' => 'Verify SSL', + 'view_on_speedtest_net' => 'View on Speedtest . net', + 'Waiting' => 'Waiting', + 'webhook' => 'Webhook', + 'webhooks' => 'Webhooks', + 'yes' => 'Yes', + 'your_ntfy_server_url' => 'Your ntfy server url', + 'your_ntfy_topic' => 'Your ntfy Topic', + 'your_pushover_api_token' => 'Your Pushover API Token', + 'your_pushover_user_key' => 'Your Pushover User Key', + 'your_token' => 'Your Token', + +]; From e193fb5fd03509d41af864cb6390fd402c2a2f29 Mon Sep 17 00:00:00 2001 From: Alex Justesen <1144087+alexjustesen@users.noreply.github.com> Date: Fri, 31 Oct 2025 15:24:36 -0400 Subject: [PATCH 2/5] restored default app config file and added custom variables --- config/app.php | 138 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 136 insertions(+), 2 deletions(-) diff --git a/config/app.php b/config/app.php index d670df243..61f13cb95 100644 --- a/config/app.php +++ b/config/app.php @@ -2,18 +2,152 @@ 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'), + + /* + |-------------------------------------------------------------------------- + | 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'), + + /* + |-------------------------------------------------------------------------- + | Display Timezone + |-------------------------------------------------------------------------- + | + | This value is the timezone that will be used when displaying + | dates and times to users. + | + */ + + 'display_timezone' => env('DISPLAY_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'), + ], + + /* + |-------------------------------------------------------------------------- + | Custom Application Settings + |-------------------------------------------------------------------------- + | + */ + 'chart_begin_at_zero' => env('CHART_BEGIN_AT_ZERO', true), 'chart_datetime_format' => env('CHART_DATETIME_FORMAT', 'M. j - G:i'), 'datetime_format' => env('DATETIME_FORMAT', 'M. jS, Y g:ia'), - 'display_timezone' => env('DISPLAY_TIMEZONE', 'UTC'), - 'force_https' => env('FORCE_HTTPS', false), 'admin_name' => env('ADMIN_NAME', 'Admin'), From 61ee25960f46d0dcf3dd4b2914e0214f107b1e8e Mon Sep 17 00:00:00 2001 From: Alex Justesen <1144087+alexjustesen@users.noreply.github.com> Date: Fri, 31 Oct 2025 15:29:47 -0400 Subject: [PATCH 3/5] restored default Laravel lang files --- lang/en/auth.php | 20 ++++ lang/en/pagination.php | 19 ++++ lang/en/passwords.php | 10 +- lang/en/validation.php | 204 +++++++++++++++++++++++++++++++---------- 4 files changed, 201 insertions(+), 52 deletions(-) create mode 100644 lang/en/auth.php create mode 100644 lang/en/pagination.php diff --git a/lang/en/auth.php b/lang/en/auth.php new file mode 100644 index 000000000..6598e2c06 --- /dev/null +++ b/lang/en/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/en/pagination.php b/lang/en/pagination.php new file mode 100644 index 000000000..d48141187 --- /dev/null +++ b/lang/en/pagination.php @@ -0,0 +1,19 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/lang/en/passwords.php b/lang/en/passwords.php index 6c82e5827..fad3a7d72 100644 --- a/lang/en/passwords.php +++ b/lang/en/passwords.php @@ -9,12 +9,14 @@ | | The following language lines are the default lines which match reasons | that are given by the password broker for a password update attempt - | has failed, such as for an invalid token or invalid new password. + | outcome such as failure due to an invalid password / reset token. | */ - 'reset' => '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.', + 'reset' => 'Your password has been reset.', + 'sent' => 'We have emailed your password reset link.', + 'throttled' => 'Please wait before retrying.', + 'token' => 'This password reset token is invalid.', + 'user' => "We can't find a user with that email address.", ]; diff --git a/lang/en/validation.php b/lang/en/validation.php index 1db044439..bd9cc1102 100644 --- a/lang/en/validation.php +++ b/lang/en/validation.php @@ -13,6 +13,159 @@ | */ + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'any_of' => 'The :attribute field is invalid.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_contain' => 'The :attribute field must not contain any of the following: :values.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'in_array_keys' => 'The :attribute field must contain at least one of the following keys: :values.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', + ], + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', + ], + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_if_accepted' => 'The :attribute field is prohibited when :other is accepted.', + 'prohibited_if_declined' => 'The :attribute field is prohibited when :other is declined.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', + ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', + 'string' => 'The :attribute field must be a string.', + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', + /* |-------------------------------------------------------------------------- | Custom Validation Language Lines @@ -26,7 +179,7 @@ 'custom' => [ 'attribute-name' => [ - + 'rule-name' => 'custom-message', ], ], @@ -41,51 +194,6 @@ | */ - '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', - ], + 'attributes' => [], + ]; From f1631cbd86c73d5f3d892bf6177673173c059070 Mon Sep 17 00:00:00 2001 From: Alex Justesen <1144087+alexjustesen@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:03:13 -0400 Subject: [PATCH 4/5] removed language files --- 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/translations.php | 290 ------------------------------------ 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/auth.php | 20 --- lang/zh_TW/pagination.php | 19 --- lang/zh_TW/passwords.php | 20 --- lang/zh_TW/validation.php | 91 ----------- 43 files changed, 3503 deletions(-) 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 delete mode 100644 lang/en/translations.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/auth.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/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/translations.php b/lang/en/translations.php deleted file mode 100644 index f2b9d6788..000000000 --- a/lang/en/translations.php +++ /dev/null @@ -1,290 +0,0 @@ - 'Admin', - 'User' => 'User', - 'abilities' => 'Abilities', - 'active_tokens' => 'Active tokens', - 'all_tokens' => 'All tokens', - 'api_token' => 'API Token', - 'api_tokens' => 'API Tokens', - 'average' => 'Average', - 'average_ms' => 'Average (ms)', - 'Benchmarking' => 'Benchmarking', - 'bucket' => 'Bucket', - 'Checking' => 'Checking', - 'comment' => 'Comment', - 'comments' => 'Comments', - 'Completed' => 'Completed', - 'create_api_token' => 'Create API Token', - 'created_at' => 'Created at', - 'created_from' => 'Created from', - 'created_until' => 'Created until', - 'cron_invalid' => 'Cron expression is not valid', - 'data_integration' => 'Data integration', - 'database' => 'Database', - 'database_description' => 'Notifications sent to this channel will show up under the 🔔 icon in the header.', - 'details' => 'Details', - 'dashboard' => 'Dashboard', - 'discord' => 'Discord', - 'documentation' => 'Documentation', - 'donate' => 'Donate', - 'download' => 'Download', - 'download_latency' => 'Download Latency', - 'download_latency_high' => 'Download latency high', - 'download_latency_iqm' => 'Download latency iqm', - 'download_latency_jitter' => 'Download latency jitter', - 'download_latency_low' => 'Download latency low', - 'download_mbps' => 'Download (Mbps)', - 'download_ms' => 'Download (ms)', - 'email' => 'Email', - 'email_address' => 'Email address', - 'enable' => 'Enable', - 'enable_database_notifications' => 'Enable database notifications', - 'enable_discord_webhook_notifications' => 'Enable Discord webhook notifications', - 'enable_mail_notifications' => 'Enable mail notifications', - 'enable_pushover_webhook_notifications' => 'Enable Pushover webhook notifications', - 'enable_telegram' => 'Enable telegram notifications', - 'enable_webhook_notifications' => 'Enable webhook notifications', - 'error_message' => 'Error message', - 'expired_tokens' => 'Expired tokens', - 'expires_at' => 'Expires at', - 'expires_at_helper_text' => 'Leave empty for no expiration', - 'export_all_results' => 'Export all Results', - 'export_all_results_description' => 'This will export all columns for all results.', - 'export_completed' => 'Your result export has completed and :count :rows exported.', - 'export_current_results' => 'Export current results', - 'Failed' => 'Failed', - 'failed_export' => ' :count :rows failed to exported.', - 'Faker' => 'faker', - 'faster' => 'faster', - 'general_settings' => [ - 'label' => 'General settings', - 'description' => 'The general application settings can be set here', - 'app_settings' => 'App settings', - 'speedtest_settings' => 'Speedtest settings', - 'api_settings' => 'Api settings', - 'app_name' => 'App name', - 'asset_url' => 'Asset url', - 'app_timezone' => 'App timezone', - 'chart_begin_at_zero' => 'Chart begin at zero', - 'chart_datetime_format' => 'Chart datetime format', - 'datetime_format' => 'Datetime format', - 'display_timezone' => 'Display timezone', - 'public_dashboard' => 'Public dashboard', - 'speedtest_skip_ips' => 'Speedtest skip ips', - 'speedtest_schedule' => 'Speedtest schedule', - 'speedtest_schedule_description' => 'Enter valid cron expressions. Example: * * * * * runs every minute.', - 'speedtest_servers' => 'Speedtest servers', - 'speedtest_blocked_servers' => 'Speedtest blocked servers', - 'speedtest_interface' => 'Speedtest interface', - 'speedtest_checkinternet_url' => 'Speedtest check internet url', - 'threshold_enabled' => 'Threshold enabled', - 'threshold_download' => 'Threshold download', - 'threshold_upload' => 'Threshold upload', - 'threshold_ping' => 'Threshold ping', - 'prune_results_older_than' => 'Prune results older than', - 'api_rate_limit' => 'Api rate limit', - ], - 'gotify' => 'Gotify', - 'gotify_enabled' => 'Enable Gotify webhook notifications', - 'healthcheck_enabled' => 'Enable healthcheck.io webhook notifications', - 'healthcheck_io' => 'Healthcheck.io', - 'healthy' => 'Healthy', - 'high' => 'High', - 'high_ms' => 'High (ms)', - 'id' => 'ID', - 'infoluxdb' => 'InfluxDB v2', - 'infoluxdb_description' => 'When enabled, all new Speedtest results will also be sent to InfluxDB.', - 'ip_address' => 'IP Address', - 'iqm' => 'IQM', - 'isp' => 'ISP', - 'jitter' => 'Jitter', - 'last_24h' => 'Last 24h', - 'last_month' => 'Last month', - 'last_used_at' => 'Last used at', - 'last_week' => 'Last week', - 'latest_download' => 'Latest download', - 'latest_ping' => 'Latest ping', - 'latest_upload' => 'Latest upload', - 'links' => 'Links', - 'list_servers' => 'List servers', - 'list_servers_description' => 'Grant this token permission to list available servers.', - 'low' => 'Low', - 'low_ms' => 'Low (ms)', - 'mail' => 'E-mail', - 'message' => 'Message', - 'ms' => 'ms', - 'name' => 'Name', - 'next_speedtest_at' => 'Next speedtest at:', - 'no' => 'No', - 'no_speedtests_scheduled' => 'No speedtests scheduled.', - 'notifications' => [ - 'label' => 'Notifications', - 'database' => [ - 'ping' => 'I say ping', - 'pong' => 'You say pong', - 'received' => 'Test database notification received!', - 'sent' => 'Test database notification sent.', - ], - 'discord' => [ - 'add' => 'You need to add Discord urls!', - 'sent' => 'Test Discord notification sent.', - 'payload' => '👋 Testing the Discord notification channel.', - ], - 'health_check' => [ - 'add' => 'You need to add HealthCheck.io urls!', - 'sent' => 'Test HealthCheck.io notification sent.', - 'payload' => '👋 Testing the HealthCheck.io notification channel.', - ], - 'gotfy' => [ - 'add' => 'You need to add Gotify urls!', - 'sent' => 'Test Gotify notification sent.', - 'payload' => '👋 Testing the Gotify notification channel.', - ], - 'mail' => [ - 'add' => 'You need to add mail recipients!', - 'sent' => 'Test mail notification sent.', - ], - 'ntfy' => [ - 'add' => 'You need to add ntfy urls!', - 'sent' => 'Test ntfy notification sent.', - 'payload' => '👋 Testing the ntfy notification channel.', - ], - 'pushover' => [ - 'add' => 'You need to add Pushover URLs!', - 'sent' => 'Test Pushover notification sent.', - 'payload' => '👋 Testing the Pushover notification channel.', - ], - 'slack' => [ - 'add' => 'You need to add Slack URLs!', - 'sent' => 'Test Slack notification sent.', - 'payload' => '👋 Testing the Slack notification channel.', - ], - 'telegram' => [ - 'add' => 'You need to add Telegram recipients!', - 'sent' => 'Test Telegram notification sent.', - ], - 'webhook' => [ - 'add' => 'You need to add webhook URLs!', - 'sent' => 'Test webhook notification sent.', - 'payload' => 'Webhook Notification Testing', - ], - ], - 'notify_on_every_speedtest_run' => 'Notify on every speedtest run', - 'notify_on_threshold_failures' => 'Notify on threshold failures', - 'ntfy' => 'Ntfy', - 'ntfy_enabled' => 'Enable Ntfy webhook notifications', - 'only_healthy_speedtests' => 'Only healthy speedtests', - 'only_manual_speedtests' => 'Only manual speedtests', - 'only_scheduled_speedtests' => 'Only scheduled speedtests', - 'only_unhealthy_speedtests' => 'Only unhealthy speedtests', - 'Ookla' => 'ookla', - 'ookla_error' => 'There was an issue retrieving a list of speedtest servers, check the logs.', - 'options' => 'Options', - 'org' => 'Org', - 'packet_loss' => 'Packet loss', - 'password' => 'Password', - 'password_confirmation' => 'Password Confirmation', - 'password_placeholder' => 'Password for Basic Auth (optional)', - 'ping' => 'Ping', - 'ping_details' => 'Ping details', - 'ping_high' => 'Ping high', - 'ping_jitter' => 'Ping jitter', - 'ping_low' => 'Ping low', - 'ping_ms' => 'Ping (ms)', - 'platform' => 'Platform', - 'pushover' => 'Pushover', - 'pushover_webhooks' => 'Pushover Webhooks', - 'read_results' => 'Read results', - 'read_results_description' => 'Grant this token permission to read results and statistics.', - 'recipients' => 'Recipients', - 'results' => 'Results', - 'result_overview' => 'Result overview', - 'role' => 'Role', - 'row' => '{1} :count row|[2,*] :count rows', - 'run_speedtest' => 'Run speedtest', - 'run_speedtest_description' => 'Grant this token permission to run speedtests.', - 'Running' => 'Running', - 'scheduled' => 'Scheduled', - 'sending_test_data_to_influxdb' => 'Sending test data to Influxdb', - 'server_&_metadata' => 'Server & Metadata', - 'server_host' => 'Server Host', - 'server_id' => 'Server ID', - 'server_location' => 'Server Location', - 'server_name' => 'Server Name', - 'service' => 'Service', - 'settings' => 'Settings', - 'Skipped' => 'Skipped', - 'slack' => 'Slack', - 'slack_enabled' => 'Enable Slack webhook notifications', - 'slower' => 'slower', - 'speedtest_tracker' => 'speedtest-tracker', - 'Started' => 'Started', - 'starting_bulk_data_write_to_influxdb' => 'Starting bulk data write to Influxdb', - 'status' => 'Status', - 'status_fix' => [ - 'confirm' => 'Do you want to continue?', - 'fail' => 'Command cancelled.', - 'finished' => '✅ finished!', - 'info_1' => 'This will check each result and correct the status to "completed" or "failed" based on the data column.', - 'info_2' => '📖 Read the docs: https://docs.speedtest-tracker.dev/other/commands', - ], - 'telegram' => 'Telegram', - 'telegram_chat_id' => 'Telegram Chat ID', - 'telegram_disable_notification' => 'Send the message silently to the user', - 'test_connection' => 'Test connection', - 'test_database_channel' => 'Test database channel', - 'test_discord_webhook' => 'Test Discord webhook', - 'test_gotify_webhook' => 'Test Gotify webhook', - 'test_healthcheck_webhook' => 'Test healthcheck.io webhook', - 'test_mail_channel' => 'Test mail channel', - 'test_ntfy_webhook' => 'Test Ntfy webhook', - 'test_pushover_webhook' => 'Test Pushover webhook', - 'test_slack_webhook' => 'Test Slack webhook', - 'test_telegram_channel' => 'Test telegram channel', - 'test_webhook_channel' => 'Test webhook channel', - 'threshold_helper_text' => 'Threshold notifications will be sent to the /fail path of the URL.', - 'thresholds' => 'Thresholds', - 'token' => 'Token', - 'token_created' => 'Token created', - 'token_status' => 'Token Status', - 'topic' => 'Topic', - 'triggers' => 'Triggers', - 'truncate' => 'Truncate', - 'truncate_results' => 'Truncate Results', - 'truncate_results_description' => 'Are you sure you want to truncate all results data? This can\'t be undone . ', - 'update_comments' => 'Update comments', - 'updated_at' => 'Updated at', - 'update_available' => 'Update available!', - 'upload' => 'Upload', - 'upload_latency' => 'Upload Latency', - 'upload_latency_high' => 'Upload latency high', - 'upload_latency_jitter' => 'Upload latency jitter', - 'upload_ms' => 'Upload(ms)', - 'up_to_date' => 'Up to date', - 'url' => 'URL', - 'users' => 'Users', - 'user_change' => [ - 'info' => 'User role updated.', - 'password_updated_info' => 'The password for :email has been 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?', - ], - 'user_key' => 'User Key', - 'username' => 'Username', - 'username_placeholder' => 'Username for Basic Auth(optional)', - 'verify_ssl' => 'Verify SSL', - 'view_on_speedtest_net' => 'View on Speedtest . net', - 'Waiting' => 'Waiting', - 'webhook' => 'Webhook', - 'webhooks' => 'Webhooks', - 'yes' => 'Yes', - 'your_ntfy_server_url' => 'Your ntfy server url', - 'your_ntfy_topic' => 'Your ntfy Topic', - 'your_pushover_api_token' => 'Your Pushover API Token', - 'your_pushover_user_key' => 'Your Pushover User Key', - 'your_token' => 'Your Token', - -]; 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/auth.php b/lang/zh_TW/auth.php deleted file mode 100644 index 74b841287..000000000 --- a/lang/zh_TW/auth.php +++ /dev/null @@ -1,20 +0,0 @@ - '您輸入的帳號密碼與系統記錄不符。', - 'password' => '您輸入的密碼不正確。', - 'throttle' => '登入嘗試次數太多,請於 :seconds 秒後再試。', - -]; 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' => '出生日期', - ], -]; From 77a741b5439d0ba0836f871638ecaf7184729ab0 Mon Sep 17 00:00:00 2001 From: Alex Justesen <1144087+alexjustesen@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:03:29 -0400 Subject: [PATCH 5/5] started work on creating localization files --- .../Pages/Settings/DataIntegrationPage.php | 24 ++++++++--------- lang/en/api.php | 20 ++++++++++++++ lang/en/common.php | 26 +++++++++++++++++++ lang/en/notifications.php | 20 ++++++++++++++ lang/en/settings.php | 23 ++++++++++++++++ 5 files changed, 101 insertions(+), 12 deletions(-) create mode 100644 lang/en/api.php create mode 100644 lang/en/common.php create mode 100644 lang/en/notifications.php create mode 100644 lang/en/settings.php diff --git a/app/Filament/Pages/Settings/DataIntegrationPage.php b/app/Filament/Pages/Settings/DataIntegrationPage.php index 9ee4df493..afad1f444 100644 --- a/app/Filament/Pages/Settings/DataIntegrationPage.php +++ b/app/Filament/Pages/Settings/DataIntegrationPage.php @@ -28,17 +28,17 @@ class DataIntegrationPage extends SettingsPage public static function getNavigationGroup(): string { - return __('translations.settings'); + return __('settings.settings'); } public function getTitle(): string { - return __('translations.data_integration'); + return __('settings.data_integration'); } public static function getNavigationLabel(): string { - return __('translations.data_integration'); + return __('settings.data_integration'); } public static function canAccess(): bool @@ -60,11 +60,11 @@ public function form(Form $form): Form { return $form ->schema([ - Section::make(__('translations.infoluxdb')) - ->description(__('translations.infoluxdb_description')) + Section::make(__('settings.influxdb')) + ->description(__('settings.influxdb_description')) ->schema([ Forms\Components\Toggle::make('influxdb_v2_enabled') - ->label(__('translations.enable')) + ->label(__('settings.enable_influxdb')) ->reactive() ->columnSpanFull(), @@ -72,31 +72,31 @@ public function form(Form $form): Form ->hidden(fn (Forms\Get $get) => $get('influxdb_v2_enabled') !== true) ->schema([ TextInput::make('influxdb_v2_url') - ->label(__('translations.url')) + ->label(__('common.url')) ->placeholder('http://your-influxdb-instance') ->maxLength(255) ->required(fn (Forms\Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 1]), TextInput::make('influxdb_v2_org') - ->label(__('translations.org')) + ->label(__('settings.organization')) ->maxLength(255) ->required(fn (Forms\Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 1]), TextInput::make('influxdb_v2_bucket') - ->placeholder(__('translations.speedtest_tracker')) - ->label(__('translations.bucket')) + ->label(__('settings.bucket')) + ->placeholder(__('common.speedtest_tracker')) ->maxLength(255) ->required(fn (Forms\Get $get) => $get('influxdb_v2_enabled') === true) ->columnSpan(['md' => 2]), TextInput::make('influxdb_v2_token') - ->label(__('translations.token')) + ->label(__('api.token')) ->maxLength(255) ->password() ->required(fn (Forms\Get $get) => $get('influxdb_v2_enabled') === true) ->autocomplete(false) ->columnSpan(['md' => 2]), Checkbox::make('influxdb_v2_verify_ssl') - ->label(__('translations.verify_ssl')) + ->label(__('settings.verify_ssl')) ->columnSpanFull(), // Button to send old data to InfluxDB Actions::make([ diff --git a/lang/en/api.php b/lang/en/api.php new file mode 100644 index 000000000..65d1c1635 --- /dev/null +++ b/lang/en/api.php @@ -0,0 +1,20 @@ + 'API Tokens', + 'create_token' => 'Create API Token', + 'token' => 'Token', + +]; diff --git a/lang/en/common.php b/lang/en/common.php new file mode 100644 index 000000000..ed6cea315 --- /dev/null +++ b/lang/en/common.php @@ -0,0 +1,26 @@ + 'API Token', + 'api_tokens' => 'API Tokens', + 'dashboard' => 'Dashboard', + 'disable' => 'Disable', + 'enable' => 'Enable', + 'token' => 'Token', + 'speedtest' => 'Speedtest', + 'speedtest_tracker' => 'Speedtest Tracker', + 'url' => 'URL', + +]; diff --git a/lang/en/notifications.php b/lang/en/notifications.php new file mode 100644 index 000000000..cfbad1e09 --- /dev/null +++ b/lang/en/notifications.php @@ -0,0 +1,20 @@ + 'You have a new message.', + 'account_updated' => 'Your account has been updated successfully.', + 'password_changed' => 'Your password has been changed.', + 'subscription_expiring' => 'Your subscription is expiring soon.', +]; diff --git a/lang/en/settings.php b/lang/en/settings.php new file mode 100644 index 000000000..096b02a51 --- /dev/null +++ b/lang/en/settings.php @@ -0,0 +1,23 @@ + 'Bucket', + 'data_integration' => 'Data Integration', + 'enable_influxdb' => 'Enable InfluxDB Integration', + 'influxdb' => 'InfluxDB', + 'influxdb_description' => 'Configure InfluxDB integration settings.', + 'organization' => 'Organization', + 'settings' => 'Settings', + 'url' => 'URL', + 'verify_ssl' => 'Verify SSL Certificate', + +];