diff --git a/Modules/Analytics/Providers/AnalyticsServiceProvider.php b/Modules/Analytics/Providers/AnalyticsServiceProvider.php index 7a34fde2..cd7dba6c 100644 --- a/Modules/Analytics/Providers/AnalyticsServiceProvider.php +++ b/Modules/Analytics/Providers/AnalyticsServiceProvider.php @@ -11,8 +11,8 @@ class AnalyticsServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'analytics'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'analytics'); } /** diff --git a/Modules/Audit/Providers/AuditServiceProvider.php b/Modules/Audit/Providers/AuditServiceProvider.php index f5b2664a..50a70126 100644 --- a/Modules/Audit/Providers/AuditServiceProvider.php +++ b/Modules/Audit/Providers/AuditServiceProvider.php @@ -11,8 +11,8 @@ class AuditServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'audit'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'audit'); } /** diff --git a/Modules/CarrierManagement/Providers/CarrierManagementServiceProvider.php b/Modules/CarrierManagement/Providers/CarrierManagementServiceProvider.php index a290e788..e9d443ac 100644 --- a/Modules/CarrierManagement/Providers/CarrierManagementServiceProvider.php +++ b/Modules/CarrierManagement/Providers/CarrierManagementServiceProvider.php @@ -11,8 +11,8 @@ class CarrierManagementServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'carriermanagement'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'carriermanagement'); } /** diff --git a/Modules/Configuration/Providers/ConfigurationServiceProvider.php b/Modules/Configuration/Providers/ConfigurationServiceProvider.php index bcc9ab7a..32b86b37 100644 --- a/Modules/Configuration/Providers/ConfigurationServiceProvider.php +++ b/Modules/Configuration/Providers/ConfigurationServiceProvider.php @@ -11,8 +11,8 @@ class ConfigurationServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'configuration'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'configuration'); } /** diff --git a/Modules/DocumentArchive/Providers/DocumentArchiveServiceProvider.php b/Modules/DocumentArchive/Providers/DocumentArchiveServiceProvider.php index 137e60bc..c2c3d766 100644 --- a/Modules/DocumentArchive/Providers/DocumentArchiveServiceProvider.php +++ b/Modules/DocumentArchive/Providers/DocumentArchiveServiceProvider.php @@ -11,8 +11,8 @@ class DocumentArchiveServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'documentarchive'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'documentarchive'); } /** diff --git a/Modules/Helpdesk/Concerns/HasHelpdeskTickets.php b/Modules/Helpdesk/Concerns/HasHelpdeskTickets.php index cea0de34..c5346eb1 100644 --- a/Modules/Helpdesk/Concerns/HasHelpdeskTickets.php +++ b/Modules/Helpdesk/Concerns/HasHelpdeskTickets.php @@ -21,13 +21,11 @@ trait HasHelpdeskTickets return $this->hasMany(Ticket::class, 'agent_id'); } - /** @return bool */ public function isHelpdeskAgent(): bool { return (bool) (($this->helpdesk_agent ?? false) || ($this->helpdesk_admin ?? false)); } - /** @return bool */ public function isHelpdeskAdmin(): bool { return (bool) ($this->helpdesk_admin ?? false); diff --git a/Modules/Helpdesk/Config/config.php b/Modules/Helpdesk/Config/config.php index 3bbe234a..1b947558 100644 --- a/Modules/Helpdesk/Config/config.php +++ b/Modules/Helpdesk/Config/config.php @@ -5,9 +5,9 @@ declare(strict_types=1); return [ 'route_prefix' => env('HELPDESK_ROUTE_PREFIX', 'helpdesk'), 'middleware' => ['web', 'auth'], - 'disk' => env('HELPDESK_ATTACHMENTS_DISK', 'helpdesk'), + 'disk' => env('HELPDESK_ATTACHMENTS_DISK', 'local'), 'max_upload_kb' => (int) env('HELPDESK_MAX_UPLOAD_KB', 10240), - 'allowed_mimes' => ['md', 'pdf', 'png', 'jpg', 'jpeg', 'webp', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'zip'], + 'allowed_mimes' => ['md','pdf', 'png', 'jpg', 'jpeg', 'webp', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'zip'], 'default_status_slug' => 'new', 'closed_status_slug' => 'closed', ]; diff --git a/Modules/Helpdesk/Database/Migrations/2026_04_24_000001_add_helpdesk_flags_to_users_table.php b/Modules/Helpdesk/Database/Migrations/2026_04_24_000001_add_helpdesk_flags_to_users_table.php index 4a5b2f69..c8969030 100644 --- a/Modules/Helpdesk/Database/Migrations/2026_04_24_000001_add_helpdesk_flags_to_users_table.php +++ b/Modules/Helpdesk/Database/Migrations/2026_04_24_000001_add_helpdesk_flags_to_users_table.php @@ -6,11 +6,10 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration { +return new class extends Migration +{ /** * Run the migrations. - * - * @return void */ public function up(): void { @@ -24,5 +23,4 @@ return new class extends Migration { } }); } - }; diff --git a/Modules/Helpdesk/Database/Migrations/2026_06_12_000020_create_helpdesk_tickets_table.php b/Modules/Helpdesk/Database/Migrations/2026_06_12_000020_create_helpdesk_tickets_table.php index f83d4de5..f139a3be 100644 --- a/Modules/Helpdesk/Database/Migrations/2026_06_12_000020_create_helpdesk_tickets_table.php +++ b/Modules/Helpdesk/Database/Migrations/2026_06_12_000020_create_helpdesk_tickets_table.php @@ -6,8 +6,8 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration { - /** @return void */ +return new class extends Migration +{ public function up(): void { Schema::create('helpdesk_tickets', static function (Blueprint $table): void { @@ -38,5 +38,4 @@ return new class extends Migration { $table->index('last_activity_at'); }); } - }; diff --git a/Modules/Helpdesk/Database/Migrations/2026_06_12_000030_create_helpdesk_git_and_workflow_tables.php b/Modules/Helpdesk/Database/Migrations/2026_06_12_000030_create_helpdesk_git_and_workflow_tables.php index 4da3429a..25446f2d 100644 --- a/Modules/Helpdesk/Database/Migrations/2026_06_12_000030_create_helpdesk_git_and_workflow_tables.php +++ b/Modules/Helpdesk/Database/Migrations/2026_06_12_000030_create_helpdesk_git_and_workflow_tables.php @@ -6,8 +6,8 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration { - /** @return void */ +return new class extends Migration +{ public function up(): void { Schema::create('helpdesk_git_repositories', static function (Blueprint $table): void { @@ -75,5 +75,4 @@ return new class extends Migration { $table->index(['status', 'created_at']); }); } - }; diff --git a/Modules/Helpdesk/Database/Migrations/2026_06_12_000040_create_helpdesk_comments_and_attachments_tables.php b/Modules/Helpdesk/Database/Migrations/2026_06_12_000040_create_helpdesk_comments_and_attachments_tables.php index 2640b673..14ef7892 100644 --- a/Modules/Helpdesk/Database/Migrations/2026_06_12_000040_create_helpdesk_comments_and_attachments_tables.php +++ b/Modules/Helpdesk/Database/Migrations/2026_06_12_000040_create_helpdesk_comments_and_attachments_tables.php @@ -6,8 +6,8 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration { - /** @return void */ +return new class extends Migration +{ public function up(): void { Schema::create('helpdesk_comments', static function (Blueprint $table): void { @@ -37,5 +37,4 @@ return new class extends Migration { $table->index(['ticket_id', 'comment_id', 'created_at']); }); } - }; diff --git a/Modules/Helpdesk/Database/Migrations/2026_06_12_124726_helpdesk_performance_indexes.php b/Modules/Helpdesk/Database/Migrations/2026_06_12_124726_helpdesk_performance_indexes.php deleted file mode 100644 index 57ca0e30..00000000 --- a/Modules/Helpdesk/Database/Migrations/2026_06_12_124726_helpdesk_performance_indexes.php +++ /dev/null @@ -1,131 +0,0 @@ -addIndex('helpdesk_tickets', ['company_id', 'status_id'], 'hdesk_tickets_company_status_idx'); - $this->addIndex('helpdesk_tickets', ['company_id', 'priority_id'], 'hdesk_tickets_company_priority_idx'); - $this->addIndex('helpdesk_tickets', ['company_id', 'category_id'], 'hdesk_tickets_company_category_idx'); - $this->addIndex('helpdesk_tickets', ['company_id', 'team_id'], 'hdesk_tickets_company_team_idx'); - $this->addIndex('helpdesk_tickets', ['status_id', 'created_at'], 'hdesk_tickets_status_created_idx'); - $this->addIndex('helpdesk_tickets', ['due_at'], 'hdesk_tickets_due_at_idx'); - $this->addIndex('helpdesk_tickets', ['archived_at'], 'hdesk_tickets_archived_at_idx'); - - $this->addIndex('helpdesk_comments', ['parent_id', 'created_at'], 'hdesk_comments_parent_created_idx'); - $this->addIndex('helpdesk_comments', ['user_id', 'created_at'], 'hdesk_comments_user_created_idx'); - - $this->addIndex('helpdesk_attachments', ['ticket_id'], 'hdesk_attachments_ticket_idx'); - $this->addIndex('helpdesk_attachments', ['comment_id'], 'hdesk_attachments_comment_idx'); - $this->addIndex('helpdesk_attachments', ['user_id'], 'hdesk_attachments_user_idx'); - - if (Schema::hasTable('helpdesk_projects')) { - $this->addIndex('helpdesk_projects', ['company_id', 'archived_at'], 'hdesk_projects_company_archived_idx'); - } - - if (Schema::hasTable('helpdesk_teams')) { - $this->addIndex('helpdesk_teams', ['company_id', 'archived_at'], 'hdesk_teams_company_archived_idx'); - } - - if (Schema::hasTable('helpdesk_category_user')) { - $this->addIndex('helpdesk_category_user', ['category_id', 'user_id'], 'hdesk_category_user_category_user_idx'); - $this->addIndex('helpdesk_category_user', ['user_id', 'category_id'], 'hdesk_category_user_user_category_idx'); - } - } - - /** @return void */ - public function down(): void - { - foreach ([ - 'helpdesk_tickets' => [ - 'hdesk_tickets_company_status_idx', - 'hdesk_tickets_company_priority_idx', - 'hdesk_tickets_company_category_idx', - 'hdesk_tickets_company_team_idx', - 'hdesk_tickets_status_created_idx', - 'hdesk_tickets_due_at_idx', - 'hdesk_tickets_archived_at_idx', - ], - 'helpdesk_comments' => [ - 'hdesk_comments_parent_created_idx', - 'hdesk_comments_user_created_idx', - ], - 'helpdesk_attachments' => [ - 'hdesk_attachments_ticket_idx', - 'hdesk_attachments_comment_idx', - 'hdesk_attachments_user_idx', - ], - 'helpdesk_projects' => [ - 'hdesk_projects_company_archived_idx', - ], - 'helpdesk_teams' => [ - 'hdesk_teams_company_archived_idx', - ], - 'helpdesk_category_user' => [ - 'hdesk_category_user_category_user_idx', - 'hdesk_category_user_user_category_idx', - ], - ] as $table => $indexes) { - if (! Schema::hasTable($table)) { - continue; - } - - Schema::table($table, function (Blueprint $tableBlueprint) use ($table, $indexes): void { - foreach ($indexes as $index) { - if ($this->indexExists($table, $index)) { - $tableBlueprint->dropIndex($index); - } - } - }); - } - } - - /** - * Add an index only when the table exists and the named index does not exist. - * - * @param string $table - * @param array $columns - * @param string $index - * @return void - */ - private function addIndex(string $table, array $columns, string $index): void - { - if (! Schema::hasTable($table) || $this->indexExists($table, $index)) { - return; - } - - Schema::table($table, static function (Blueprint $tableBlueprint) use ($columns, $index): void { - $tableBlueprint->index($columns, $index); - }); - } - - /** - * Determine whether an index exists for the current connection. - * - * @param string $table - * @param string $index - * @return bool - */ - private function indexExists(string $table, string $index): bool - { - if (method_exists(Schema::getFacadeRoot(), 'hasIndex')) { - return Schema::hasIndex($table, $index); - } - - if (DB::getDriverName() === 'pgsql') { - return DB::selectOne( - 'select 1 from pg_indexes where schemaname = current_schema() and tablename = ? and indexname = ? limit 1', - [$table, $index] - ) !== null; - } - - return false; - } -}; diff --git a/Modules/Helpdesk/Database/Migrations/2026_06_12_130000_create_helpdesk_kanban_boards_table.php b/Modules/Helpdesk/Database/Migrations/2026_06_12_130000_create_helpdesk_kanban_boards_table.php new file mode 100644 index 00000000..974dd989 --- /dev/null +++ b/Modules/Helpdesk/Database/Migrations/2026_06_12_130000_create_helpdesk_kanban_boards_table.php @@ -0,0 +1,39 @@ +id(); + $table->string('name'); + $table->string('slug')->unique(); + $table->text('description')->nullable(); + $table->boolean('is_default')->default(false); + $table->unsignedInteger('sort_order')->default(0); + $table->timestamps(); + $table->softDeletes(); + + $table->index(['is_default', 'sort_order']); + }); + } + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('helpdesk_kanban_boards'); + } +}; diff --git a/Modules/Helpdesk/Database/Migrations/2026_06_12_130010_create_helpdesk_kanban_board_statuses_table.php b/Modules/Helpdesk/Database/Migrations/2026_06_12_130010_create_helpdesk_kanban_board_statuses_table.php new file mode 100644 index 00000000..4146c1c6 --- /dev/null +++ b/Modules/Helpdesk/Database/Migrations/2026_06_12_130010_create_helpdesk_kanban_board_statuses_table.php @@ -0,0 +1,31 @@ +id(); + $table->foreignId('board_id')->constrained('helpdesk_kanban_boards')->cascadeOnDelete(); + $table->foreignId('status_id')->constrained('helpdesk_statuses')->cascadeOnDelete(); + $table->unsignedInteger('sort_order')->default(0); + $table->timestamps(); + + $table->unique(['board_id', 'status_id']); + $table->index(['board_id', 'sort_order']); + }); + } + } + + public function down(): void + { + Schema::dropIfExists('helpdesk_kanban_board_statuses'); + } +}; diff --git a/Modules/Helpdesk/Database/Seeders/HelpdeskDatabaseSeeder.php b/Modules/Helpdesk/Database/Seeders/HelpdeskDatabaseSeeder.php index a102f108..6ba3eb7f 100644 --- a/Modules/Helpdesk/Database/Seeders/HelpdeskDatabaseSeeder.php +++ b/Modules/Helpdesk/Database/Seeders/HelpdeskDatabaseSeeder.php @@ -5,8 +5,10 @@ declare(strict_types=1); namespace Modules\Helpdesk\Database\Seeders; use Illuminate\Database\Seeder; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; use Modules\Helpdesk\Models\Category; +use Modules\Helpdesk\Models\KanbanBoard; use Modules\Helpdesk\Models\Priority; use Modules\Helpdesk\Models\Project; use Modules\Helpdesk\Models\Status; @@ -26,7 +28,19 @@ final class HelpdeskDatabaseSeeder extends Seeder $this->seedPriorities(); $this->seedCategories(); $this->seedTeamsAndProjects(); + $this->seedKanbanBoards(); $this->seedWorkflowTemplates(); + DB::table('helpdesk_kanban_boards')->updateOrInsert( + ['slug' => 'default'], + [ + 'name' => 'Default Helpdesk Board', + 'description' => 'Standard support workflow board.', + 'is_default' => true, + 'sort_order' => 1, + 'created_at' => now(), + 'updated_at' => now(), + ] + ); } /** @@ -115,6 +129,38 @@ final class HelpdeskDatabaseSeeder extends Seeder ); } + /** + * Seed the default configurable Kanban board. + * + * @return void + */ + private function seedKanbanBoards(): void + { + $board = KanbanBoard::query()->updateOrCreate( + ['slug' => 'standard-support'], + [ + 'name' => 'Standard Support', + 'slug' => 'standard-support', + 'description' => 'Default Helpdesk workflow board covering new work through closure.', + 'is_default' => true, + 'sort_order' => 1, + ] + ); + + $statuses = Status::query() + ->whereIn('slug', ['new', 'open', 'in-progress', 'stalled', 'on-hold', 'closed']) + ->orderBy('sort_order') + ->get(); + + $sync = []; + + foreach ($statuses as $index => $status) { + $sync[$status->id] = ['sort_order' => ($index + 1) * 10]; + } + + $board->statuses()->syncWithoutDetaching($sync); + } + /** * Seed default professional workflow email templates. * @@ -134,4 +180,7 @@ final class HelpdeskDatabaseSeeder extends Seeder ); } } + + + } diff --git a/Modules/Helpdesk/HelpdeskDatabaseSeeder.php b/Modules/Helpdesk/HelpdeskDatabaseSeeder.php new file mode 100644 index 00000000..ad9ce0b3 --- /dev/null +++ b/Modules/Helpdesk/HelpdeskDatabaseSeeder.php @@ -0,0 +1,17 @@ +call(DatabaseHelpdeskDatabaseSeeder::class); + } +} diff --git a/Modules/Helpdesk/Http/Controllers/HelpdeskController.php b/Modules/Helpdesk/Http/Controllers/HelpdeskController.php index e149b3ef..8cbefeac 100644 --- a/Modules/Helpdesk/Http/Controllers/HelpdeskController.php +++ b/Modules/Helpdesk/Http/Controllers/HelpdeskController.php @@ -12,8 +12,6 @@ final class HelpdeskController extends Controller { /** * Display the Helpdesk module landing page inside the application shell. - * - * @return View */ public function __invoke(): View { diff --git a/Modules/Helpdesk/Http/Controllers/TicketStoreController.php b/Modules/Helpdesk/Http/Controllers/TicketStoreController.php index 6daadb67..724b3478 100644 --- a/Modules/Helpdesk/Http/Controllers/TicketStoreController.php +++ b/Modules/Helpdesk/Http/Controllers/TicketStoreController.php @@ -18,10 +18,6 @@ final class TicketStoreController extends Controller * * This avoids the Livewire update endpoint for ticket creation, which prevents * proxy/hash update-route 404s from blocking ticket creation. - * - * @param Request $request - * @param TicketService $tickets - * @return RedirectResponse */ public function __invoke(Request $request, TicketService $tickets): RedirectResponse { @@ -38,7 +34,7 @@ final class TicketStoreController extends Controller 'team_id' => ['nullable', 'integer', Rule::exists('helpdesk_teams', 'id')], 'due_at' => ['nullable', 'date'], 'attachments' => ['nullable', 'array'], - 'attachments.*' => ['file', 'max:' . $maxUploadKilobytes, 'mimes:' . implode(',', $allowedMimes)], + 'attachments.*' => ['file', 'max:'.$maxUploadKilobytes, 'mimes:'.implode(',', $allowedMimes)], ]); $user = Auth::user(); @@ -61,6 +57,6 @@ final class TicketStoreController extends Controller return redirect() ->route('helpdesk.tickets.index') - ->with('success', 'Ticket ' . $ticket->reference . ' has been created.'); + ->with('success', 'Ticket '.$ticket->reference.' has been created.'); } } diff --git a/Modules/Helpdesk/Livewire/HelpdeskDashboardWidget.php b/Modules/Helpdesk/Livewire/HelpdeskDashboardWidget.php index 64563a6b..705b0249 100644 --- a/Modules/Helpdesk/Livewire/HelpdeskDashboardWidget.php +++ b/Modules/Helpdesk/Livewire/HelpdeskDashboardWidget.php @@ -12,7 +12,6 @@ use Modules\Helpdesk\Models\Ticket; final class HelpdeskDashboardWidget extends Component { - /** @return View */ public function render(): View { $user = Auth::user(); diff --git a/Modules/Helpdesk/Livewire/KanbanBoard.php b/Modules/Helpdesk/Livewire/KanbanBoard.php index 56e02b17..dcacc7ff 100644 --- a/Modules/Helpdesk/Livewire/KanbanBoard.php +++ b/Modules/Helpdesk/Livewire/KanbanBoard.php @@ -8,26 +8,32 @@ use Illuminate\Contracts\View\View; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Auth; use Livewire\Component; +use Modules\Helpdesk\Models\KanbanBoard as KanbanBoardModel; use Modules\Helpdesk\Models\Status; use Modules\Helpdesk\Models\Ticket; use Modules\Helpdesk\Services\WorkflowNotificationService; final class KanbanBoard extends Component { + public ?int $board_id = null; + + public function mount(): void + { + $this->board_id = KanbanBoardModel::query() + ->where('is_default', true) + ->orderBy('sort_order') + ->value('id') ?: KanbanBoardModel::query()->orderBy('sort_order')->value('id'); + } + /** * Move a ticket to another workflow status. - * - * @param int $ticketId - * @param int $statusId - * @param WorkflowNotificationService $workflow - * @return void */ - public function moveTicket(int $ticketId, int $statusId, WorkflowNotificationService $workflow): void + public function moveTicket(int|string $ticketId, int|string $statusId, WorkflowNotificationService $workflow): void { - $ticket = Ticket::query()->visibleTo(Auth::user())->findOrFail($ticketId); - $status = Status::query()->findOrFail($statusId); + $ticket = Ticket::query()->visibleTo(Auth::user())->findOrFail((int) $ticketId); + $status = Status::query()->findOrFail((int) $statusId); - $oldStatus = $ticket->status?->name; + $this->authorize('update', $ticket); $ticket->forceFill([ 'status_id' => $status->id, @@ -36,8 +42,8 @@ final class KanbanBoard extends Component ])->save(); $workflow->dispatch( - $ticket->fresh(['owner', 'agent', 'status', 'priority', 'category', 'project', 'team']), - $status->is_closed ? 'ticket_closed' : 'ticket_updated', + $ticket->fresh(['owner', 'agent', 'status', 'priority', 'category', 'project', 'team']) ?? $ticket, + $status->is_closed ? 'ticket.closed' : 'ticket.updated', Auth::user() ); @@ -46,13 +52,22 @@ final class KanbanBoard extends Component /** * Render the Kanban board. - * - * @return View */ public function render(): View { + $boards = KanbanBoardModel::query() + ->with('statuses') + ->orderBy('sort_order') + ->orderBy('name') + ->get(); + + $board = $boards->firstWhere('id', $this->board_id) ?? $boards->first(); + $statuses = $board?->statuses ?? Status::query()->orderBy('sort_order')->orderBy('name')->get(); + return view('helpdesk::livewire.kanban-board', [ - 'statuses' => Status::query()->orderBy('sort_order')->get(), + 'boards' => $boards, + 'board' => $board, + 'statuses' => $statuses, 'ticketsByStatus' => $this->ticketsByStatus(), ])->layout('layouts.app'); } @@ -68,7 +83,7 @@ final class KanbanBoard extends Component ->with(['owner', 'agent', 'status', 'priority', 'category', 'project', 'team']) ->visibleTo(Auth::user()) ->latest('last_activity_at') - ->limit(200) + ->limit(300) ->get() ->groupBy('status_id') ->all(); diff --git a/Modules/Helpdesk/Livewire/SettingsManager.php b/Modules/Helpdesk/Livewire/SettingsManager.php index b06f3fa2..f1d4b11f 100644 --- a/Modules/Helpdesk/Livewire/SettingsManager.php +++ b/Modules/Helpdesk/Livewire/SettingsManager.php @@ -42,7 +42,6 @@ final class SettingsManager extends Component /** @var array */ public array $workflowForm = ['id' => null, 'name' => '', 'event' => 'ticket.created', 'subject' => '', 'html_body' => '', 'text_body' => '', 'to_role' => 'requester', 'cc' => '', 'bcc' => '', 'is_active' => true]; - /** @return void */ public function saveStatus(): void { $data = $this->validate([ @@ -59,27 +58,23 @@ final class SettingsManager extends Component session()->flash('success', 'Status saved.'); } - /** @return void */ public function editStatus(int $id): void { $this->statusForm = Status::query()->findOrFail($id)->only(['id', 'name', 'slug', 'color', 'sort_order', 'is_closed']); $this->section = 'statuses'; } - /** @return void */ public function deleteStatus(int $id): void { Status::query()->findOrFail($id)->delete(); session()->flash('success', 'Status deleted.'); } - /** @return void */ public function resetStatusForm(): void { $this->statusForm = ['id' => null, 'name' => '', 'slug' => '', 'color' => 'zinc', 'sort_order' => 0, 'is_closed' => false]; } - /** @return void */ public function savePriority(): void { $data = $this->validate([ @@ -95,27 +90,23 @@ final class SettingsManager extends Component session()->flash('success', 'Priority saved.'); } - /** @return void */ public function editPriority(int $id): void { $this->priorityForm = Priority::query()->findOrFail($id)->only(['id', 'name', 'slug', 'color', 'sort_order']); $this->section = 'priorities'; } - /** @return void */ public function deletePriority(int $id): void { Priority::query()->findOrFail($id)->delete(); session()->flash('success', 'Priority deleted.'); } - /** @return void */ public function resetPriorityForm(): void { $this->priorityForm = ['id' => null, 'name' => '', 'slug' => '', 'color' => 'zinc', 'sort_order' => 0]; } - /** @return void */ public function saveCategory(): void { $data = $this->validate([ @@ -132,27 +123,23 @@ final class SettingsManager extends Component session()->flash('success', 'Category saved.'); } - /** @return void */ public function editCategory(int $id): void { $this->categoryForm = Category::query()->findOrFail($id)->only(['id', 'company_id', 'name', 'slug', 'color', 'description']); $this->section = 'categories'; } - /** @return void */ public function deleteCategory(int $id): void { Category::query()->findOrFail($id)->delete(); session()->flash('success', 'Category deleted.'); } - /** @return void */ public function resetCategoryForm(): void { $this->categoryForm = ['id' => null, 'company_id' => null, 'name' => '', 'slug' => '', 'color' => 'blue', 'description' => '']; } - /** @return void */ public function saveTeam(): void { $data = $this->validate([ @@ -169,27 +156,23 @@ final class SettingsManager extends Component session()->flash('success', 'Team saved.'); } - /** @return void */ public function editTeam(int $id): void { $this->teamForm = Team::query()->findOrFail($id)->only(['id', 'company_id', 'name', 'slug', 'color', 'description', 'archived_at']); $this->section = 'teams'; } - /** @return void */ public function deleteTeam(int $id): void { Team::query()->findOrFail($id)->delete(); session()->flash('success', 'Team deleted.'); } - /** @return void */ public function resetTeamForm(): void { $this->teamForm = ['id' => null, 'company_id' => null, 'name' => '', 'slug' => '', 'color' => 'indigo', 'description' => '', 'archived_at' => null]; } - /** @return void */ public function saveProject(): void { $data = $this->validate([ @@ -207,28 +190,23 @@ final class SettingsManager extends Component session()->flash('success', 'Project saved.'); } - /** @return void */ public function editProject(int $id): void { $this->projectForm = Project::query()->findOrFail($id)->only(['id', 'company_id', 'team_id', 'title', 'slug', 'color', 'description', 'archived_at']); $this->section = 'projects'; } - /** @return void */ public function deleteProject(int $id): void { Project::query()->findOrFail($id)->delete(); session()->flash('success', 'Project deleted.'); } - /** @return void */ public function resetProjectForm(): void { $this->projectForm = ['id' => null, 'company_id' => null, 'team_id' => null, 'title' => '', 'slug' => '', 'color' => 'blue', 'description' => '', 'archived_at' => null]; } - - /** @return void */ public function saveRepository(): void { $data = $this->validate([ @@ -246,28 +224,23 @@ final class SettingsManager extends Component session()->flash('success', 'Git repository saved.'); } - /** @return void */ public function editRepository(int $id): void { $this->repositoryForm = GitRepository::query()->findOrFail($id)->only(['id', 'company_id', 'project_id', 'name', 'provider', 'remote_url', 'default_branch', 'webhook_secret']); $this->section = 'git'; } - /** @return void */ public function deleteRepository(int $id): void { GitRepository::query()->findOrFail($id)->delete(); session()->flash('success', 'Git repository deleted.'); } - /** @return void */ public function resetRepositoryForm(): void { $this->repositoryForm = ['id' => null, 'company_id' => null, 'project_id' => null, 'name' => '', 'provider' => 'git', 'remote_url' => '', 'default_branch' => 'main', 'webhook_secret' => '']; } - - /** @return void */ public function saveWorkflowTemplate(): void { $data = $this->validate([ @@ -287,27 +260,23 @@ final class SettingsManager extends Component session()->flash('success', 'Workflow message saved.'); } - /** @return void */ public function editWorkflowTemplate(int $id): void { $this->workflowForm = WorkflowTemplate::query()->findOrFail($id)->only(['id', 'name', 'event', 'subject', 'html_body', 'text_body', 'to_role', 'cc', 'bcc', 'is_active']); $this->section = 'workflow'; } - /** @return void */ public function deleteWorkflowTemplate(int $id): void { WorkflowTemplate::query()->findOrFail($id)->delete(); session()->flash('success', 'Workflow message deleted.'); } - /** @return void */ public function resetWorkflowTemplateForm(): void { $this->workflowForm = ['id' => null, 'name' => '', 'event' => 'ticket.created', 'subject' => '', 'html_body' => '', 'text_body' => '', 'to_role' => 'requester', 'cc' => '', 'bcc' => '', 'is_active' => true]; } - /** @return View */ public function render(): View { return view('helpdesk::livewire.settings-manager', [ diff --git a/Modules/Helpdesk/Livewire/TicketEdit.php b/Modules/Helpdesk/Livewire/TicketEdit.php index 85d6ca0d..98cfe6c6 100644 --- a/Modules/Helpdesk/Livewire/TicketEdit.php +++ b/Modules/Helpdesk/Livewire/TicketEdit.php @@ -26,9 +26,6 @@ final class TicketEdit extends Component #[Validate('nullable|integer')] public ?int $company_id = null; - #[Validate('nullable|integer|exists:users,id')] - public ?int $agent_id = null; - #[Validate('required|string|max:200')] public string $subject = ''; @@ -50,19 +47,18 @@ final class TicketEdit extends Component #[Validate('nullable|integer|exists:helpdesk_teams,id')] public ?int $team_id = null; + #[Validate('nullable|integer|exists:users,id')] + public ?int $agent_id = null; + #[Validate('nullable|date')] public ?string $due_at = null; - /** - * Populate editable ticket state. - */ public function mount(Ticket $ticket): void { $this->authorize('update', $ticket); $this->ticket = $ticket->fresh(['status', 'priority', 'category', 'project', 'team', 'agent']) ?? $ticket; $this->company_id = $this->ticket->company_id; - $this->agent_id = $this->ticket->agent_id; $this->subject = $this->ticket->subject; $this->body = $this->ticket->body; $this->status_id = $this->ticket->status_id; @@ -70,12 +66,10 @@ final class TicketEdit extends Component $this->category_id = $this->ticket->category_id; $this->project_id = $this->ticket->project_id; $this->team_id = $this->ticket->team_id; + $this->agent_id = $this->ticket->agent_id; $this->due_at = $this->ticket->due_at?->format('Y-m-d'); } - /** - * Save ticket changes. - */ public function save(WorkflowNotificationService $workflow): mixed { $this->authorize('update', $this->ticket); @@ -85,7 +79,6 @@ final class TicketEdit extends Component $this->ticket->forceFill([ 'company_id' => $this->company_id, - 'agent_id' => $this->agent_id, 'subject' => $this->subject, 'body' => $this->body, 'status_id' => $status->id, @@ -93,27 +86,25 @@ final class TicketEdit extends Component 'category_id' => $this->category_id, 'project_id' => $this->project_id, 'team_id' => $this->team_id, - 'due_at' => $this->due_at ?: null, + 'agent_id' => $this->agent_id, + 'due_at' => $this->due_at, 'completed_at' => $status->is_closed ? now() : null, 'last_activity_at' => now(), ])->save(); - $this->ticket = $this->ticket->fresh(['owner', 'agent', 'status', 'priority', 'category', 'project', 'team']) ?? $this->ticket; - $workflow->dispatch($this->ticket, $status->is_closed ? 'ticket.closed' : 'ticket.updated', Auth::user()); + $fresh = $this->ticket->fresh(['owner', 'agent', 'status', 'priority', 'category', 'project', 'team']) ?? $this->ticket; + $workflow->dispatch($fresh, $status->is_closed ? 'ticket.closed' : 'ticket.updated', Auth::user()); - session()->flash('success', 'Ticket ' . $this->ticket->reference . ' has been updated.'); + session()->flash('success', 'Ticket ' . $fresh->reference . ' has been updated.'); - return redirect()->route('helpdesk.tickets.show', $this->ticket); + return redirect()->route('helpdesk.tickets.show', $fresh); } - /** - * Render the ticket edit screen. - */ public function render(): View { return view('helpdesk::livewire.ticket-edit', [ - 'statuses' => Status::query()->orderBy('sort_order')->get(), - 'priorities' => Priority::query()->orderBy('sort_order')->get(), + 'statuses' => Status::query()->orderBy('sort_order')->orderBy('name')->get(), + 'priorities' => Priority::query()->orderBy('sort_order')->orderBy('name')->get(), 'categories' => Category::query()->orderBy('name')->get(), 'companies' => Schema::hasTable('companies') ? DB::table('companies')->select(['id', 'name'])->orderBy('name')->get() : collect(), 'teams' => Team::query()->whereNull('archived_at')->orderBy('name')->get(), diff --git a/Modules/Helpdesk/Livewire/TicketIndex.php b/Modules/Helpdesk/Livewire/TicketIndex.php index 8f40f87e..d2fddbab 100644 --- a/Modules/Helpdesk/Livewire/TicketIndex.php +++ b/Modules/Helpdesk/Livewire/TicketIndex.php @@ -33,8 +33,6 @@ final class TicketIndex extends Component /** * Reset pagination when filters change. - * - * @return void */ public function updated(): void { @@ -43,8 +41,6 @@ final class TicketIndex extends Component /** * Render the ticket list. - * - * @return View */ public function render(): View { @@ -73,9 +69,9 @@ final class TicketIndex extends Component ->when($this->priority !== '', fn (Builder $query): Builder => $query->where('priority_id', (int) $this->priority)) ->when($this->search !== '', function (Builder $query): Builder { return $query->where(static function (Builder $subQuery): void { - $subQuery->where('reference', 'like', '%' . $this->search . '%') - ->orWhere('subject', 'like', '%' . $this->search . '%') - ->orWhere('body', 'like', '%' . $this->search . '%'); + $subQuery->where('reference', 'like', '%'.$this->search.'%') + ->orWhere('subject', 'like', '%'.$this->search.'%') + ->orWhere('body', 'like', '%'.$this->search.'%'); }); }) ->latest('last_activity_at') diff --git a/Modules/Helpdesk/Livewire/TicketShow.php b/Modules/Helpdesk/Livewire/TicketShow.php index e210ba71..c4154fe7 100644 --- a/Modules/Helpdesk/Livewire/TicketShow.php +++ b/Modules/Helpdesk/Livewire/TicketShow.php @@ -12,7 +12,6 @@ use Livewire\Attributes\Validate; use Livewire\Component; use Livewire\Features\SupportFileUploads\TemporaryUploadedFile; use Livewire\WithFileUploads; -use Modules\Helpdesk\Models\Comment; use Modules\Helpdesk\Models\Priority; use Modules\Helpdesk\Models\Status; use Modules\Helpdesk\Models\Ticket; @@ -145,36 +144,39 @@ final class TicketShow extends Component 'team', 'attachments.user', 'gitCommits.repository', + 'comments.attachments', + 'comments.replies.attachments', + 'comments.replies.replies.attachments', ]) ?? $ticket; - $comments = Comment::query() - ->where('ticket_id', $ticket->id) - ->with(['user', 'attachments']) - ->oldest() - ->get(); + $comments = $ticket->comments + ->merge($ticket->comments->flatMap->replies) + ->merge($ticket->comments->flatMap->replies->flatMap->replies); - $grouped = $comments->groupBy('parent_id'); + $users = User::query() + ->whereIn('id', $comments->pluck('user_id')->filter()->unique()) + ->get() + ->keyBy('id'); - $comments->each(function ($comment) use ($grouped): void { - $comment->setRelation('replies', $grouped->get($comment->id, collect())); - }); - - $ticket->setRelation('comments', $this->buildCommentTree($grouped)); + $this->attachCommentUsers($ticket->comments, $users); return $ticket; } - private function buildCommentTree($grouped, ?int $parentId = null) - + /** + * Attach loaded users to comment hierarchy without triggering lazy loading. + * + * @param Collection $comments + * @param Collection $users + */ + private function attachCommentUsers(Collection $comments, Collection $users): void { + foreach ($comments as $comment) { + $comment->setRelation('user', $users->get($comment->user_id)); - return $grouped->get($parentId, collect())->map(function ($comment) use ($grouped) { - - $comment->setRelation('replies', $this->buildCommentTree($grouped, $comment->id)); - - return $comment; - - }); - + if ($comment->relationLoaded('replies')) { + $this->attachCommentUsers($comment->replies, $users); + } + } } } diff --git a/Modules/Helpdesk/Models/Attachment.php b/Modules/Helpdesk/Models/Attachment.php index 3f838510..7f6b86fa 100644 --- a/Modules/Helpdesk/Models/Attachment.php +++ b/Modules/Helpdesk/Models/Attachment.php @@ -40,7 +40,6 @@ final class Attachment extends Model return $this->belongsTo(User::class, 'user_id'); } - /** @return string */ public function url(): string { return Storage::disk($this->disk)->url($this->path); diff --git a/Modules/Helpdesk/Models/KanbanBoard.php b/Modules/Helpdesk/Models/KanbanBoard.php new file mode 100644 index 00000000..ab77bc4c --- /dev/null +++ b/Modules/Helpdesk/Models/KanbanBoard.php @@ -0,0 +1,44 @@ + */ + protected $fillable = [ + 'name', + 'slug', + 'description', + 'is_default', + 'sort_order', + ]; + + /** @var array */ + protected $casts = [ + 'is_default' => 'boolean', + 'sort_order' => 'integer', + ]; + + /** @return BelongsToMany */ + public function statuses(): BelongsToMany + { + return $this->belongsToMany(Status::class, 'helpdesk_kanban_board_statuses', 'board_id', 'status_id') + ->withPivot(['sort_order']) + ->orderBy('helpdesk_kanban_board_statuses.sort_order') + ->orderBy('helpdesk_statuses.sort_order') + ->withTimestamps(); + } +} diff --git a/Modules/Helpdesk/Models/Ticket.php b/Modules/Helpdesk/Models/Ticket.php index b4fe81da..283b16d3 100644 --- a/Modules/Helpdesk/Models/Ticket.php +++ b/Modules/Helpdesk/Models/Ticket.php @@ -6,7 +6,6 @@ namespace Modules\Helpdesk\Models; use App\Models\User; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; diff --git a/Modules/Helpdesk/Policies/TicketPolicy.php b/Modules/Helpdesk/Policies/TicketPolicy.php index 05313691..39ad6f58 100644 --- a/Modules/Helpdesk/Policies/TicketPolicy.php +++ b/Modules/Helpdesk/Policies/TicketPolicy.php @@ -9,13 +9,11 @@ use Modules\Helpdesk\Models\Ticket; final class TicketPolicy { - /** @return bool */ public function viewAny(User $user): bool { return true; } - /** @return bool */ public function view(User $user, Ticket $ticket): bool { return (bool) ($user->helpdesk_admin ?? false) @@ -23,25 +21,21 @@ final class TicketPolicy || (int) $ticket->user_id === (int) $user->id; } - /** @return bool */ public function create(User $user): bool { return true; } - /** @return bool */ public function update(User $user, Ticket $ticket): bool { return (bool) ($user->helpdesk_admin ?? false) || (int) $ticket->agent_id === (int) $user->id; } - /** @return bool */ public function comment(User $user, Ticket $ticket): bool { return $this->view($user, $ticket); } - /** @return bool */ public function delete(User $user, Ticket $ticket): bool { return (bool) ($user->helpdesk_admin ?? false); diff --git a/Modules/Helpdesk/Providers/HelpdeskServiceProvider.php b/Modules/Helpdesk/Providers/HelpdeskServiceProvider.php index 55b99a7b..b441b10e 100644 --- a/Modules/Helpdesk/Providers/HelpdeskServiceProvider.php +++ b/Modules/Helpdesk/Providers/HelpdeskServiceProvider.php @@ -24,22 +24,16 @@ final class HelpdeskServiceProvider extends ServiceProvider { /** * Module name. - * - * @var string */ protected string $moduleName = 'Helpdesk'; /** * Lowercase module name. - * - * @var string */ protected string $moduleNameLower = 'helpdesk'; /** * Register module services. - * - * @return void */ public function register(): void { @@ -53,8 +47,6 @@ final class HelpdeskServiceProvider extends ServiceProvider /** * Bootstrap module services. - * - * @return void */ public function boot(): void { @@ -71,8 +63,6 @@ final class HelpdeskServiceProvider extends ServiceProvider /** * Register Livewire components used by the module. - * - * @return void */ protected function registerLivewireComponents(): void { @@ -86,8 +76,6 @@ final class HelpdeskServiceProvider extends ServiceProvider /** * Register policies and gates. - * - * @return void */ protected function registerPolicies(): void { @@ -99,8 +87,6 @@ final class HelpdeskServiceProvider extends ServiceProvider /** * Register helpers. - * - * @return void */ protected function registerHelpers(): void { @@ -111,8 +97,6 @@ final class HelpdeskServiceProvider extends ServiceProvider /** * Dynamically register console commands. - * - * @return void */ protected function registerCommands(): void { @@ -127,7 +111,7 @@ final class HelpdeskServiceProvider extends ServiceProvider } $commands = collect(File::allFiles($commandPath)) - ->map(fn ($file): string => 'Modules\\' . $this->moduleName . '\\Console\\' . $file->getFilenameWithoutExtension()) + ->map(fn ($file): string => 'Modules\\'.$this->moduleName.'\\Console\\'.$file->getFilenameWithoutExtension()) ->filter(fn (string $class): bool => class_exists($class)) ->values() ->all(); @@ -137,44 +121,38 @@ final class HelpdeskServiceProvider extends ServiceProvider /** * Register config publishing. - * - * @return void */ protected function registerConfig(): void { $this->publishes([ - module_path(ModuleInfo::name(), 'Config/config.php') => config_path(ModuleInfo::nameLower() . '.php'), + module_path(ModuleInfo::name(), 'Config/config.php') => config_path(ModuleInfo::nameLower().'.php'), ], 'config'); } /** * Register module views. - * - * @return void */ protected function registerViews(): void { - $viewPath = resource_path('views/modules/' . ModuleInfo::nameLower()); + $viewPath = resource_path('views/modules/'.ModuleInfo::nameLower()); $sourcePath = module_path(ModuleInfo::name(), 'Resources/views'); $this->publishes([ $sourcePath => $viewPath, - ], ['views', ModuleInfo::nameLower() . '-module-views']); + ], ['views', ModuleInfo::nameLower().'-module-views']); $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), ModuleInfo::nameLower()); Blade::componentNamespace('Modules\Helpdesk\View\Components', 'helpdesk'); - Blade::anonymousComponentPath($sourcePath . '/components', 'helpdesk'); + Blade::anonymousComponentPath($sourcePath.'/components', 'helpdesk'); } /** * Register translations. - * - * @return void */ protected function registerTranslations(): void { - $langPath = resource_path('lang/modules/' . ModuleInfo::nameLower()); + $langPath = resource_path('lang/modules/'.ModuleInfo::nameLower()); if (is_dir($langPath)) { $this->loadTranslationsFrom($langPath, ModuleInfo::nameLower()); @@ -195,8 +173,8 @@ final class HelpdeskServiceProvider extends ServiceProvider $paths = []; foreach (Config::get('view.paths') as $path) { - if (is_dir($path . '/modules/' . ModuleInfo::nameLower())) { - $paths[] = $path . '/modules/' . ModuleInfo::nameLower(); + if (is_dir($path.'/modules/'.ModuleInfo::nameLower())) { + $paths[] = $path.'/modules/'.ModuleInfo::nameLower(); } } diff --git a/Modules/Helpdesk/Providers/RouteServiceProvider.php b/Modules/Helpdesk/Providers/RouteServiceProvider.php index bd57dc73..fde52daf 100644 --- a/Modules/Helpdesk/Providers/RouteServiceProvider.php +++ b/Modules/Helpdesk/Providers/RouteServiceProvider.php @@ -12,8 +12,6 @@ final class RouteServiceProvider extends ServiceProvider { /** * Define module routes. - * - * @return void */ public function map(): void { @@ -23,8 +21,6 @@ final class RouteServiceProvider extends ServiceProvider /** * Define web routes. - * - * @return void */ protected function mapWebRoutes(): void { @@ -36,8 +32,6 @@ final class RouteServiceProvider extends ServiceProvider /** * Define API routes. - * - * @return void */ protected function mapApiRoutes(): void { diff --git a/Modules/Helpdesk/Resources/views/livewire/kanban-board.blade.php b/Modules/Helpdesk/Resources/views/livewire/kanban-board.blade.php index 33055a86..3d16ec73 100644 --- a/Modules/Helpdesk/Resources/views/livewire/kanban-board.blade.php +++ b/Modules/Helpdesk/Resources/views/livewire/kanban-board.blade.php @@ -5,7 +5,7 @@

Helpdesk workflow

Kanban board

-

Drag tickets between configurable status boards. Add, rename and order boards from Helpdesk Settings → Statuses.

+

Drag tickets between configured board columns. Boards and columns are managed in Helpdesk Settings.

@@ -23,132 +23,67 @@
@endif -
+
+

Active board

+

{{ $board?->description ?: 'Use settings to configure which statuses appear on each board.' }}

+
- if (! ticketId) { - return; - } + +
- $wire.moveTicket(parseInt(ticketId, 10), parseInt(statusId, 10)); - } - }" - > +
@foreach ($statuses as $status) - @php - $tickets = $ticketsByStatus[$status->id] ?? collect(); - $statusColor = match ($status->color) { - 'sky' => '#0284c7', - 'blue' => '#2563eb', - 'amber' => '#d97706', - 'rose' => '#e11d48', - 'violet' => '#7c3aed', - 'emerald' => '#059669', - 'red' => '#dc2626', - 'green' => '#16a34a', - 'purple' => '#9333ea', - 'indigo' => '#4f46e5', - 'cyan' => '#0891b2', - default => str_starts_with((string) $status->color, '#') ? $status->color : '#64748b', - }; - @endphp + @php($tickets = $ticketsByStatus[$status->id] ?? collect()) -
+
-
- -

{{ $status->name }}

-
+

{{ $status->name }}

{{ $tickets->count() }} tickets

- - @if ($status->is_closed) - Closed - @endif +
-
+
@forelse ($tickets as $ticket) - @php - $priorityColor = match ($ticket->priority?->color) { - 'red' => '#dc2626', - 'amber' => '#d97706', - 'emerald' => '#059669', - 'blue' => '#2563eb', - 'rose' => '#e11d48', - default => '#64748b', - }; - @endphp -
-
- {{ $ticket->reference }} - ⋮⋮ -
-

{{ $ticket->subject }}

+
{{ $ticket->reference }}
+

{{ $ticket->subject }}

@if ($ticket->priority) - {{ $ticket->priority->name }} + + {{ $ticket->priority->name }} + @endif
-
-
Owner: {{ $ticket->owner?->name ?? 'Unknown' }}
-
Agent: {{ $ticket->agent?->name ?? 'Unassigned' }}
+
+
{{ $ticket->owner?->name ?? 'Unknown' }}
+
{{ $ticket->agent?->name ?? 'Unassigned' }}
@if ($ticket->project) -
Project: {{ $ticket->project->title }}
+
{{ $ticket->project->title }}
@endif @if ($ticket->team) -
Team: {{ $ticket->team->name }}
+
{{ $ticket->team->name }}
@endif
@@ -160,12 +95,66 @@
@empty -
- Drop tickets here to move them to {{ $status->name }}. +
+ Drop tickets here for {{ $status->name }}.
@endforelse
@endforeach
+ + @script + + @endscript diff --git a/Modules/Helpdesk/Resources/views/livewire/ticket-create.blade.php b/Modules/Helpdesk/Resources/views/livewire/ticket-create.blade.php index d3583790..0dd94471 100644 --- a/Modules/Helpdesk/Resources/views/livewire/ticket-create.blade.php +++ b/Modules/Helpdesk/Resources/views/livewire/ticket-create.blade.php @@ -6,16 +6,15 @@ ])
- -
-
+
+

Ticket details

-

Capture the request clearly so the support workflow can route and notify correctly.

+

Mandatory fields are marked with *. Rich details and attachments are saved by Livewire.

- + @error('subject')

{{ $message }}

@enderror
@@ -23,7 +22,7 @@ @if($companies->isNotEmpty())
- @foreach ($companies as $company) @@ -34,8 +33,8 @@ @endif
- - @foreach ($priorities as $priority) @@ -46,7 +45,7 @@
- @foreach ($categories as $category) @@ -57,7 +56,7 @@
- @foreach ($projects as $project) @@ -68,7 +67,7 @@
- @foreach ($teams as $team) @@ -84,7 +83,8 @@
- + + @error('body')

{{ $message }}

@enderror
@@ -95,10 +95,12 @@
-
- Cancel - +
+ Cancel +
+ + @include('helpdesk::partials.select2-loader')
diff --git a/Modules/Helpdesk/Resources/views/livewire/ticket-edit.blade.php b/Modules/Helpdesk/Resources/views/livewire/ticket-edit.blade.php deleted file mode 100644 index ed44be7d..00000000 --- a/Modules/Helpdesk/Resources/views/livewire/ticket-edit.blade.php +++ /dev/null @@ -1,116 +0,0 @@ -
- @include('helpdesk::partials.page-header', [ - 'eyebrow' => 'Helpdesk', - 'title' => 'Edit Ticket', - 'subtitle' => 'Update assignment, workflow status, priority, project, team and ticket content.', - ]) - -
-
-
-

Ticket information

-

Changes are applied to the ticket and workflow notifications are triggered where configured.

-
- -
-
- - - @error('subject')

{{ $message }}

@enderror -
- - @if($companies->isNotEmpty()) -
- - - @error('company_id')

{{ $message }}

@enderror -
- @endif - -
- - - @error('agent_id')

{{ $message }}

@enderror -
- -
- - - @error('status_id')

{{ $message }}

@enderror -
- -
- - - @error('priority_id')

{{ $message }}

@enderror -
- -
- - - @error('category_id')

{{ $message }}

@enderror -
- -
- - - @error('project_id')

{{ $message }}

@enderror -
- -
- - - @error('team_id')

{{ $message }}

@enderror -
- -
- - - @error('due_at')

{{ $message }}

@enderror -
- -
- -
-
- -
- Back - -
-
-
-
diff --git a/Modules/Helpdesk/Resources/views/livewire/ticket-show.blade.php b/Modules/Helpdesk/Resources/views/livewire/ticket-show.blade.php index 901762d1..11ce9771 100644 --- a/Modules/Helpdesk/Resources/views/livewire/ticket-show.blade.php +++ b/Modules/Helpdesk/Resources/views/livewire/ticket-show.blade.php @@ -12,9 +12,13 @@

Raised by {{ $ticket->owner?->name ?? 'Unknown user' }} · Assigned to {{ $ticket->agent?->name ?? 'Unassigned' }}

- Back + + Back + @can('update', $ticket) - Edit + + Edit + @endcan
@@ -107,22 +111,12 @@ @can('update', $ticket)

Agent actions

- - - @foreach ($agents as $agent) - - @endforeach - - Update assignment - -
@foreach ($statuses as $status) @endforeach Update status -
@foreach ($priorities as $priority) diff --git a/Modules/Helpdesk/Seeders/HelpdeskDatabaseSeeder.php b/Modules/Helpdesk/Seeders/HelpdeskDatabaseSeeder.php index a102f108..9abe409a 100644 --- a/Modules/Helpdesk/Seeders/HelpdeskDatabaseSeeder.php +++ b/Modules/Helpdesk/Seeders/HelpdeskDatabaseSeeder.php @@ -2,136 +2,16 @@ declare(strict_types=1); -namespace Modules\Helpdesk\Database\Seeders; +namespace Modules\Helpdesk\Seeders; use Illuminate\Database\Seeder; -use Illuminate\Support\Str; -use Modules\Helpdesk\Models\Category; -use Modules\Helpdesk\Models\Priority; -use Modules\Helpdesk\Models\Project; -use Modules\Helpdesk\Models\Status; -use Modules\Helpdesk\Models\Team; -use Modules\Helpdesk\Models\WorkflowTemplate; +use Modules\Helpdesk\Database\Seeders\HelpdeskDatabaseSeeder as DatabaseHelpdeskDatabaseSeeder; final class HelpdeskDatabaseSeeder extends Seeder { - /** - * Seed the Helpdesk module lookup data and default workflow templates. - * - * @return void - */ + /** @return void */ public function run(): void { - $this->seedStatuses(); - $this->seedPriorities(); - $this->seedCategories(); - $this->seedTeamsAndProjects(); - $this->seedWorkflowTemplates(); - } - - /** - * Seed ticket workflow statuses. - * - * @return void - */ - private function seedStatuses(): void - { - foreach ([ - ['name' => 'New', 'slug' => 'new', 'color' => 'sky', 'sort_order' => 5, 'is_closed' => false], - ['name' => 'Open', 'slug' => 'open', 'color' => 'blue', 'sort_order' => 10, 'is_closed' => false], - ['name' => 'In Progress', 'slug' => 'in-progress', 'color' => 'amber', 'sort_order' => 20, 'is_closed' => false], - ['name' => 'Stalled', 'slug' => 'stalled', 'color' => 'rose', 'sort_order' => 30, 'is_closed' => false], - ['name' => 'On-Hold', 'slug' => 'on-hold', 'color' => 'violet', 'sort_order' => 40, 'is_closed' => false], - ['name' => 'Closed', 'slug' => 'closed', 'color' => 'emerald', 'sort_order' => 90, 'is_closed' => true], - ] as $row) { - Status::query()->updateOrCreate(['slug' => $row['slug']], $row); - } - } - - /** - * Seed ticket priorities. - * - * @return void - */ - private function seedPriorities(): void - { - foreach ([ - ['name' => 'High', 'slug' => 'high', 'color' => 'red', 'sort_order' => 10], - ['name' => 'Medium', 'slug' => 'medium', 'color' => 'amber', 'sort_order' => 20], - ['name' => 'Low', 'slug' => 'low', 'color' => 'emerald', 'sort_order' => 30], - ] as $row) { - Priority::query()->updateOrCreate(['slug' => $row['slug']], $row); - } - } - - /** - * Seed ticket categories. - * - * @return void - */ - private function seedCategories(): void - { - foreach ([ - ['name' => 'Development', 'color' => 'indigo', 'description' => 'Software changes, enhancements and development work.'], - ['name' => 'Systems Deployment', 'color' => 'cyan', 'description' => 'Deployment, release, infrastructure and environment requests.'], - ['name' => 'Concepts', 'color' => 'purple', 'description' => 'Ideas, concepts, design discussion and future improvements.'], - ['name' => 'Bug', 'color' => 'rose', 'description' => 'Defects, regressions and incorrect behaviour.'], - ] as $row) { - Category::query()->updateOrCreate( - ['company_id' => null, 'slug' => Str::slug($row['name'])], - $row + ['company_id' => null, 'slug' => Str::slug($row['name'])] - ); - } - } - - /** - * Seed the default support team and a default project. - * - * @return void - */ - private function seedTeamsAndProjects(): void - { - $team = Team::query()->updateOrCreate( - ['company_id' => null, 'slug' => 'support'], - [ - 'company_id' => null, - 'name' => 'Support', - 'slug' => 'support', - 'color' => 'blue', - 'description' => 'Default support team for triage, ownership and ticket routing.', - ] - ); - - Project::query()->updateOrCreate( - ['company_id' => null, 'slug' => 'support-desk'], - [ - 'company_id' => null, - 'team_id' => $team->id, - 'title' => 'Support Desk', - 'slug' => 'support-desk', - 'color' => 'indigo', - 'description' => 'Default project for operational helpdesk tickets.', - ] - ); - } - - /** - * Seed default professional workflow email templates. - * - * @return void - */ - private function seedWorkflowTemplates(): void - { - foreach ([ - ['name' => 'Ticket raised requester notice', 'event' => 'ticket.created', 'subject' => 'Ticket {{ ticket.reference }} has been raised', 'html_body' => '

Hello {{ requester.name }},

Your ticket {{ ticket.reference }} has been raised successfully.

Subject: {{ ticket.subject }}

Priority: {{ ticket.priority }}

', 'to_role' => 'requester'], - ['name' => 'Ticket updated requester notice', 'event' => 'ticket.updated', 'subject' => 'Ticket {{ ticket.reference }} has been updated', 'html_body' => '

Hello {{ requester.name }},

Your ticket {{ ticket.reference }} has been updated.

Status: {{ ticket.status }}

Priority: {{ ticket.priority }}

', 'to_role' => 'requester'], - ['name' => 'Ticket response requester notice', 'event' => 'ticket.commented', 'subject' => 'New response on ticket {{ ticket.reference }}', 'html_body' => '

Hello {{ requester.name }},

A new response has been added to {{ ticket.reference }}.

Subject: {{ ticket.subject }}

', 'to_role' => 'requester'], - ['name' => 'Ticket closed requester notice', 'event' => 'ticket.closed', 'subject' => 'Ticket {{ ticket.reference }} has been closed', 'html_body' => '

Hello {{ requester.name }},

Your ticket {{ ticket.reference }} has been closed.

Thank you for using the support desk.

', 'to_role' => 'requester'], - ] as $template) { - WorkflowTemplate::query()->updateOrCreate( - ['name' => $template['name'], 'event' => $template['event']], - $template + ['text_body' => null, 'cc' => null, 'bcc' => null, 'is_active' => true] - ); - } + $this->call(DatabaseHelpdeskDatabaseSeeder::class); } } diff --git a/Modules/Helpdesk/Services/AgentAssignmentService.php b/Modules/Helpdesk/Services/AgentAssignmentService.php index f8cff963..decc65d5 100644 --- a/Modules/Helpdesk/Services/AgentAssignmentService.php +++ b/Modules/Helpdesk/Services/AgentAssignmentService.php @@ -13,9 +13,6 @@ final class AgentAssignmentService { /** * Select the least-loaded available agent for a category. - * - * @param int|null $categoryId - * @return int|null */ public function selectAgentId(?int $categoryId): ?int { diff --git a/Modules/Helpdesk/Services/AttachmentService.php b/Modules/Helpdesk/Services/AttachmentService.php index d1eddff6..ddfc72b6 100644 --- a/Modules/Helpdesk/Services/AttachmentService.php +++ b/Modules/Helpdesk/Services/AttachmentService.php @@ -15,17 +15,13 @@ final class AttachmentService /** * Store uploaded files against a ticket and optional comment. * - * @param Ticket $ticket - * @param array $files - * @param int $userId - * @param Comment|null $comment - * @return void + * @param array $files */ public function storeMany(Ticket $ticket, array $files, int $userId, ?Comment $comment = null): void { foreach ($files as $file) { $disk = (string) config('helpdesk.disk'); - $path = $file->store('tickets/' . $ticket->id, $disk); + $path = $file->store('tickets/'.$ticket->id, $disk); Attachment::query()->create([ 'ticket_id' => $ticket->id, @@ -42,9 +38,6 @@ final class AttachmentService /** * Delete a stored attachment and its backing file. - * - * @param Attachment $attachment - * @return void */ public function delete(Attachment $attachment): void { diff --git a/Modules/Helpdesk/Services/TicketReferenceService.php b/Modules/Helpdesk/Services/TicketReferenceService.php index 7f10045b..499045ef 100644 --- a/Modules/Helpdesk/Services/TicketReferenceService.php +++ b/Modules/Helpdesk/Services/TicketReferenceService.php @@ -10,20 +10,18 @@ final class TicketReferenceService { /** * Build the next human-readable ticket reference. - * - * @return string */ public function next(): string { $year = now()->format('Y'); - $prefix = 'HD-' . $year . '-'; + $prefix = 'HD-'.$year.'-'; $last = Ticket::query() - ->where('reference', 'like', $prefix . '%') + ->where('reference', 'like', $prefix.'%') ->latest('id') ->value('reference'); $next = $last ? ((int) substr((string) $last, -5)) + 1 : 1; - return $prefix . str_pad((string) $next, 5, '0', STR_PAD_LEFT); + return $prefix.str_pad((string) $next, 5, '0', STR_PAD_LEFT); } } diff --git a/Modules/Helpdesk/Services/TicketService.php b/Modules/Helpdesk/Services/TicketService.php index cc3c4118..485fc9ce 100644 --- a/Modules/Helpdesk/Services/TicketService.php +++ b/Modules/Helpdesk/Services/TicketService.php @@ -29,19 +29,17 @@ final class TicketService public function create(User $user, array $data, array $files = []): Ticket { return DB::transaction(function () use ($user, $data, $files): Ticket { - $status = Status::query() - ->where('slug', config('helpdesk.default_status_slug', 'new')) - ->first(); + $defaultStatusSlug = (string) config('helpdesk.default_status_slug', 'new'); + $status = Status::query()->where('slug', $defaultStatusSlug)->first(); if (! $status) { $status = Status::query()->create([ 'name' => 'New', - 'slug' => config('helpdesk.default_status_slug', 'new'), + 'slug' => $defaultStatusSlug, 'color' => 'sky', - 'sort_order' => 5, + 'sort_order' => 1, 'is_closed' => false, ]); - } /** @var Ticket $ticket */ diff --git a/Modules/Helpdesk/Services/WorkflowNotificationService.php b/Modules/Helpdesk/Services/WorkflowNotificationService.php index 710cc9b4..3b750beb 100644 --- a/Modules/Helpdesk/Services/WorkflowNotificationService.php +++ b/Modules/Helpdesk/Services/WorkflowNotificationService.php @@ -16,11 +16,6 @@ final class WorkflowNotificationService { /** * Send all active workflow messages for the supplied ticket event. - * - * @param Ticket $ticket - * @param string $event - * @param User|null $actor - * @return void */ public function dispatch(Ticket $ticket, string $event, ?User $actor = null): void { @@ -35,6 +30,7 @@ final class WorkflowNotificationService if ($recipient === null || blank($recipient->email ?? null)) { $this->log($template, $ticket, $event, null, 'skipped', 'No recipient email was available.'); + return; } @@ -63,7 +59,6 @@ final class WorkflowNotificationService }); } - /** @return User|null */ private function recipient(string $role, Ticket $ticket, ?User $actor): ?User { return match ($role) { @@ -95,15 +90,15 @@ final class WorkflowNotificationService private function wrapHtml(string $body, Ticket $ticket): string { return '
' - . '
' - . '
' - . '
Helpdesk notification
' - . '

' . e($ticket->reference) . '

' - . '

' . e($ticket->subject) . '

' - . '
' - . $body - . '

Open ticket

' - . '
'; + .'
' + .'
' + .'
Helpdesk notification
' + .'

'.e($ticket->reference).'

' + .'

'.e($ticket->subject).'

' + .'
' + .$body + .'

Open ticket

' + .'
'; } private function log(WorkflowTemplate $template, Ticket $ticket, string $event, ?string $recipient, string $status, ?string $error = null, ?string $subject = null): void diff --git a/Modules/Helpdesk/Support/Color.php b/Modules/Helpdesk/Support/Color.php new file mode 100644 index 00000000..95883c0c --- /dev/null +++ b/Modules/Helpdesk/Support/Color.php @@ -0,0 +1,24 @@ + '#e11d48', + 'amber', 'yellow' => '#d97706', + 'emerald', 'green' => '#059669', + 'blue' => '#2563eb', + 'sky', 'cyan' => '#0284c7', + 'indigo' => '#4f46e5', + 'violet', 'purple' => '#7c3aed', + 'slate' => '#334155', + 'zinc', null, '' => '#52525b', + default => str_starts_with((string) $color, '#') ? (string) $color : '#52525b', + }; + } +} diff --git a/Modules/Helpdesk/Tests/Browser/HelpdeskNavigationBrowserTest.php b/Modules/Helpdesk/Tests/Browser/HelpdeskNavigationBrowserTest.php index ef9be955..4f9b0c4f 100644 --- a/Modules/Helpdesk/Tests/Browser/HelpdeskNavigationBrowserTest.php +++ b/Modules/Helpdesk/Tests/Browser/HelpdeskNavigationBrowserTest.php @@ -11,8 +11,8 @@ use Tests\DuskTestCase; final class HelpdeskNavigationBrowserTest extends DuskTestCase { - use DatabaseMigrations; use BuildsHelpdeskFixtures; + use DatabaseMigrations; public function test_helpdesk_dashboard_and_main_pages_render_with_professional_headers(): void { diff --git a/Modules/Helpdesk/Tests/Browser/HelpdeskSettingsBrowserTest.php b/Modules/Helpdesk/Tests/Browser/HelpdeskSettingsBrowserTest.php index 1ce9de41..79840107 100644 --- a/Modules/Helpdesk/Tests/Browser/HelpdeskSettingsBrowserTest.php +++ b/Modules/Helpdesk/Tests/Browser/HelpdeskSettingsBrowserTest.php @@ -11,8 +11,8 @@ use Tests\DuskTestCase; final class HelpdeskSettingsBrowserTest extends DuskTestCase { - use DatabaseMigrations; use BuildsHelpdeskFixtures; + use DatabaseMigrations; public function test_settings_tabs_expose_lookup_git_and_workflow_setup_areas(): void { diff --git a/Modules/Helpdesk/Tests/Browser/HelpdeskTicketBrowserTest.php b/Modules/Helpdesk/Tests/Browser/HelpdeskTicketBrowserTest.php index 778fa650..1f94eb98 100644 --- a/Modules/Helpdesk/Tests/Browser/HelpdeskTicketBrowserTest.php +++ b/Modules/Helpdesk/Tests/Browser/HelpdeskTicketBrowserTest.php @@ -11,8 +11,8 @@ use Tests\DuskTestCase; final class HelpdeskTicketBrowserTest extends DuskTestCase { - use DatabaseMigrations; use BuildsHelpdeskFixtures; + use DatabaseMigrations; public function test_user_can_create_and_view_ticket_in_browser(): void { diff --git a/Modules/Helpdesk/Tests/Concerns/BuildsHelpdeskFixtures.php b/Modules/Helpdesk/Tests/Concerns/BuildsHelpdeskFixtures.php index baabb7a5..d7de71f7 100644 --- a/Modules/Helpdesk/Tests/Concerns/BuildsHelpdeskFixtures.php +++ b/Modules/Helpdesk/Tests/Concerns/BuildsHelpdeskFixtures.php @@ -133,7 +133,7 @@ trait BuildsHelpdeskFixtures unset($attributes['owner'], $attributes['agent']); return Ticket::query()->create(array_merge([ - 'reference' => 'HD-' . now()->format('Y') . '-' . str_pad((string) random_int(1, 99999), 5, '0', STR_PAD_LEFT), + 'reference' => 'HD-'.now()->format('Y').'-'.str_pad((string) random_int(1, 99999), 5, '0', STR_PAD_LEFT), 'user_id' => $owner->id, 'agent_id' => $agent?->id, 'status_id' => $this->status()->id, diff --git a/Modules/Helpdesk/Tests/Feature/AgentAssignmentTest.php b/Modules/Helpdesk/Tests/Feature/AgentAssignmentTest.php index 8f33dfa7..4ac0bd23 100644 --- a/Modules/Helpdesk/Tests/Feature/AgentAssignmentTest.php +++ b/Modules/Helpdesk/Tests/Feature/AgentAssignmentTest.php @@ -11,8 +11,8 @@ use Tests\TestCase; final class AgentAssignmentTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_assignment_selects_least_loaded_agent(): void { diff --git a/Modules/Helpdesk/Tests/Feature/GitAndAttachmentTest.php b/Modules/Helpdesk/Tests/Feature/GitAndAttachmentTest.php index 53f41e5e..81e80d3a 100644 --- a/Modules/Helpdesk/Tests/Feature/GitAndAttachmentTest.php +++ b/Modules/Helpdesk/Tests/Feature/GitAndAttachmentTest.php @@ -15,8 +15,8 @@ use Tests\TestCase; final class GitAndAttachmentTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_git_commit_can_be_tracked_against_repository_and_ticket(): void { @@ -32,7 +32,7 @@ final class GitAndAttachmentTest extends TestCase 'branch' => 'develop', 'author_name' => 'Mark Gregory', 'author_email' => 'mark@example.com', - 'message' => 'Resolve ' . $ticket->reference . ' ticket save redirect', + 'message' => 'Resolve '.$ticket->reference.' ticket save redirect', 'url' => 'https://example.com/commit/b', 'committed_at' => now(), ]); diff --git a/Modules/Helpdesk/Tests/Feature/HelpdeskRouteTest.php b/Modules/Helpdesk/Tests/Feature/HelpdeskRouteTest.php index 7a23615c..8476d561 100644 --- a/Modules/Helpdesk/Tests/Feature/HelpdeskRouteTest.php +++ b/Modules/Helpdesk/Tests/Feature/HelpdeskRouteTest.php @@ -10,8 +10,8 @@ use Tests\TestCase; final class HelpdeskRouteTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_authenticated_user_can_open_dashboard_tickets_create_and_settings_pages(): void { diff --git a/Modules/Helpdesk/Tests/Feature/SettingsCrudTest.php b/Modules/Helpdesk/Tests/Feature/SettingsCrudTest.php index 761e9712..3311229f 100644 --- a/Modules/Helpdesk/Tests/Feature/SettingsCrudTest.php +++ b/Modules/Helpdesk/Tests/Feature/SettingsCrudTest.php @@ -19,8 +19,8 @@ use Tests\TestCase; final class SettingsCrudTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_settings_manager_creates_updates_and_deletes_statuses(): void { diff --git a/Modules/Helpdesk/Tests/Feature/TicketConversationTest.php b/Modules/Helpdesk/Tests/Feature/TicketConversationTest.php index 3eb5cb8b..b5a8cf1d 100644 --- a/Modules/Helpdesk/Tests/Feature/TicketConversationTest.php +++ b/Modules/Helpdesk/Tests/Feature/TicketConversationTest.php @@ -14,8 +14,8 @@ use Tests\TestCase; final class TicketConversationTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_owner_can_add_public_response_to_ticket(): void { diff --git a/Modules/Helpdesk/Tests/Feature/TicketCrudTest.php b/Modules/Helpdesk/Tests/Feature/TicketCrudTest.php index 7b6c4dd4..554d41af 100644 --- a/Modules/Helpdesk/Tests/Feature/TicketCrudTest.php +++ b/Modules/Helpdesk/Tests/Feature/TicketCrudTest.php @@ -14,8 +14,8 @@ use Tests\TestCase; final class TicketCrudTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_user_can_create_ticket_with_priority_category_team_and_project(): void { @@ -125,7 +125,7 @@ final class TicketCrudTest extends TestCase $ticket = Ticket::query()->where('subject', 'Reference check')->firstOrFail(); - self::assertStringStartsWith('HD-' . now()->format('Y') . '-', $ticket->reference); + self::assertStringStartsWith('HD-'.now()->format('Y').'-', $ticket->reference); self::assertNotNull($ticket->last_activity_at); } } diff --git a/Modules/Helpdesk/Tests/Feature/TicketPolicyTest.php b/Modules/Helpdesk/Tests/Feature/TicketPolicyTest.php index b07a723d..9e38a5a5 100644 --- a/Modules/Helpdesk/Tests/Feature/TicketPolicyTest.php +++ b/Modules/Helpdesk/Tests/Feature/TicketPolicyTest.php @@ -11,8 +11,8 @@ use Tests\TestCase; final class TicketPolicyTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_owner_can_view_and_comment_but_cannot_update_ticket(): void { diff --git a/Modules/Helpdesk/Tests/Feature/WorkflowNotificationTest.php b/Modules/Helpdesk/Tests/Feature/WorkflowNotificationTest.php index 30dce636..1b3e5ef9 100644 --- a/Modules/Helpdesk/Tests/Feature/WorkflowNotificationTest.php +++ b/Modules/Helpdesk/Tests/Feature/WorkflowNotificationTest.php @@ -13,8 +13,8 @@ use Tests\TestCase; final class WorkflowNotificationTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_workflow_dispatch_sends_active_template_and_logs_it(): void { @@ -50,7 +50,7 @@ final class WorkflowNotificationTest extends TestCase 'event' => 'ticket.created', 'recipient' => 'requester@example.com', 'status' => 'sent', - 'subject' => 'Ticket ' . $ticket->reference . ' raised for Requester Name', + 'subject' => 'Ticket '.$ticket->reference.' raised for Requester Name', ]); } diff --git a/Modules/Helpdesk/Tests/Unit/ModelRelationshipTest.php b/Modules/Helpdesk/Tests/Unit/ModelRelationshipTest.php index f229325b..9672bd76 100644 --- a/Modules/Helpdesk/Tests/Unit/ModelRelationshipTest.php +++ b/Modules/Helpdesk/Tests/Unit/ModelRelationshipTest.php @@ -12,8 +12,8 @@ use Tests\TestCase; final class ModelRelationshipTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_ticket_loads_company_project_team_category_priority_status_and_git_commits(): void { diff --git a/Modules/Helpdesk/Tests/Unit/TicketReferenceServiceTest.php b/Modules/Helpdesk/Tests/Unit/TicketReferenceServiceTest.php index 2199d2c0..372921e3 100644 --- a/Modules/Helpdesk/Tests/Unit/TicketReferenceServiceTest.php +++ b/Modules/Helpdesk/Tests/Unit/TicketReferenceServiceTest.php @@ -11,22 +11,22 @@ use Tests\TestCase; final class TicketReferenceServiceTest extends TestCase { - use RefreshDatabase; use BuildsHelpdeskFixtures; + use RefreshDatabase; public function test_it_generates_the_first_reference_for_the_current_year(): void { $reference = app(TicketReferenceService::class)->next(); - self::assertSame('HD-' . now()->format('Y') . '-00001', $reference); + self::assertSame('HD-'.now()->format('Y').'-00001', $reference); } public function test_it_generates_the_next_reference_after_existing_tickets(): void { - $this->ticket(['reference' => 'HD-' . now()->format('Y') . '-00041']); + $this->ticket(['reference' => 'HD-'.now()->format('Y').'-00041']); $reference = app(TicketReferenceService::class)->next(); - self::assertSame('HD-' . now()->format('Y') . '-00042', $reference); + self::assertSame('HD-'.now()->format('Y').'-00042', $reference); } } diff --git a/Modules/Helpdesk/View/Components/LookupTable.php b/Modules/Helpdesk/View/Components/LookupTable.php index 21702303..9e4d1790 100644 --- a/Modules/Helpdesk/View/Components/LookupTable.php +++ b/Modules/Helpdesk/View/Components/LookupTable.php @@ -13,10 +13,8 @@ final class LookupTable extends Component public readonly mixed $items, public readonly string $edit, public readonly string $delete, - ) { - } + ) {} - /** @return View */ public function render(): View { return view('helpdesk::components.lookup-table'); diff --git a/Modules/Helpdesk/View/Components/ProjectTable.php b/Modules/Helpdesk/View/Components/ProjectTable.php index 45095716..078be00e 100644 --- a/Modules/Helpdesk/View/Components/ProjectTable.php +++ b/Modules/Helpdesk/View/Components/ProjectTable.php @@ -10,5 +10,9 @@ use Illuminate\View\Component; final class ProjectTable extends Component { public function __construct(public readonly mixed $items) {} - public function render(): View { return view('helpdesk::components.project-table'); } + + public function render(): View + { + return view('helpdesk::components.project-table'); + } } diff --git a/Modules/Helpdesk/View/Components/SettingsSection.php b/Modules/Helpdesk/View/Components/SettingsSection.php index 50efad20..8276ef81 100644 --- a/Modules/Helpdesk/View/Components/SettingsSection.php +++ b/Modules/Helpdesk/View/Components/SettingsSection.php @@ -12,10 +12,8 @@ final class SettingsSection extends Component public function __construct( public readonly string $title, public readonly string $description, - ) { - } + ) {} - /** @return View */ public function render(): View { return view('helpdesk::components.settings-section'); diff --git a/Modules/Helpdesk/View/Components/TeamTable.php b/Modules/Helpdesk/View/Components/TeamTable.php index 57c53f61..8c8e71cb 100644 --- a/Modules/Helpdesk/View/Components/TeamTable.php +++ b/Modules/Helpdesk/View/Components/TeamTable.php @@ -10,5 +10,9 @@ use Illuminate\View\Component; final class TeamTable extends Component { public function __construct(public readonly mixed $items) {} - public function render(): View { return view('helpdesk::components.team-table'); } + + public function render(): View + { + return view('helpdesk::components.team-table'); + } } diff --git a/Modules/Helpdesk/changelog.yaml b/Modules/Helpdesk/changelog.yaml index ee666ee7..c6b5da50 100755 --- a/Modules/Helpdesk/changelog.yaml +++ b/Modules/Helpdesk/changelog.yaml @@ -43,23 +43,13 @@ versions: - Corrected the seeder namespace to Modules\\Helpdesk\\Database\\Seeders for PSR-4 module autoloading. - Kept module.json version in sync with changelog.yaml. - "1.0.7": + "1.0.9": changed: - - Added ticket edit screen with assignment, status, priority, category, project, team, due date and body editing. - - Added green Edit and blue Back actions on the ticket detail page. - - Added ticket assignment update support directly from the ticket detail page. - - Changed default created ticket status from Open to New. - - Rebuilt the Kanban board as a horizontal draggable workflow board using native drag and drop. - - Added a Configure boards action that links Kanban users to the existing configurable Statuses setup. - - Kept module.json version in sync with changelog.yaml. - - - "1.0.8": - changed: - - Fixed Helpdesk module view registration so helpdesk::livewire views resolve from the module folder reliably. - - Restored the RouteServiceProvider file expected by the module service provider. - - Rebuilt the performance indexes migration to skip indexes already created by earlier Helpdesk migrations. - - Kept ticket creation as a pure Livewire form and defaulted newly created tickets to the New status. - - Made the Kanban board resilient on empty installs by ensuring default status boards exist. - - Improved Kanban board drag/drop styling and colour rendering while preserving configurable statuses. + - Added editable tickets with assignment, status, priority, category, team, project, due date and details updates. + - Changed the default ticket creation status to New. + - Added configurable Kanban boards with status-column assignment and a default Standard Support board. + - Rebuilt the Kanban board into a professional drag-and-drop board with SortableJS fallback loading. + - Added blue Back and green Edit actions on ticket view pages. + - Improved Helpdesk settings styling, blue edit actions, and a dedicated Kanban Boards CRUD section. + - Marked mandatory ticket fields and enhanced create/edit ticket forms with Select2-capable dropdowns. - Kept module.json version in sync with changelog.yaml. diff --git a/Modules/Helpdesk/module.json b/Modules/Helpdesk/module.json index 082adc52..655aef1f 100644 --- a/Modules/Helpdesk/module.json +++ b/Modules/Helpdesk/module.json @@ -13,5 +13,5 @@ "Modules\\Helpdesk\\Providers\\HelpdeskServiceProvider" ], "files": [], - "version": "1.0.8" + "version": "1.0.9" } diff --git a/Modules/InternalApi/Providers/InternalApiServiceProvider.php b/Modules/InternalApi/Providers/InternalApiServiceProvider.php index 88c5c793..612d2174 100644 --- a/Modules/InternalApi/Providers/InternalApiServiceProvider.php +++ b/Modules/InternalApi/Providers/InternalApiServiceProvider.php @@ -13,7 +13,7 @@ class InternalApiServiceProvider extends ServiceProvider */ public function boot(): void { - Route::middleware('api')->prefix('api/internal')->group(__DIR__ . '/../routes/api.php'); + Route::middleware('api')->prefix('api/internal')->group(__DIR__.'/../routes/api.php'); app('router')->aliasMiddleware('internal.signed', VerifyInternalApiSignature::class); } } diff --git a/Modules/InternalApi/app/Http/Middleware/VerifyInternalApiSignature.php b/Modules/InternalApi/app/Http/Middleware/VerifyInternalApiSignature.php index 2646d6a8..beec139d 100644 --- a/Modules/InternalApi/app/Http/Middleware/VerifyInternalApiSignature.php +++ b/Modules/InternalApi/app/Http/Middleware/VerifyInternalApiSignature.php @@ -23,9 +23,9 @@ class VerifyInternalApiSignature $body = $request->getContent(); $payloads = array_unique([ - $timestamp . '.' . $body, - $timestamp . '.', - $timestamp . '.[]', + $timestamp.'.'.$body, + $timestamp.'.', + $timestamp.'.[]', ]); foreach ($payloads as $payload) { diff --git a/Modules/InternalApi/tests/Feature/InternalApiSignatureTest.php b/Modules/InternalApi/tests/Feature/InternalApiSignatureTest.php index 6afa4ae9..9e642a2d 100644 --- a/Modules/InternalApi/tests/Feature/InternalApiSignatureTest.php +++ b/Modules/InternalApi/tests/Feature/InternalApiSignatureTest.php @@ -19,7 +19,7 @@ class InternalApiSignatureTest extends TestCase config(['platform.internal_api_key' => 'testing-secret']); $timestamp = now()->toIso8601String(); $body = ''; - $signature = hash_hmac('sha256', $timestamp . '.' . $body, 'testing-secret'); + $signature = hash_hmac('sha256', $timestamp.'.'.$body, 'testing-secret'); $this->withHeaders([ 'X-WMS-Timestamp' => $timestamp, diff --git a/Modules/InventoryManagement/Providers/InventoryManagementServiceProvider.php b/Modules/InventoryManagement/Providers/InventoryManagementServiceProvider.php index c5968f60..2a074f94 100644 --- a/Modules/InventoryManagement/Providers/InventoryManagementServiceProvider.php +++ b/Modules/InventoryManagement/Providers/InventoryManagementServiceProvider.php @@ -11,8 +11,8 @@ class InventoryManagementServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'inventorymanagement'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'inventorymanagement'); } /** diff --git a/Modules/M3Integration/Providers/M3IntegrationServiceProvider.php b/Modules/M3Integration/Providers/M3IntegrationServiceProvider.php index 4ede5297..cb5733ad 100644 --- a/Modules/M3Integration/Providers/M3IntegrationServiceProvider.php +++ b/Modules/M3Integration/Providers/M3IntegrationServiceProvider.php @@ -11,8 +11,8 @@ class M3IntegrationServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'm3integration'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'm3integration'); } /** diff --git a/Modules/Platform/Providers/PlatformServiceProvider.php b/Modules/Platform/Providers/PlatformServiceProvider.php index 4b6e7271..c6c97217 100644 --- a/Modules/Platform/Providers/PlatformServiceProvider.php +++ b/Modules/Platform/Providers/PlatformServiceProvider.php @@ -2,7 +2,6 @@ namespace Modules\Platform\Providers; -use Illuminate\Support\Facades\Blade; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; use Modules\Platform\app\Http\Middleware\EnsureLicensedTenant; @@ -16,7 +15,7 @@ class PlatformServiceProvider extends ServiceProvider */ public function register(): void { - $this->mergeConfigFrom(__DIR__ . '/../config/platform.php', 'platform'); + $this->mergeConfigFrom(__DIR__.'/../config/platform.php', 'platform'); } /** @@ -24,10 +23,10 @@ class PlatformServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadViewsFrom(__DIR__ . '/../resources/views', 'platform'); - $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); + $this->loadViewsFrom(__DIR__.'/../resources/views', 'platform'); + $this->loadMigrationsFrom(__DIR__.'/../database/migrations'); - Route::middleware('web')->group(__DIR__ . '/../routes/web.php'); + Route::middleware('web')->group(__DIR__.'/../routes/web.php'); app('router')->aliasMiddleware('tenant.assigned', EnsureTenantAssigned::class); app('router')->aliasMiddleware('tenant.licensed', EnsureLicensedTenant::class); diff --git a/Modules/Platform/app/Http/Controllers/PlatformDashboardController.php b/Modules/Platform/app/Http/Controllers/PlatformDashboardController.php index 9e3fd184..8b2c91b0 100644 --- a/Modules/Platform/app/Http/Controllers/PlatformDashboardController.php +++ b/Modules/Platform/app/Http/Controllers/PlatformDashboardController.php @@ -72,7 +72,7 @@ class PlatformDashboardController extends Controller /** * Build the company usage chart series. * - * @param Collection $companies + * @param Collection $companies * @return array}> */ private function companyUsageChartSeries(Collection $companies): array diff --git a/Modules/Platform/app/Http/Controllers/PlatformPriceController.php b/Modules/Platform/app/Http/Controllers/PlatformPriceController.php index 8c365551..18d0a5ed 100644 --- a/Modules/Platform/app/Http/Controllers/PlatformPriceController.php +++ b/Modules/Platform/app/Http/Controllers/PlatformPriceController.php @@ -11,7 +11,6 @@ use Modules\Platform\app\Models\PlatformPrice; class PlatformPriceController extends Controller { - /** * Display the customer-facing platform pricing cards. */ @@ -98,7 +97,7 @@ class PlatformPriceController extends Controller private function validatedPriceData(Request $request, ?PlatformPrice $price = null): array { $data = $request->validate([ - 'code' => ['nullable', 'string', 'max:40', 'unique:platform_prices,code,' . ($price?->id ?? 'NULL')], + 'code' => ['nullable', 'string', 'max:40', 'unique:platform_prices,code,'.($price?->id ?? 'NULL')], 'name' => ['required', 'string', 'max:255'], 'strapline' => ['nullable', 'string', 'max:255'], 'description' => ['nullable', 'string', 'max:2000'], diff --git a/Modules/Platform/app/Models/Company.php b/Modules/Platform/app/Models/Company.php index e263e19d..a05711f8 100644 --- a/Modules/Platform/app/Models/Company.php +++ b/Modules/Platform/app/Models/Company.php @@ -2,6 +2,7 @@ namespace Modules\Platform\app\Models; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -35,7 +36,7 @@ class Company extends Model public function users(): HasMany { - return $this->hasMany(\App\Models\User::class); + return $this->hasMany(User::class); } public function licenseKeys(): HasMany diff --git a/Modules/Platform/app/Models/LicenseKey.php b/Modules/Platform/app/Models/LicenseKey.php index fc1ce73a..d1155bf9 100644 --- a/Modules/Platform/app/Models/LicenseKey.php +++ b/Modules/Platform/app/Models/LicenseKey.php @@ -28,7 +28,7 @@ class LicenseKey extends Model public static function issueFor(Company $company, string $label, string $plan = 'standard', int $maxUsers = 10): string { - $plainKey = 'WMS-' . Str::upper(Str::random(32)); + $plainKey = 'WMS-'.Str::upper(Str::random(32)); self::create([ 'company_id' => $company->id, diff --git a/Modules/Platform/app/Models/PlatformPrice.php b/Modules/Platform/app/Models/PlatformPrice.php index b9e75206..bab7905d 100644 --- a/Modules/Platform/app/Models/PlatformPrice.php +++ b/Modules/Platform/app/Models/PlatformPrice.php @@ -48,7 +48,7 @@ class PlatformPrice extends Model 'gbp' => '£', 'eur' => '€', 'usd' => '$', - default => strtoupper($this->currency) . ' ', + default => strtoupper($this->currency).' ', }; } @@ -61,7 +61,7 @@ class PlatformPrice extends Model return '—'; } - return $this->currencySymbol() . number_format($amount / 100, 2); + return $this->currencySymbol().number_format($amount / 100, 2); } /** diff --git a/Modules/Platform/database/migrations/2026_06_11_093500_create_platform_prices_table.php b/Modules/Platform/database/migrations/2026_06_11_093500_create_platform_prices_table.php index 6631d18b..c4307f00 100644 --- a/Modules/Platform/database/migrations/2026_06_11_093500_create_platform_prices_table.php +++ b/Modules/Platform/database/migrations/2026_06_11_093500_create_platform_prices_table.php @@ -2,7 +2,6 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; -use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; return new class extends Migration diff --git a/Modules/Platform/routes/web.php b/Modules/Platform/routes/web.php index d272f04c..48356b83 100644 --- a/Modules/Platform/routes/web.php +++ b/Modules/Platform/routes/web.php @@ -8,7 +8,6 @@ use Modules\Platform\app\Http\Controllers\PlatformDashboardController; use Modules\Platform\app\Http\Controllers\PlatformPriceController; use Modules\Platform\app\Http\Controllers\StripeWebhookController; - Route::middleware(['auth', 'verified', 'tenant.assigned']) ->prefix('platform') ->name('platform.') diff --git a/Modules/Pricing/Config/config.php b/Modules/Pricing/Config/config.php index 236bae28..8d036319 100644 --- a/Modules/Pricing/Config/config.php +++ b/Modules/Pricing/Config/config.php @@ -2,7 +2,6 @@ return [ 'name' => 'Pricing', - 'features' => - [ - ], + 'features' => [ + ], ]; diff --git a/Modules/Pricing/Database/Seeders/PricingDatabaseSeeder.php b/Modules/Pricing/Database/Seeders/PricingDatabaseSeeder.php index 81112111..6d10b400 100644 --- a/Modules/Pricing/Database/Seeders/PricingDatabaseSeeder.php +++ b/Modules/Pricing/Database/Seeders/PricingDatabaseSeeder.php @@ -3,7 +3,6 @@ namespace Modules\Pricing\Database\Seeders; use Illuminate\Database\Seeder; -use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; class PricingDatabaseSeeder extends Seeder diff --git a/Modules/Pricing/Helpers/Helper.php b/Modules/Pricing/Helpers/Helper.php index 7870ce08..8861dbb3 100644 --- a/Modules/Pricing/Helpers/Helper.php +++ b/Modules/Pricing/Helpers/Helper.php @@ -1,4 +1,5 @@ registerTranslations(); $this->registerConfig(); @@ -48,8 +36,6 @@ class PricingServiceProvider extends ServiceProvider /** * Register the service provider. - * - * @return void */ public function register(): void { @@ -58,8 +44,6 @@ class PricingServiceProvider extends ServiceProvider /** * Register the helpers. - * - * @return void */ protected function registerHelpers(): void { @@ -68,71 +52,64 @@ class PricingServiceProvider extends ServiceProvider } } - /** + /** * Dynamically Register Commands. - * - * @return void */ public function registerCommands(): void - { - if (!$this->app->runningInConsole()) { - return; - } - $commandPath = __DIR__ . '/../Console'; - $commands = collect(File::allFiles($commandPath)) - ->map(function ($file) { - $class = 'Modules\\' . $this->moduleName . '\\Console\\' . $file->getFilenameWithoutExtension(); - return $class; - }) - ->filter(function ($class) { - return class_exists($class); - }) - ->values() - ->all(); - $this->commands($commands); + { + if (! $this->app->runningInConsole()) { + return; } + $commandPath = __DIR__.'/../Console'; + $commands = collect(File::allFiles($commandPath)) + ->map(function ($file) { + $class = 'Modules\\'.$this->moduleName.'\\Console\\'.$file->getFilenameWithoutExtension(); + + return $class; + }) + ->filter(function ($class) { + return class_exists($class); + }) + ->values() + ->all(); + $this->commands($commands); + } /** * Register config. - * - * @return void */ protected function registerConfig(): void { $this->publishes([ - module_path(ModuleInfo::name(), 'Config/config.php') => config_path( ModuleInfo::nameLower(). '.php'), + module_path(ModuleInfo::name(), 'Config/config.php') => config_path(ModuleInfo::nameLower().'.php'), ], 'config'); $this->mergeConfigFrom( - module_path(ModuleInfo::name(), 'Config/config.php'), ModuleInfo::nameLower() + module_path(ModuleInfo::name(), 'Config/config.php'), ModuleInfo::nameLower() ); } /** * Register views. - * - * @return void */ public function registerViews(): void { - $viewPath = resource_path('views/modules/' . ModuleInfo::nameLower()); + $viewPath = resource_path('views/modules/'.ModuleInfo::nameLower()); $sourcePath = module_path(ModuleInfo::name(), 'Resources/views'); $this->publishes([ - $sourcePath => $viewPath - ], ['views', ModuleInfo::nameLower() . '-module-views']); - $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), ModuleInfo::nameLower()); + $sourcePath => $viewPath, + ], ['views', ModuleInfo::nameLower().'-module-views']); + $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), ModuleInfo::nameLower()); } /** * Register translations. - * - * @return void */ public function registerTranslations(): void { - $langPath = resource_path('lang/modules/' . ModuleInfo::nameLower()); + $langPath = resource_path('lang/modules/'.ModuleInfo::nameLower()); if (is_dir($langPath)) { - $this->loadTranslationsFrom($langPath, ModuleInfo::nameLower()); + $this->loadTranslationsFrom($langPath, ModuleInfo::nameLower()); } else { $this->loadTranslationsFrom(module_path(ModuleInfo::name(), 'Resources/lang'), ModuleInfo::nameLower()); } @@ -140,16 +117,16 @@ class PricingServiceProvider extends ServiceProvider /** * Regsiter View Paths - * @return array */ private function getPublishableViewPaths(): array { $paths = []; foreach (Config::get('view.paths') as $path) { - if (is_dir($path . '/modules/' . ModuleInfo::nameLower())) { - $paths[] = $path . '/modules/' . ModuleInfo::nameLower(); + if (is_dir($path.'/modules/'.ModuleInfo::nameLower())) { + $paths[] = $path.'/modules/'.ModuleInfo::nameLower(); } } + return $paths; } } diff --git a/Modules/Pricing/Providers/RouteServiceProvider.php b/Modules/Pricing/Providers/RouteServiceProvider.php index dc3d35f9..c66991f1 100644 --- a/Modules/Pricing/Providers/RouteServiceProvider.php +++ b/Modules/Pricing/Providers/RouteServiceProvider.php @@ -2,8 +2,8 @@ namespace Modules\Pricing\Providers; -use Illuminate\Support\Facades\Route; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; +use Illuminate\Support\Facades\Route; class RouteServiceProvider extends ServiceProvider { diff --git a/Modules/Pricing/Routes/api.php b/Modules/Pricing/Routes/api.php index 8d2aeea4..2f5d9767 100644 --- a/Modules/Pricing/Routes/api.php +++ b/Modules/Pricing/Routes/api.php @@ -15,4 +15,4 @@ use Illuminate\Http\Request; Route::middleware('auth:api')->get('/pricing', function (Request $request) { return $request->user(); -}); \ No newline at end of file +}); diff --git a/Modules/Pricing/Support/ModuleInfo.php b/Modules/Pricing/Support/ModuleInfo.php index e5048710..3427b84b 100644 --- a/Modules/Pricing/Support/ModuleInfo.php +++ b/Modules/Pricing/Support/ModuleInfo.php @@ -4,11 +4,10 @@ namespace Modules\Pricing\Support; class ModuleInfo { - protected static string $moduleName = 'Pricing'; + protected static string $moduleName = 'Pricing'; /** * defines the Module Name - * @return string */ public static function name(): string { @@ -17,7 +16,6 @@ class ModuleInfo /** * define the lowercase version - * @return string */ public static function nameLower(): string { diff --git a/Modules/Replenishment/Providers/ReplenishmentServiceProvider.php b/Modules/Replenishment/Providers/ReplenishmentServiceProvider.php index 6252ab34..75b1016d 100644 --- a/Modules/Replenishment/Providers/ReplenishmentServiceProvider.php +++ b/Modules/Replenishment/Providers/ReplenishmentServiceProvider.php @@ -11,8 +11,8 @@ class ReplenishmentServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'replenishment'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'replenishment'); } /** diff --git a/Modules/Reporting/Providers/ReportingServiceProvider.php b/Modules/Reporting/Providers/ReportingServiceProvider.php index e7612224..35150df9 100644 --- a/Modules/Reporting/Providers/ReportingServiceProvider.php +++ b/Modules/Reporting/Providers/ReportingServiceProvider.php @@ -11,8 +11,8 @@ class ReportingServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'reporting'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'reporting'); } /** diff --git a/Modules/Security/Providers/SecurityServiceProvider.php b/Modules/Security/Providers/SecurityServiceProvider.php index 56d40e69..6fdad140 100644 --- a/Modules/Security/Providers/SecurityServiceProvider.php +++ b/Modules/Security/Providers/SecurityServiceProvider.php @@ -11,8 +11,8 @@ class SecurityServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'security'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'security'); } /** diff --git a/Modules/SentinelIntegration/Providers/SentinelIntegrationServiceProvider.php b/Modules/SentinelIntegration/Providers/SentinelIntegrationServiceProvider.php index 187563a9..ae631cea 100644 --- a/Modules/SentinelIntegration/Providers/SentinelIntegrationServiceProvider.php +++ b/Modules/SentinelIntegration/Providers/SentinelIntegrationServiceProvider.php @@ -11,8 +11,8 @@ class SentinelIntegrationServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'sentinelintegration'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'sentinelintegration'); } /** diff --git a/Modules/Shipping/Providers/ShippingServiceProvider.php b/Modules/Shipping/Providers/ShippingServiceProvider.php index 5569f8e7..3170ffc8 100644 --- a/Modules/Shipping/Providers/ShippingServiceProvider.php +++ b/Modules/Shipping/Providers/ShippingServiceProvider.php @@ -11,8 +11,8 @@ class ShippingServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'shipping'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'shipping'); } /** diff --git a/Modules/Transportation/Providers/TransportationServiceProvider.php b/Modules/Transportation/Providers/TransportationServiceProvider.php index e1e057c0..9cf572d6 100644 --- a/Modules/Transportation/Providers/TransportationServiceProvider.php +++ b/Modules/Transportation/Providers/TransportationServiceProvider.php @@ -11,8 +11,8 @@ class TransportationServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadRoutesFrom(__DIR__ . '/../Routes/web.php'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'transportation'); + $this->loadRoutesFrom(__DIR__.'/../Routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../Resources/views', 'transportation'); } /** diff --git a/Modules/Warehouse/Providers/WarehouseServiceProvider.php b/Modules/Warehouse/Providers/WarehouseServiceProvider.php index 4df6a522..e6be278f 100644 --- a/Modules/Warehouse/Providers/WarehouseServiceProvider.php +++ b/Modules/Warehouse/Providers/WarehouseServiceProvider.php @@ -12,8 +12,8 @@ class WarehouseServiceProvider extends ServiceProvider */ public function boot(): void { - $this->loadViewsFrom(__DIR__ . '/../resources/views', 'warehouse'); - $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); - Route::middleware('web')->group(__DIR__ . '/../routes/web.php'); + $this->loadViewsFrom(__DIR__.'/../resources/views', 'warehouse'); + $this->loadMigrationsFrom(__DIR__.'/../database/migrations'); + Route::middleware('web')->group(__DIR__.'/../routes/web.php'); } } diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php index 0119989a..968f91e6 100644 --- a/app/Actions/Fortify/CreateNewUser.php +++ b/app/Actions/Fortify/CreateNewUser.php @@ -18,7 +18,7 @@ class CreateNewUser implements CreatesNewUsers /** * Validate and create a newly registered user with an isolated company tenant. * - * @param array $input + * @param array $input */ public function create(array $input): User { @@ -29,11 +29,11 @@ class CreateNewUser implements CreatesNewUsers ])->validate(); return DB::transaction(function () use ($input): User { - $companyName = $input['company_name'] ?? ($input['name'] . ' Company'); + $companyName = $input['company_name'] ?? ($input['name'].' Company'); $company = Company::create([ 'name' => $companyName, - 'slug' => Str::slug($companyName . '-' . Str::random(6)), + 'slug' => Str::slug($companyName.'-'.Str::random(6)), 'status' => 'active', 'timezone' => 'Europe/London', ]); diff --git a/app/Models/Company.php b/app/Models/Company.php index f62e33f2..f855dc7f 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -2,6 +2,4 @@ namespace App\Models; -class Company extends \Modules\Platform\app\Models\Company -{ -} +class Company extends \Modules\Platform\app\Models\Company {} diff --git a/app/Models/LicenseKey.php b/app/Models/LicenseKey.php index 093087b6..febbe953 100644 --- a/app/Models/LicenseKey.php +++ b/app/Models/LicenseKey.php @@ -2,6 +2,4 @@ namespace App\Models; -class LicenseKey extends \Modules\Platform\app\Models\LicenseKey -{ -} +class LicenseKey extends \Modules\Platform\app\Models\LicenseKey {} diff --git a/app/Models/Payment.php b/app/Models/Payment.php index a2510762..94df83cf 100644 --- a/app/Models/Payment.php +++ b/app/Models/Payment.php @@ -2,6 +2,4 @@ namespace App\Models; -class Payment extends \Modules\Platform\app\Models\Payment -{ -} +class Payment extends \Modules\Platform\app\Models\Payment {} diff --git a/app/Models/Warehouse.php b/app/Models/Warehouse.php index 75d7ea6a..34093c5b 100644 --- a/app/Models/Warehouse.php +++ b/app/Models/Warehouse.php @@ -2,6 +2,4 @@ namespace App\Models; -class Warehouse extends \Modules\Warehouse\app\Models\Warehouse -{ -} +class Warehouse extends \Modules\Warehouse\app\Models\Warehouse {} diff --git a/app/Models/WarehouseValidationRule.php b/app/Models/WarehouseValidationRule.php index 40a94b09..125d1809 100644 --- a/app/Models/WarehouseValidationRule.php +++ b/app/Models/WarehouseValidationRule.php @@ -2,6 +2,4 @@ namespace App\Models; -class WarehouseValidationRule extends \Modules\Warehouse\app\Models\WarehouseValidationRule -{ -} +class WarehouseValidationRule extends \Modules\Warehouse\app\Models\WarehouseValidationRule {} diff --git a/app/Providers/TenancyServiceProvider.php b/app/Providers/TenancyServiceProvider.php index d94703cd..f4c6e83b 100644 --- a/app/Providers/TenancyServiceProvider.php +++ b/app/Providers/TenancyServiceProvider.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Providers; +use Illuminate\Contracts\Http\Kernel; use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; @@ -142,7 +143,7 @@ class TenancyServiceProvider extends ServiceProvider ]; foreach (array_reverse($tenancyMiddleware) as $middleware) { - $this->app[\Illuminate\Contracts\Http\Kernel::class]->prependToMiddlewarePriority($middleware); + $this->app[Kernel::class]->prependToMiddlewarePriority($middleware); } } } diff --git a/app/Services/Charts/DashboardChartService.php b/app/Services/Charts/DashboardChartService.php index 66ea656e..98c8ecac 100644 --- a/app/Services/Charts/DashboardChartService.php +++ b/app/Services/Charts/DashboardChartService.php @@ -75,11 +75,11 @@ final class DashboardChartService try { $rows = DB::connection('odbc')->select( - "SELECT DATE(A5PICKCMTS) AS PICK_DATE, COUNT(*) AS TOTAL + 'SELECT DATE(A5PICKCMTS) AS PICK_DATE, COUNT(*) AS TOTAL FROM EWDAT.ICM688M2 WHERE A5PICKCMTS >= CURRENT DATE - 7 DAYS GROUP BY DATE(A5PICKCMTS) - ORDER BY PICK_DATE" + ORDER BY PICK_DATE' ); foreach ($rows as $row) { @@ -171,12 +171,12 @@ final class DashboardChartService try { $rows = DB::connection('odbc')->select( - "SELECT TRIM(AT9WHS) AS WAREHOUSE, COUNT(*) AS TOTAL + 'SELECT TRIM(AT9WHS) AS WAREHOUSE, COUNT(*) AS TOTAL FROM EWDAT.ICM709M WHERE AT9QTY <= AT9WRN GROUP BY TRIM(AT9WHS) ORDER BY TOTAL DESC - FETCH FIRST 6 ROWS ONLY" + FETCH FIRST 6 ROWS ONLY' ); if (! empty($rows)) { @@ -204,12 +204,12 @@ final class DashboardChartService try { $rows = DB::connection('odbc')->select( - "SELECT + 'SELECT SUM(A5RSVQTY) AS RESERVED_QTY, SUM(A5PACKED) AS PACKED_QTY, SUM(A5RSVQTY - A5PACKED) AS REMAINING_QTY FROM EWDAT.ICM688M2 - WHERE A5RSVQTY > 0" + WHERE A5RSVQTY > 0' ); if (! empty($rows)) { @@ -260,7 +260,7 @@ final class DashboardChartService } /** - * @param array $labels + * @param array $labels * @return array */ private function emptySeries(array $labels): array @@ -287,8 +287,8 @@ final class DashboardChartService } /** - * @param array $labels - * @param array $data + * @param array $labels + * @param array $data * @return array */ private function lineChart(array $labels, array $data, string $label): array @@ -305,8 +305,8 @@ final class DashboardChartService } /** - * @param array $labels - * @param array $data + * @param array $labels + * @param array $data * @return array */ private function barChart(array $labels, array $data, string $label): array @@ -322,8 +322,8 @@ final class DashboardChartService } /** - * @param array $labels - * @param array $data + * @param array $labels + * @param array $data * @return array */ private function doughnutChart(array $labels, array $data, string $label): array diff --git a/bootstrap/providers.php b/bootstrap/providers.php index e1f30461..e9806a69 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -19,7 +19,7 @@ use Modules\Shipping\Providers\ShippingServiceProvider; use Modules\Transportation\Providers\TransportationServiceProvider; use Modules\Warehouse\Providers\WarehouseServiceProvider; -$statusesPath = dirname(__DIR__) . '/modules_statuses.json'; +$statusesPath = dirname(__DIR__).'/modules_statuses.json'; $statuses = is_file($statusesPath) ? json_decode((string) file_get_contents($statusesPath), true, 512, JSON_THROW_ON_ERROR) : []; diff --git a/config/localization.php b/config/localization.php index 276d0f8a..83473fcf 100644 --- a/config/localization.php +++ b/config/localization.php @@ -4,6 +4,11 @@ declare(strict_types=1); use LaravelLang\Config\Constants\RouteName; use LaravelLang\LocaleList\Locale; +use LaravelLang\Routes\Middlewares\LocalizationByCookie; +use LaravelLang\Routes\Middlewares\LocalizationByHeader; +use LaravelLang\Routes\Middlewares\LocalizationByModel; +use LaravelLang\Routes\Middlewares\LocalizationByParameterPrefix; +use LaravelLang\Routes\Middlewares\LocalizationBySession; return [ /* @@ -111,10 +116,10 @@ return [ 'names' => [ 'parameter' => RouteName::Parameter, - 'header' => RouteName::Header, - 'cookie' => RouteName::Cookie, - 'session' => RouteName::Session, - 'column' => RouteName::Column, + 'header' => RouteName::Header, + 'cookie' => RouteName::Cookie, + 'session' => RouteName::Session, + 'column' => RouteName::Column, ], /* @@ -148,20 +153,20 @@ return [ // This option contains settings for routes without the prefix of the localization code. 'default' => [ - LaravelLang\Routes\Middlewares\LocalizationByCookie::class, - LaravelLang\Routes\Middlewares\LocalizationByHeader::class, - LaravelLang\Routes\Middlewares\LocalizationBySession::class, - LaravelLang\Routes\Middlewares\LocalizationByModel::class, + LocalizationByCookie::class, + LocalizationByHeader::class, + LocalizationBySession::class, + LocalizationByModel::class, ], // This option contains settings for routes with the prefix of the localization code. 'prefix' => [ - LaravelLang\Routes\Middlewares\LocalizationByParameterPrefix::class, - LaravelLang\Routes\Middlewares\LocalizationByCookie::class, - LaravelLang\Routes\Middlewares\LocalizationByHeader::class, - LaravelLang\Routes\Middlewares\LocalizationBySession::class, - LaravelLang\Routes\Middlewares\LocalizationByModel::class, + LocalizationByParameterPrefix::class, + LocalizationByCookie::class, + LocalizationByHeader::class, + LocalizationBySession::class, + LocalizationByModel::class, ], ], ], @@ -229,14 +234,14 @@ return [ 'google' => [ 'translator' => '\LaravelLang\Translator\Integrations\Google', - 'enabled' => (bool) env('TRANSLATION_GOOGLE_ENABLED', true), + 'enabled' => (bool) env('TRANSLATION_GOOGLE_ENABLED', true), 'priority' => (int) env('TRANSLATION_GOOGLE_PRIORITY', 1), ], 'deepl' => [ 'translator' => '\LaravelLang\Translator\Integrations\Deepl', - 'enabled' => (bool) env('TRANSLATION_DEEPL_ENABLED', false), + 'enabled' => (bool) env('TRANSLATION_DEEPL_ENABLED', false), 'priority' => (int) env('TRANSLATION_DEEPL_PRIORITY', 2), 'credentials' => [ @@ -247,11 +252,11 @@ return [ 'yandex' => [ 'translator' => '\LaravelLang\Translator\Integrations\Yandex', - 'enabled' => (bool) env('TRANSLATION_YANDEX_ENABLED', false), + 'enabled' => (bool) env('TRANSLATION_YANDEX_ENABLED', false), 'priority' => (int) env('TRANSLATION_YANDEX_PRIORITY', 3), 'credentials' => [ - 'key' => (string) env('TRANSLATION_YANDEX_KEY'), + 'key' => (string) env('TRANSLATION_YANDEX_KEY'), 'folder' => (string) env('TRANSLATION_YANDEX_FOLDER_ID'), ], ], diff --git a/config/modules.php b/config/modules.php index a9d5bf26..e4841cb1 100644 --- a/config/modules.php +++ b/config/modules.php @@ -3,7 +3,6 @@ use mpba\Modules\Activators\DatabaseActivator; use mpba\Modules\Activators\FileActivator; - return [ /* @@ -28,7 +27,7 @@ return [ 'stubs' => [ 'enabled' => false, - 'path' => base_path() . '/Vendors/mpba/laravel-modules/src/Commands/stubs', + 'path' => base_path().'/Vendors/mpba/laravel-modules/src/Commands/stubs', 'files' => [ 'routes/web' => 'Routes/web.php', 'routes/api' => 'Routes/api.php', @@ -121,7 +120,7 @@ return [ 'views' => ['path' => 'Resources/views', 'generate' => true], 'test' => ['path' => 'Tests/Unit', 'generate' => true], 'test-feature' => ['path' => 'Tests/Feature', 'generate' => true], - 'test-browser' => ['path' => 'Tests/Browser', 'generate' => true,], + 'test-browser' => ['path' => 'Tests/Browser', 'generate' => true], 'repository' => ['path' => 'Repositories', 'generate' => false], 'event' => ['path' => 'Events', 'generate' => false], 'listener' => ['path' => 'Listeners', 'generate' => false], diff --git a/config/tenancy.php b/config/tenancy.php index 387ef00f..7a360106 100644 --- a/config/tenancy.php +++ b/config/tenancy.php @@ -2,12 +2,20 @@ declare(strict_types=1); +use Stancl\Tenancy\Bootstrappers\CacheTenancyBootstrapper; +use Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper; +use Stancl\Tenancy\Bootstrappers\FilesystemTenancyBootstrapper; +use Stancl\Tenancy\Bootstrappers\QueueTenancyBootstrapper; use Stancl\Tenancy\Database\Models\Domain; use Stancl\Tenancy\Database\Models\Tenant; +use Stancl\Tenancy\TenantDatabaseManagers\MySQLDatabaseManager; +use Stancl\Tenancy\TenantDatabaseManagers\PostgreSQLDatabaseManager; +use Stancl\Tenancy\TenantDatabaseManagers\SQLiteDatabaseManager; +use Stancl\Tenancy\UUIDGenerator; return [ 'tenant_model' => Tenant::class, - 'id_generator' => Stancl\Tenancy\UUIDGenerator::class, + 'id_generator' => UUIDGenerator::class, 'domain_model' => Domain::class, @@ -28,10 +36,10 @@ return [ * To configure their behavior, see the config keys below. */ 'bootstrappers' => [ - Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper::class, - Stancl\Tenancy\Bootstrappers\CacheTenancyBootstrapper::class, - Stancl\Tenancy\Bootstrappers\FilesystemTenancyBootstrapper::class, - Stancl\Tenancy\Bootstrappers\QueueTenancyBootstrapper::class, + DatabaseTenancyBootstrapper::class, + CacheTenancyBootstrapper::class, + FilesystemTenancyBootstrapper::class, + QueueTenancyBootstrapper::class, // Stancl\Tenancy\Bootstrappers\RedisTenancyBootstrapper::class, // Note: phpredis is needed ], @@ -58,10 +66,10 @@ return [ * TenantDatabaseManagers are classes that handle the creation & deletion of tenant databases. */ 'managers' => [ - 'sqlite' => Stancl\Tenancy\TenantDatabaseManagers\SQLiteDatabaseManager::class, - 'mysql' => Stancl\Tenancy\TenantDatabaseManagers\MySQLDatabaseManager::class, - 'mariadb' => Stancl\Tenancy\TenantDatabaseManagers\MySQLDatabaseManager::class, - 'pgsql' => Stancl\Tenancy\TenantDatabaseManagers\PostgreSQLDatabaseManager::class, + 'sqlite' => SQLiteDatabaseManager::class, + 'mysql' => MySQLDatabaseManager::class, + 'mariadb' => MySQLDatabaseManager::class, + 'pgsql' => PostgreSQLDatabaseManager::class, /** * Use this database manager for MySQL to have a DB user created for each tenant database. diff --git a/database/migrations/2019_09_15_000010_create_tenants_table.php b/database/migrations/2019_09_15_000010_create_tenants_table.php index ec730651..08c8ec1a 100644 --- a/database/migrations/2019_09_15_000010_create_tenants_table.php +++ b/database/migrations/2019_09_15_000010_create_tenants_table.php @@ -10,8 +10,6 @@ class CreateTenantsTable extends Migration { /** * Run the migrations. - * - * @return void */ public function up(): void { @@ -27,8 +25,6 @@ class CreateTenantsTable extends Migration /** * Reverse the migrations. - * - * @return void */ public function down(): void { diff --git a/database/migrations/2019_09_15_000020_create_domains_table.php b/database/migrations/2019_09_15_000020_create_domains_table.php index 77c1b88a..49d93dd8 100644 --- a/database/migrations/2019_09_15_000020_create_domains_table.php +++ b/database/migrations/2019_09_15_000020_create_domains_table.php @@ -10,8 +10,6 @@ class CreateDomainsTable extends Migration { /** * Run the migrations. - * - * @return void */ public function up(): void { @@ -27,8 +25,6 @@ class CreateDomainsTable extends Migration /** * Reverse the migrations. - * - * @return void */ public function down(): void { diff --git a/database/migrations/2020_05_15_000010_create_tenant_user_impersonation_tokens_table.php b/database/migrations/2020_05_15_000010_create_tenant_user_impersonation_tokens_table.php index 32597f38..50f50075 100644 --- a/database/migrations/2020_05_15_000010_create_tenant_user_impersonation_tokens_table.php +++ b/database/migrations/2020_05_15_000010_create_tenant_user_impersonation_tokens_table.php @@ -10,8 +10,6 @@ class CreateTenantUserImpersonationTokensTable extends Migration { /** * Run the migrations. - * - * @return void */ public function up(): void { @@ -29,8 +27,6 @@ class CreateTenantUserImpersonationTokensTable extends Migration /** * Reverse the migrations. - * - * @return void */ public function down(): void { diff --git a/lang/de/actions.php b/lang/de/actions.php index e0776b6d..8cc438b6 100644 --- a/lang/de/actions.php +++ b/lang/de/actions.php @@ -3,117 +3,117 @@ declare(strict_types=1); return [ - 'accept' => 'Akzeptieren', - 'action' => 'Aktion', - 'actions' => 'Aktionen', - 'add' => 'Hinzufügen', - 'admin' => 'Administrator', - 'agree' => 'Zustimmen', - 'archive' => 'Archiv', - 'assign' => 'Zuordnen', - 'associate' => 'Assoziieren', - 'attach' => 'Anfügen', - 'browse' => 'Durchsuche', - 'cancel' => 'Stornieren', - 'choose' => 'Wählen', - 'choose_file' => 'Datei wählen', - 'choose_image' => 'Wählen Sie Bild', - 'click_to_copy' => 'Klicken Sie zum Kopieren', - 'close' => 'Schließen', - 'collapse' => 'Zusammenbruch', - 'collapse_all' => 'Alles reduzieren', - 'comment' => 'Kommentar', - 'confirm' => 'Bestätigen', - 'connect' => 'Verbinden', - 'create' => 'Erstellen', - 'delete' => 'Löschen', - 'detach' => 'Ablösen', - 'details' => 'Einzelheiten', - 'disable' => 'Deaktivieren', - 'discard' => 'Verwerfen', - 'done' => 'Erledigt', - 'down' => 'Runter', - 'duplicate' => 'Duplikat', - 'edit' => 'Bearbeiten', - 'enable' => 'Aktivieren', - 'expand' => 'Expandieren', - 'expand_all' => 'Alle erweitern', - 'explanation' => 'Erläuterung', - 'export' => 'Exportieren', - 'file' => 'Datei', - 'files' => 'Dateien', - 'go_home' => 'Nach Hause gehen', - 'hide' => 'Verstecken', - 'home' => 'Heim', - 'image' => 'Bild', - 'impersonate' => 'Imitieren', - 'impersonation' => 'Identitätswechsel', - 'import' => 'Importieren', - 'introduction' => 'Einführung', - 'like' => 'Wie', - 'load' => 'Belastung', - 'localize' => 'Lokalisieren', - 'log_in' => 'Anmeldung', - 'log_out' => 'Ausloggen', - 'named' => [ - 'add' => ':name hinzufügen', - 'choose' => ':name auswählen', - 'create' => ':name erstellen', - 'delete' => ':name löschen', + 'accept' => 'Akzeptieren', + 'action' => 'Aktion', + 'actions' => 'Aktionen', + 'add' => 'Hinzufügen', + 'admin' => 'Administrator', + 'agree' => 'Zustimmen', + 'archive' => 'Archiv', + 'assign' => 'Zuordnen', + 'associate' => 'Assoziieren', + 'attach' => 'Anfügen', + 'browse' => 'Durchsuche', + 'cancel' => 'Stornieren', + 'choose' => 'Wählen', + 'choose_file' => 'Datei wählen', + 'choose_image' => 'Wählen Sie Bild', + 'click_to_copy' => 'Klicken Sie zum Kopieren', + 'close' => 'Schließen', + 'collapse' => 'Zusammenbruch', + 'collapse_all' => 'Alles reduzieren', + 'comment' => 'Kommentar', + 'confirm' => 'Bestätigen', + 'connect' => 'Verbinden', + 'create' => 'Erstellen', + 'delete' => 'Löschen', + 'detach' => 'Ablösen', + 'details' => 'Einzelheiten', + 'disable' => 'Deaktivieren', + 'discard' => 'Verwerfen', + 'done' => 'Erledigt', + 'down' => 'Runter', + 'duplicate' => 'Duplikat', + 'edit' => 'Bearbeiten', + 'enable' => 'Aktivieren', + 'expand' => 'Expandieren', + 'expand_all' => 'Alle erweitern', + 'explanation' => 'Erläuterung', + 'export' => 'Exportieren', + 'file' => 'Datei', + 'files' => 'Dateien', + 'go_home' => 'Nach Hause gehen', + 'hide' => 'Verstecken', + 'home' => 'Heim', + 'image' => 'Bild', + 'impersonate' => 'Imitieren', + 'impersonation' => 'Identitätswechsel', + 'import' => 'Importieren', + 'introduction' => 'Einführung', + 'like' => 'Wie', + 'load' => 'Belastung', + 'localize' => 'Lokalisieren', + 'log_in' => 'Anmeldung', + 'log_out' => 'Ausloggen', + 'named' => [ + 'add' => ':name hinzufügen', + 'choose' => ':name auswählen', + 'create' => ':name erstellen', + 'delete' => ':name löschen', 'duplicate' => ':name duplizieren', - 'edit' => ':name bearbeiten', - 'export' => ':name exportieren', - 'hide' => ':name ausblenden', - 'import' => ':name importieren', - 'new' => 'Neu :name', - 'restore' => ':name wiederherstellen', - 'save' => ':name speichern', - 'search' => ':name suchen', - 'show' => ':name anzeigen', - 'update' => ':name aktualisieren', - 'view' => ':name anzeigen', + 'edit' => ':name bearbeiten', + 'export' => ':name exportieren', + 'hide' => ':name ausblenden', + 'import' => ':name importieren', + 'new' => 'Neu :name', + 'restore' => ':name wiederherstellen', + 'save' => ':name speichern', + 'search' => ':name suchen', + 'show' => ':name anzeigen', + 'update' => ':name aktualisieren', + 'view' => ':name anzeigen', ], - 'new' => 'Neu', - 'no' => 'Nein', - 'open' => 'Öffen', - 'open_website' => 'Auf der Website öffnen', - 'preview' => 'Vorschau', - 'price' => 'Preis', - 'record' => 'Aufzeichnen', - 'restore' => 'Wiederherstellen', - 'save' => 'Speichern', - 'save_and_close' => 'Speichern und schließen', + 'new' => 'Neu', + 'no' => 'Nein', + 'open' => 'Öffen', + 'open_website' => 'Auf der Website öffnen', + 'preview' => 'Vorschau', + 'price' => 'Preis', + 'record' => 'Aufzeichnen', + 'restore' => 'Wiederherstellen', + 'save' => 'Speichern', + 'save_and_close' => 'Speichern und schließen', 'save_and_return' => 'Speichern und zurückgehen', - 'search' => 'Suchen', - 'select' => 'Wählen', - 'select_all' => 'Alles auswählen', - 'send' => 'Absenden', - 'settings' => 'Einstellungen', - 'show' => 'Anzeigen', - 'show_all' => 'Alles anzeigen', - 'sign_in' => 'Anmelden', - 'solve' => 'Lösen', - 'start' => 'Starten', - 'stop' => 'Stoppen', - 'submit' => 'Absenden', - 'subscribe' => 'Abonnieren', - 'switch' => 'Umschalten', - 'switch_to_role' => 'Zur Rolle wechseln', - 'tag' => 'Schlagwort', - 'tags' => 'Stichworte', - 'target_link' => [ - 'blank' => 'In einem neuen Fenster öffnen', + 'search' => 'Suchen', + 'select' => 'Wählen', + 'select_all' => 'Alles auswählen', + 'send' => 'Absenden', + 'settings' => 'Einstellungen', + 'show' => 'Anzeigen', + 'show_all' => 'Alles anzeigen', + 'sign_in' => 'Anmelden', + 'solve' => 'Lösen', + 'start' => 'Starten', + 'stop' => 'Stoppen', + 'submit' => 'Absenden', + 'subscribe' => 'Abonnieren', + 'switch' => 'Umschalten', + 'switch_to_role' => 'Zur Rolle wechseln', + 'tag' => 'Schlagwort', + 'tags' => 'Stichworte', + 'target_link' => [ + 'blank' => 'In einem neuen Fenster öffnen', 'parent' => 'In einem übergeordneten Frame öffnen', - 'self' => 'In einem aktuellen Fenster öffnen', - 'top' => 'Im obersten Rahmen öffnen', + 'self' => 'In einem aktuellen Fenster öffnen', + 'top' => 'Im obersten Rahmen öffnen', ], - 'translate' => 'Übersetzen', - 'translate_it' => 'Übersetze es', - 'unpack' => 'Entpacken', - 'unsubscribe' => 'Abbestellen', - 'up' => 'Hoch', - 'update' => 'Aktualisieren', - 'user' => 'Benutzer', - 'view' => 'Ansicht', - 'yes' => 'Ja', + 'translate' => 'Übersetzen', + 'translate_it' => 'Übersetze es', + 'unpack' => 'Entpacken', + 'unsubscribe' => 'Abbestellen', + 'up' => 'Hoch', + 'update' => 'Aktualisieren', + 'user' => 'Benutzer', + 'view' => 'Ansicht', + 'yes' => 'Ja', ]; diff --git a/lang/de/auth.php b/lang/de/auth.php index b9b93be7..274767e7 100644 --- a/lang/de/auth.php +++ b/lang/de/auth.php @@ -3,7 +3,7 @@ declare(strict_types=1); return [ - 'failed' => 'Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.', + 'failed' => 'Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.', 'password' => 'Das Passwort ist falsch.', 'throttle' => 'Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.', ]; diff --git a/lang/de/http-statuses.php b/lang/de/http-statuses.php index 58a68cf4..79fe02ea 100644 --- a/lang/de/http-statuses.php +++ b/lang/de/http-statuses.php @@ -3,82 +3,82 @@ declare(strict_types=1); return [ - '0' => 'Unbekannter Fehler', - '100' => 'Weiter', - '101' => 'Protokollwechsel', - '102' => 'In Bearbeitung', - '200' => 'OK', - '201' => 'Erstellt', - '202' => 'Akzeptiert', - '203' => 'Nicht verifizierte Information', - '204' => 'Kein Inhalt', - '205' => 'Inhalt zurücksetzen', - '206' => 'Teilinhalt', - '207' => 'Multistatus', - '208' => 'Bereits gemeldet', - '226' => 'IM verwendet', - '300' => 'Mehrere Auswahlmöglichkeiten', - '301' => 'Permanent verschoben', - '302' => 'Gefunden', - '303' => 'Siehe andere Seite', - '304' => 'Nicht modifiziert', - '305' => 'Proxy verwenden', - '307' => 'Temporäre Weiterleitung', - '308' => 'Permanente Weiterleitung', - '400' => 'Ungültige Anfrage', - '401' => 'Nicht autorisiert', - '402' => 'Zahlung erforderlich', - '403' => 'Verboten', - '404' => 'Nicht gefunden', - '405' => 'Methode nicht erlaubt', - '406' => 'Nicht annehmbar', - '407' => 'Proxy-Authentifizierung erforderlich', - '408' => 'Zeitüberschreitung der Anfrage', - '409' => 'Konflikt', - '410' => 'Nicht mehr verfügbar', - '411' => 'Länge erforderlich', - '412' => 'Vorbedingung fehlgeschlagen', - '413' => 'Nutzlast zu groß', - '414' => 'URI zu lang', - '415' => 'Nicht unterstützter Medientyp', - '416' => 'Bereich nicht erfüllbar', - '417' => 'Erwartung gescheitert', - '418' => 'Ich bin eine Teekanne', - '419' => 'Sitzung ist abgelaufen', - '421' => 'Fehlgeleitete Anfrage', - '422' => 'Unverarbeitbare Entität', - '423' => 'Gesperrt', - '424' => 'Fehlgeschlagene Abhängigkeit', - '425' => 'Zu früh', - '426' => 'Upgrade erforderlich', - '428' => 'Voraussetzung erforderlich', - '429' => 'Zu viele Anfragen', - '431' => 'Anfrage-Header-Felder zu groß', - '444' => 'Verbindung ohne Antwort geschlossen', - '449' => 'Wiederhole mit', - '451' => 'Aus rechtlichen Gründen nicht verfügbar', - '499' => 'Client-Closed-Request', - '500' => 'Interner Serverfehler', - '501' => 'Nicht implementiert', - '502' => 'Fehlerhaftes Gateway', - '503' => 'Wartungsmodus', - '504' => 'Gateway-Zeitüberschreitung', - '505' => 'HTTP Version nicht unterstützt', - '506' => 'Variante verhandelt auch', - '507' => 'Nicht genügend Speicherplatz', - '508' => 'Endlosschleife erkannt', - '509' => 'Bandbreitenlimit überschritten', - '510' => 'Nicht erweitert', - '511' => 'Netzwerkauthentifizierung erforderlich', - '520' => 'Unbekannter Fehler', - '521' => 'Webserver ist ausgefallen', - '522' => 'Verbindung abgelaufen', - '523' => 'Quelle ist nicht erreichbar', - '524' => 'Eine Zeitüberschreitung ist aufgetreten', - '525' => 'SSL Handshake fehlgeschlagen', - '526' => 'Ungültiges SSL-Zertifikat', - '527' => 'Railgun-Fehler', - '598' => 'Zeitüberschreitungsfehler beim Lesen des Netzwerks', - '599' => 'Zeitüberschreitungsfehler bei Netzwerkverbindung', + '0' => 'Unbekannter Fehler', + '100' => 'Weiter', + '101' => 'Protokollwechsel', + '102' => 'In Bearbeitung', + '200' => 'OK', + '201' => 'Erstellt', + '202' => 'Akzeptiert', + '203' => 'Nicht verifizierte Information', + '204' => 'Kein Inhalt', + '205' => 'Inhalt zurücksetzen', + '206' => 'Teilinhalt', + '207' => 'Multistatus', + '208' => 'Bereits gemeldet', + '226' => 'IM verwendet', + '300' => 'Mehrere Auswahlmöglichkeiten', + '301' => 'Permanent verschoben', + '302' => 'Gefunden', + '303' => 'Siehe andere Seite', + '304' => 'Nicht modifiziert', + '305' => 'Proxy verwenden', + '307' => 'Temporäre Weiterleitung', + '308' => 'Permanente Weiterleitung', + '400' => 'Ungültige Anfrage', + '401' => 'Nicht autorisiert', + '402' => 'Zahlung erforderlich', + '403' => 'Verboten', + '404' => 'Nicht gefunden', + '405' => 'Methode nicht erlaubt', + '406' => 'Nicht annehmbar', + '407' => 'Proxy-Authentifizierung erforderlich', + '408' => 'Zeitüberschreitung der Anfrage', + '409' => 'Konflikt', + '410' => 'Nicht mehr verfügbar', + '411' => 'Länge erforderlich', + '412' => 'Vorbedingung fehlgeschlagen', + '413' => 'Nutzlast zu groß', + '414' => 'URI zu lang', + '415' => 'Nicht unterstützter Medientyp', + '416' => 'Bereich nicht erfüllbar', + '417' => 'Erwartung gescheitert', + '418' => 'Ich bin eine Teekanne', + '419' => 'Sitzung ist abgelaufen', + '421' => 'Fehlgeleitete Anfrage', + '422' => 'Unverarbeitbare Entität', + '423' => 'Gesperrt', + '424' => 'Fehlgeschlagene Abhängigkeit', + '425' => 'Zu früh', + '426' => 'Upgrade erforderlich', + '428' => 'Voraussetzung erforderlich', + '429' => 'Zu viele Anfragen', + '431' => 'Anfrage-Header-Felder zu groß', + '444' => 'Verbindung ohne Antwort geschlossen', + '449' => 'Wiederhole mit', + '451' => 'Aus rechtlichen Gründen nicht verfügbar', + '499' => 'Client-Closed-Request', + '500' => 'Interner Serverfehler', + '501' => 'Nicht implementiert', + '502' => 'Fehlerhaftes Gateway', + '503' => 'Wartungsmodus', + '504' => 'Gateway-Zeitüberschreitung', + '505' => 'HTTP Version nicht unterstützt', + '506' => 'Variante verhandelt auch', + '507' => 'Nicht genügend Speicherplatz', + '508' => 'Endlosschleife erkannt', + '509' => 'Bandbreitenlimit überschritten', + '510' => 'Nicht erweitert', + '511' => 'Netzwerkauthentifizierung erforderlich', + '520' => 'Unbekannter Fehler', + '521' => 'Webserver ist ausgefallen', + '522' => 'Verbindung abgelaufen', + '523' => 'Quelle ist nicht erreichbar', + '524' => 'Eine Zeitüberschreitung ist aufgetreten', + '525' => 'SSL Handshake fehlgeschlagen', + '526' => 'Ungültiges SSL-Zertifikat', + '527' => 'Railgun-Fehler', + '598' => 'Zeitüberschreitungsfehler beim Lesen des Netzwerks', + '599' => 'Zeitüberschreitungsfehler bei Netzwerkverbindung', 'unknownError' => 'Unbekannter Fehler', ]; diff --git a/lang/de/pagination.php b/lang/de/pagination.php index c912b5d4..5bbde167 100644 --- a/lang/de/pagination.php +++ b/lang/de/pagination.php @@ -3,6 +3,6 @@ declare(strict_types=1); return [ - 'next' => 'Weiter »', + 'next' => 'Weiter »', 'previous' => '« Zurück', ]; diff --git a/lang/de/passwords.php b/lang/de/passwords.php index 9634bddb..198b795d 100644 --- a/lang/de/passwords.php +++ b/lang/de/passwords.php @@ -3,9 +3,9 @@ declare(strict_types=1); return [ - 'reset' => 'Das Passwort wurde zurückgesetzt!', - 'sent' => 'E-Mail zum Zurücksetzen des Passworts wurde gesendet!', + 'reset' => 'Das Passwort wurde zurückgesetzt!', + 'sent' => 'E-Mail zum Zurücksetzen des Passworts wurde gesendet!', 'throttled' => 'Bitte warten Sie, bevor Sie es erneut versuchen.', - 'token' => 'Der Passwort-Wiederherstellungsschlüssel ist ungültig oder abgelaufen.', - 'user' => 'Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.', + 'token' => 'Der Passwort-Wiederherstellungsschlüssel ist ungültig oder abgelaufen.', + 'user' => 'Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.', ]; diff --git a/lang/de/validation.php b/lang/de/validation.php index eb4eb213..4203aae6 100644 --- a/lang/de/validation.php +++ b/lang/de/validation.php @@ -3,286 +3,286 @@ declare(strict_types=1); return [ - 'accepted' => ':Attribute muss akzeptiert werden.', - 'accepted_if' => ':Attribute muss akzeptiert werden, wenn :other :value ist.', - 'active_url' => ':Attribute ist keine gültige Internet-Adresse.', - 'after' => ':Attribute muss ein Datum nach :date sein.', - 'after_or_equal' => ':Attribute muss ein Datum nach :date oder gleich :date sein.', - 'alpha' => ':Attribute darf nur aus Buchstaben bestehen.', - 'alpha_dash' => ':Attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen.', - 'alpha_num' => ':Attribute darf nur aus Buchstaben und Zahlen bestehen.', - 'any_of' => ':Attribute ist ungültig.', - 'array' => ':Attribute muss ein Array sein.', - 'ascii' => 'Die :attribute darf nur alphanumerische Single-Byte-Zeichen und -Symbole enthalten.', - 'before' => ':Attribute muss ein Datum vor :date sein.', - 'before_or_equal' => ':Attribute muss ein Datum vor :date oder gleich :date sein.', - 'between' => [ - 'array' => ':Attribute muss zwischen :min & :max Elemente haben.', - 'file' => ':Attribute muss zwischen :min & :max Kilobytes groß sein.', + 'accepted' => ':Attribute muss akzeptiert werden.', + 'accepted_if' => ':Attribute muss akzeptiert werden, wenn :other :value ist.', + 'active_url' => ':Attribute ist keine gültige Internet-Adresse.', + 'after' => ':Attribute muss ein Datum nach :date sein.', + 'after_or_equal' => ':Attribute muss ein Datum nach :date oder gleich :date sein.', + 'alpha' => ':Attribute darf nur aus Buchstaben bestehen.', + 'alpha_dash' => ':Attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen.', + 'alpha_num' => ':Attribute darf nur aus Buchstaben und Zahlen bestehen.', + 'any_of' => ':Attribute ist ungültig.', + 'array' => ':Attribute muss ein Array sein.', + 'ascii' => 'Die :attribute darf nur alphanumerische Single-Byte-Zeichen und -Symbole enthalten.', + 'before' => ':Attribute muss ein Datum vor :date sein.', + 'before_or_equal' => ':Attribute muss ein Datum vor :date oder gleich :date sein.', + 'between' => [ + 'array' => ':Attribute muss zwischen :min & :max Elemente haben.', + 'file' => ':Attribute muss zwischen :min & :max Kilobytes groß sein.', 'numeric' => ':Attribute muss zwischen :min & :max liegen.', - 'string' => ':Attribute muss zwischen :min & :max Zeichen lang sein.', + 'string' => ':Attribute muss zwischen :min & :max Zeichen lang sein.', ], - 'boolean' => ':Attribute muss entweder \'true\' oder \'false\' sein.', - 'can' => 'Das Feld :attribute enthält einen nicht autorisierten Wert.', - 'confirmed' => ':Attribute stimmt nicht mit der Bestätigung überein.', - 'contains' => 'Dem Feld :attribute fehlt ein erforderlicher Wert.', - 'current_password' => 'Das Passwort ist falsch.', - 'date' => ':Attribute muss ein gültiges Datum sein.', - 'date_equals' => ':Attribute muss ein Datum gleich :date sein.', - 'date_format' => ':Attribute entspricht nicht dem gültigen Format für :format.', - 'decimal' => 'Die :attribute muss :decimal Dezimalstellen haben.', - 'declined' => ':Attribute muss abgelehnt werden.', - 'declined_if' => ':Attribute muss abgelehnt werden wenn :other :value ist.', - 'different' => ':Attribute und :other müssen sich unterscheiden.', - 'digits' => ':Attribute muss :digits Stellen haben.', - 'digits_between' => ':Attribute muss zwischen :min und :max Stellen haben.', - 'dimensions' => ':Attribute hat ungültige Bildabmessungen.', - 'distinct' => ':Attribute beinhaltet einen bereits vorhandenen Wert.', - 'doesnt_contain' => ':Attribute darf keines der folgenden enthalten: :values.', - 'doesnt_end_with' => ':Attribute darf nicht mit einem der folgenden enden: :values.', - 'doesnt_start_with' => ':Attribute darf nicht mit einem der folgenden beginnen: :values.', - 'email' => ':Attribute muss eine gültige E-Mail-Adresse sein.', - 'encoding' => ':Attribute muss als :encoding kodiert sein.', - 'ends_with' => ':Attribute muss eine der folgenden Endungen aufweisen: :values', - 'enum' => 'Der ausgewählte Wert ist ungültig.', - 'exists' => 'Der gewählte Wert für :attribute ist ungültig.', - 'extensions' => 'Das Feld :attribute muss eine der folgenden Erweiterungen haben: :values.', - 'file' => ':Attribute muss eine Datei sein.', - 'filled' => ':Attribute muss ausgefüllt sein.', - 'gt' => [ - 'array' => ':Attribute muss mehr als :value Elemente haben.', - 'file' => ':Attribute muss größer als :value Kilobytes sein.', + 'boolean' => ':Attribute muss entweder \'true\' oder \'false\' sein.', + 'can' => 'Das Feld :attribute enthält einen nicht autorisierten Wert.', + 'confirmed' => ':Attribute stimmt nicht mit der Bestätigung überein.', + 'contains' => 'Dem Feld :attribute fehlt ein erforderlicher Wert.', + 'current_password' => 'Das Passwort ist falsch.', + 'date' => ':Attribute muss ein gültiges Datum sein.', + 'date_equals' => ':Attribute muss ein Datum gleich :date sein.', + 'date_format' => ':Attribute entspricht nicht dem gültigen Format für :format.', + 'decimal' => 'Die :attribute muss :decimal Dezimalstellen haben.', + 'declined' => ':Attribute muss abgelehnt werden.', + 'declined_if' => ':Attribute muss abgelehnt werden wenn :other :value ist.', + 'different' => ':Attribute und :other müssen sich unterscheiden.', + 'digits' => ':Attribute muss :digits Stellen haben.', + 'digits_between' => ':Attribute muss zwischen :min und :max Stellen haben.', + 'dimensions' => ':Attribute hat ungültige Bildabmessungen.', + 'distinct' => ':Attribute beinhaltet einen bereits vorhandenen Wert.', + 'doesnt_contain' => ':Attribute darf keines der folgenden enthalten: :values.', + 'doesnt_end_with' => ':Attribute darf nicht mit einem der folgenden enden: :values.', + 'doesnt_start_with' => ':Attribute darf nicht mit einem der folgenden beginnen: :values.', + 'email' => ':Attribute muss eine gültige E-Mail-Adresse sein.', + 'encoding' => ':Attribute muss als :encoding kodiert sein.', + 'ends_with' => ':Attribute muss eine der folgenden Endungen aufweisen: :values', + 'enum' => 'Der ausgewählte Wert ist ungültig.', + 'exists' => 'Der gewählte Wert für :attribute ist ungültig.', + 'extensions' => 'Das Feld :attribute muss eine der folgenden Erweiterungen haben: :values.', + 'file' => ':Attribute muss eine Datei sein.', + 'filled' => ':Attribute muss ausgefüllt sein.', + 'gt' => [ + 'array' => ':Attribute muss mehr als :value Elemente haben.', + '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.', + 'string' => ':Attribute muss länger als :value Zeichen sein.', ], - 'gte' => [ - 'array' => ':Attribute muss mindestens :value Elemente haben.', - 'file' => ':Attribute muss größer oder gleich :value Kilobytes sein.', + 'gte' => [ + 'array' => ':Attribute muss mindestens :value Elemente haben.', + 'file' => ':Attribute muss größer oder gleich :value Kilobytes sein.', 'numeric' => ':Attribute muss größer oder gleich :value sein.', - 'string' => ':Attribute muss mindestens :value Zeichen lang sein.', + 'string' => ':Attribute muss mindestens :value Zeichen lang sein.', ], - 'hex_color' => 'Das Feld :attribute muss eine gültige Hexadezimalfarbe sein.', - 'image' => ':Attribute muss ein Bild sein.', - 'in' => 'Der gewählte Wert für :attribute ist ungültig.', - 'in_array' => 'Der gewählte Wert für :attribute kommt nicht in :other vor.', - 'in_array_keys' => 'Das Feld :Attribute muss mindestens einen der folgenden Schlüssel enthalten: :Values.', - '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ültiger JSON-String sein.', - 'list' => ':Attribute muss eine Liste sein.', - 'lowercase' => ':Attribute muss in Kleinbuchstaben sein.', - 'lt' => [ - 'array' => ':Attribute muss weniger als :value Elemente haben.', - 'file' => ':Attribute muss kleiner als :value Kilobytes sein.', + 'hex_color' => 'Das Feld :attribute muss eine gültige Hexadezimalfarbe sein.', + 'image' => ':Attribute muss ein Bild sein.', + 'in' => 'Der gewählte Wert für :attribute ist ungültig.', + 'in_array' => 'Der gewählte Wert für :attribute kommt nicht in :other vor.', + 'in_array_keys' => 'Das Feld :Attribute muss mindestens einen der folgenden Schlüssel enthalten: :Values.', + '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ültiger JSON-String sein.', + 'list' => ':Attribute muss eine Liste sein.', + 'lowercase' => ':Attribute muss in Kleinbuchstaben sein.', + 'lt' => [ + 'array' => ':Attribute muss weniger als :value Elemente haben.', + 'file' => ':Attribute muss kleiner als :value Kilobytes sein.', 'numeric' => ':Attribute muss kleiner als :value sein.', - 'string' => ':Attribute muss kürzer als :value Zeichen sein.', + 'string' => ':Attribute muss kürzer als :value Zeichen sein.', ], - 'lte' => [ - 'array' => ':Attribute darf maximal :value Elemente haben.', - 'file' => ':Attribute muss kleiner oder gleich :value Kilobytes sein.', + 'lte' => [ + 'array' => ':Attribute darf maximal :value Elemente haben.', + 'file' => ':Attribute muss kleiner oder gleich :value Kilobytes sein.', 'numeric' => ':Attribute muss kleiner oder gleich :value sein.', - 'string' => ':Attribute darf maximal :value Zeichen lang sein.', + 'string' => ':Attribute darf maximal :value Zeichen lang sein.', ], - 'mac_address' => 'Der Wert muss eine gültige MAC-Adresse sein.', - 'max' => [ - 'array' => ':Attribute darf maximal :max Elemente haben.', - 'file' => ':Attribute darf maximal :max Kilobytes groß sein.', + 'mac_address' => 'Der Wert muss eine gültige MAC-Adresse sein.', + 'max' => [ + 'array' => ':Attribute darf maximal :max Elemente haben.', + 'file' => ':Attribute darf maximal :max Kilobytes groß sein.', 'numeric' => ':Attribute darf maximal :max sein.', - 'string' => ':Attribute darf maximal :max Zeichen haben.', + 'string' => ':Attribute darf maximal :max Zeichen haben.', ], - 'max_digits' => ':Attribute darf maximal :max Ziffern lang sein.', - 'mimes' => ':Attribute muss den Dateityp :values haben.', - 'mimetypes' => ':Attribute muss den Dateityp :values haben.', - 'min' => [ - 'array' => ':Attribute muss mindestens :min Elemente haben.', - 'file' => ':Attribute muss mindestens :min Kilobytes groß sein.', + 'max_digits' => ':Attribute darf maximal :max Ziffern lang sein.', + 'mimes' => ':Attribute muss den Dateityp :values haben.', + 'mimetypes' => ':Attribute muss den Dateityp :values haben.', + 'min' => [ + 'array' => ':Attribute muss mindestens :min Elemente haben.', + 'file' => ':Attribute muss mindestens :min Kilobytes groß sein.', 'numeric' => ':Attribute muss mindestens :min sein.', - 'string' => ':Attribute muss mindestens :min Zeichen lang sein.', + 'string' => ':Attribute muss mindestens :min Zeichen lang sein.', ], - 'min_digits' => ':Attribute muss mindestens :min Ziffern lang sein.', - 'missing' => 'Das Feld :attribute muss fehlen.', - 'missing_if' => 'Das Feld :attribute muss fehlen, wenn :other gleich :value ist.', - 'missing_unless' => 'Das Feld :attribute muss fehlen, es sei denn, :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' => 'Der gewählte Wert für :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 beinhalten.', - 'mixed' => ':Attribute muss mindestens einen Großbuchstaben und einen Kleinbuchstaben beinhalten.', - 'numbers' => ':Attribute muss mindestens eine Zahl beinhalten.', - 'symbols' => ':Attribute muss mindestens ein Sonderzeichen beinhalten.', + 'min_digits' => ':Attribute muss mindestens :min Ziffern lang sein.', + 'missing' => 'Das Feld :attribute muss fehlen.', + 'missing_if' => 'Das Feld :attribute muss fehlen, wenn :other gleich :value ist.', + 'missing_unless' => 'Das Feld :attribute muss fehlen, es sei denn, :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' => 'Der gewählte Wert für :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 beinhalten.', + 'mixed' => ':Attribute muss mindestens einen Großbuchstaben und einen Kleinbuchstaben beinhalten.', + 'numbers' => ':Attribute muss mindestens eine Zahl beinhalten.', + 'symbols' => ':Attribute muss mindestens ein Sonderzeichen beinhalten.', 'uncompromised' => ':Attribute wurde in einem Datenleck gefunden. Bitte wählen Sie ein anderes :attribute.', ], - 'present' => ':Attribute muss vorhanden sein.', - 'present_if' => 'Das Feld :attribute muss vorhanden sein, wenn :other gleich :value ist.', - 'present_unless' => 'Das Feld :attribute muss vorhanden sein, es sei denn, :other ist :value.', - 'present_with' => 'Das Feld :attribute muss vorhanden sein, wenn :values vorhanden ist.', - 'present_with_all' => 'Das Feld :attribute muss vorhanden sein, wenn :values vorhanden sind.', - 'prohibited' => ':Attribute ist unzulässig.', - 'prohibited_if' => ':Attribute ist unzulässig, wenn :other :value ist.', + 'present' => ':Attribute muss vorhanden sein.', + 'present_if' => 'Das Feld :attribute muss vorhanden sein, wenn :other gleich :value ist.', + 'present_unless' => 'Das Feld :attribute muss vorhanden sein, es sei denn, :other ist :value.', + 'present_with' => 'Das Feld :attribute muss vorhanden sein, wenn :values vorhanden ist.', + 'present_with_all' => 'Das Feld :attribute muss vorhanden sein, wenn :values vorhanden sind.', + 'prohibited' => ':Attribute ist unzulässig.', + 'prohibited_if' => ':Attribute ist unzulässig, wenn :other :value ist.', 'prohibited_if_accepted' => 'Das Feld :attribute ist unzulässig, wenn :other gewählt ist.', 'prohibited_if_declined' => 'Das Feld :attribute ist unzulässig, wenn :other abgelehnt ist.', - 'prohibited_unless' => ':Attribute ist unzulässig, wenn :other nicht :values ist.', - 'prohibits' => ':Attribute verbietet die Angabe von :other.', - 'regex' => ':Attribute Format ist ungültig.', - 'required' => ':Attribute muss ausgefüllt werden.', - 'required_array_keys' => 'Dieses Feld muss Einträge enthalten für: :values.', - 'required_if' => ':Attribute muss ausgefüllt werden, wenn :other den Wert :value hat.', - 'required_if_accepted' => ':Attribute muss ausgefüllt werden, wenn :other gewählt ist.', - 'required_if_declined' => 'Das Feld :attribute ist erforderlich, wenn :other abgelehnt wird.', - 'required_unless' => ':Attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.', - 'required_with' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', - 'required_with_all' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', - 'required_without' => ':Attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.', - 'required_without_all' => ':Attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.', - 'same' => ':Attribute und :other müssen übereinstimmen.', - 'size' => [ - 'array' => ':Attribute muss genau :size Elemente haben.', - 'file' => ':Attribute muss :size Kilobyte groß sein.', + 'prohibited_unless' => ':Attribute ist unzulässig, wenn :other nicht :values ist.', + 'prohibits' => ':Attribute verbietet die Angabe von :other.', + 'regex' => ':Attribute Format ist ungültig.', + 'required' => ':Attribute muss ausgefüllt werden.', + 'required_array_keys' => 'Dieses Feld muss Einträge enthalten für: :values.', + 'required_if' => ':Attribute muss ausgefüllt werden, wenn :other den Wert :value hat.', + 'required_if_accepted' => ':Attribute muss ausgefüllt werden, wenn :other gewählt ist.', + 'required_if_declined' => 'Das Feld :attribute ist erforderlich, wenn :other abgelehnt wird.', + 'required_unless' => ':Attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.', + 'required_with' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', + 'required_with_all' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', + 'required_without' => ':Attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.', + 'required_without_all' => ':Attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.', + 'same' => ':Attribute und :other müssen übereinstimmen.', + 'size' => [ + 'array' => ':Attribute muss genau :size Elemente haben.', + 'file' => ':Attribute muss :size Kilobyte groß sein.', 'numeric' => ':Attribute muss gleich :size sein.', - 'string' => ':Attribute muss :size Zeichen lang sein.', + 'string' => ':Attribute muss :size Zeichen lang sein.', ], - 'starts_with' => ':Attribute muss mit einem der folgenden Anfänge aufweisen: :values', - 'string' => ':Attribute muss ein String sein.', - 'timezone' => ':Attribute muss eine gültige Zeitzone sein.', - 'ulid' => 'Die :attribute muss eine gültige ULID sein.', - 'unique' => ':Attribute ist bereits vergeben.', - 'uploaded' => ':Attribute konnte nicht hochgeladen werden.', - 'uppercase' => ':Attribute muss in Großbuchstaben sein.', - 'url' => ':Attribute muss eine URL sein.', - 'uuid' => ':Attribute muss ein UUID sein.', - 'attributes' => [ - 'address' => 'Adresse', - 'affiliate_url' => 'Affiliate-URL', - 'age' => 'Alter', - 'amount' => 'Höhe', - 'announcement' => 'Bekanntmachung', - 'area' => 'Gebiet', - 'audience_prize' => 'Publikumspreis', - 'audience_winner' => 'Publikumsgewinner', - 'available' => 'Verfügbar', - 'birthday' => 'Geburtstag', - 'body' => 'Körper', - 'city' => 'Stadt', - 'color' => 'Farbe', - 'company' => 'Unternehmen', - 'compilation' => 'Zusammenstellung', - 'concept' => 'Konzept', - 'conditions' => 'Bedingungen', - 'content' => 'Inhalt', - 'contest' => 'Wettbewerb', - 'country' => 'Land', - 'cover' => 'Abdeckung', - 'created_at' => 'Erstellt am', - 'creator' => 'Ersteller', - 'currency' => 'Währung', - 'current_password' => 'Derzeitiges Passwort', - 'customer' => 'Kunde', - 'date' => 'Datum', - 'date_of_birth' => 'Geburtsdatum', - 'dates' => 'Termine', - 'day' => 'Tag', - 'deleted_at' => 'Gelöscht am', - 'description' => 'Beschreibung', - 'display_type' => 'Anzeigetyp', - 'district' => 'Bezirk', - 'duration' => 'Dauer', - 'email' => 'E-Mail-Adresse', - 'excerpt' => 'Auszug', - 'filter' => 'Filter', - 'finished_at' => 'fertig um', - 'first_name' => 'Vorname', - 'gender' => 'Geschlecht', - 'grand_prize' => 'Hauptpreis', - 'group' => 'Gruppe', - 'hour' => 'Stunde', - 'image' => 'Bild', - 'image_desktop' => 'Desktop-Bild', - 'image_main' => 'Hauptbild', - 'image_mobile' => 'mobiles Bild', - 'images' => 'Bilder', - 'is_audience_winner' => 'ist Publikumssieger', - 'is_hidden' => 'ist versteckt', - 'is_subscribed' => 'ist abonniert', - 'is_visible' => 'ist sichtbar', - 'is_winner' => 'ist Gewinner', - 'items' => 'Artikel', - 'key' => 'Schlüssel', - 'last_name' => 'Nachname', - 'lesson' => 'Lektion', - 'line_address_1' => 'Adresszeile 1', - 'line_address_2' => 'Adresszeile 2', - 'login' => 'Anmeldung', - 'message' => 'Nachricht', - 'middle_name' => 'Zweitname', - 'minute' => 'Minute', - 'mobile' => 'Handynummer', - 'month' => 'Monat', - 'name' => 'Name', - 'national_code' => 'Länderkennung', - 'number' => 'Nummer', - 'password' => 'Passwort', - 'password_confirmation' => 'Passwortbestätigung', - 'phone' => 'Telefonnummer', - 'photo' => 'Foto', - 'portfolio' => 'Portfolio', - 'postal_code' => 'Postleitzahl', - 'preview' => 'Vorschau', - 'price' => 'Preis', - 'product_id' => 'Produkt ID', - 'product_uid' => 'Produkt-UID', - 'product_uuid' => 'Produkt-UUID', - 'promo_code' => 'Aktionscode', - 'province' => 'Provinz', - 'quantity' => 'Menge', - 'reason' => 'Grund', + 'starts_with' => ':Attribute muss mit einem der folgenden Anfänge aufweisen: :values', + 'string' => ':Attribute muss ein String sein.', + 'timezone' => ':Attribute muss eine gültige Zeitzone sein.', + 'ulid' => 'Die :attribute muss eine gültige ULID sein.', + 'unique' => ':Attribute ist bereits vergeben.', + 'uploaded' => ':Attribute konnte nicht hochgeladen werden.', + 'uppercase' => ':Attribute muss in Großbuchstaben sein.', + 'url' => ':Attribute muss eine URL sein.', + 'uuid' => ':Attribute muss ein UUID sein.', + 'attributes' => [ + 'address' => 'Adresse', + 'affiliate_url' => 'Affiliate-URL', + 'age' => 'Alter', + 'amount' => 'Höhe', + 'announcement' => 'Bekanntmachung', + 'area' => 'Gebiet', + 'audience_prize' => 'Publikumspreis', + 'audience_winner' => 'Publikumsgewinner', + 'available' => 'Verfügbar', + 'birthday' => 'Geburtstag', + 'body' => 'Körper', + 'city' => 'Stadt', + 'color' => 'Farbe', + 'company' => 'Unternehmen', + 'compilation' => 'Zusammenstellung', + 'concept' => 'Konzept', + 'conditions' => 'Bedingungen', + 'content' => 'Inhalt', + 'contest' => 'Wettbewerb', + 'country' => 'Land', + 'cover' => 'Abdeckung', + 'created_at' => 'Erstellt am', + 'creator' => 'Ersteller', + 'currency' => 'Währung', + 'current_password' => 'Derzeitiges Passwort', + 'customer' => 'Kunde', + 'date' => 'Datum', + 'date_of_birth' => 'Geburtsdatum', + 'dates' => 'Termine', + 'day' => 'Tag', + 'deleted_at' => 'Gelöscht am', + 'description' => 'Beschreibung', + 'display_type' => 'Anzeigetyp', + 'district' => 'Bezirk', + 'duration' => 'Dauer', + 'email' => 'E-Mail-Adresse', + 'excerpt' => 'Auszug', + 'filter' => 'Filter', + 'finished_at' => 'fertig um', + 'first_name' => 'Vorname', + 'gender' => 'Geschlecht', + 'grand_prize' => 'Hauptpreis', + 'group' => 'Gruppe', + 'hour' => 'Stunde', + 'image' => 'Bild', + 'image_desktop' => 'Desktop-Bild', + 'image_main' => 'Hauptbild', + 'image_mobile' => 'mobiles Bild', + 'images' => 'Bilder', + 'is_audience_winner' => 'ist Publikumssieger', + 'is_hidden' => 'ist versteckt', + 'is_subscribed' => 'ist abonniert', + 'is_visible' => 'ist sichtbar', + 'is_winner' => 'ist Gewinner', + 'items' => 'Artikel', + 'key' => 'Schlüssel', + 'last_name' => 'Nachname', + 'lesson' => 'Lektion', + 'line_address_1' => 'Adresszeile 1', + 'line_address_2' => 'Adresszeile 2', + 'login' => 'Anmeldung', + 'message' => 'Nachricht', + 'middle_name' => 'Zweitname', + 'minute' => 'Minute', + 'mobile' => 'Handynummer', + 'month' => 'Monat', + 'name' => 'Name', + 'national_code' => 'Länderkennung', + 'number' => 'Nummer', + 'password' => 'Passwort', + 'password_confirmation' => 'Passwortbestätigung', + 'phone' => 'Telefonnummer', + 'photo' => 'Foto', + 'portfolio' => 'Portfolio', + 'postal_code' => 'Postleitzahl', + 'preview' => 'Vorschau', + 'price' => 'Preis', + 'product_id' => 'Produkt ID', + 'product_uid' => 'Produkt-UID', + 'product_uuid' => 'Produkt-UUID', + 'promo_code' => 'Aktionscode', + 'province' => 'Provinz', + 'quantity' => 'Menge', + 'reason' => 'Grund', 'recaptcha_response_field' => 'Captcha-Feld', - 'referee' => 'Schiedsrichter', - 'referees' => 'Schiedsrichter', - 'region' => 'Region', - 'reject_reason' => 'Ablehnungsgrund', - 'remember' => 'Erinnern', - 'restored_at' => 'Wiederhergestellt am', - 'result_text_under_image' => 'Ergebnistext unter Bild', - 'role' => 'Rolle', - 'rule' => 'Regel', - 'rules' => 'Regeln', - 'second' => 'Sekunde', - 'sex' => 'Geschlecht', - 'shipment' => 'Sendung', - 'short_text' => 'Kurzer Text', - 'size' => 'Größe', - 'skills' => 'Fähigkeiten', - 'slug' => 'Schnecke', - 'specialization' => 'Spezialisierung', - 'started_at' => 'fing an bei', - 'state' => 'Bundesland', - 'status' => 'Status', - 'street' => 'Straße', - 'student' => 'Schüler/Student', - 'subject' => 'Gegenstand', - 'tag' => 'Etikett', - 'tags' => 'Stichworte', - 'teacher' => 'Lehrer', - 'terms' => 'Bedingungen', - 'test_description' => 'Test Beschreibung', - 'test_locale' => 'Test Region', - 'test_name' => 'Testname', - 'text' => 'Text', - 'time' => 'Uhrzeit', - 'title' => 'Titel', - 'type' => 'Typ', - 'updated_at' => 'Aktualisiert am', - 'user' => 'Benutzer', - 'username' => 'Benutzername', - 'value' => 'Wert', - 'winner' => 'Gewinner', - 'work' => 'Arbeit', - 'year' => 'Jahr', + 'referee' => 'Schiedsrichter', + 'referees' => 'Schiedsrichter', + 'region' => 'Region', + 'reject_reason' => 'Ablehnungsgrund', + 'remember' => 'Erinnern', + 'restored_at' => 'Wiederhergestellt am', + 'result_text_under_image' => 'Ergebnistext unter Bild', + 'role' => 'Rolle', + 'rule' => 'Regel', + 'rules' => 'Regeln', + 'second' => 'Sekunde', + 'sex' => 'Geschlecht', + 'shipment' => 'Sendung', + 'short_text' => 'Kurzer Text', + 'size' => 'Größe', + 'skills' => 'Fähigkeiten', + 'slug' => 'Schnecke', + 'specialization' => 'Spezialisierung', + 'started_at' => 'fing an bei', + 'state' => 'Bundesland', + 'status' => 'Status', + 'street' => 'Straße', + 'student' => 'Schüler/Student', + 'subject' => 'Gegenstand', + 'tag' => 'Etikett', + 'tags' => 'Stichworte', + 'teacher' => 'Lehrer', + 'terms' => 'Bedingungen', + 'test_description' => 'Test Beschreibung', + 'test_locale' => 'Test Region', + 'test_name' => 'Testname', + 'text' => 'Text', + 'time' => 'Uhrzeit', + 'title' => 'Titel', + 'type' => 'Typ', + 'updated_at' => 'Aktualisiert am', + 'user' => 'Benutzer', + 'username' => 'Benutzername', + 'value' => 'Wert', + 'winner' => 'Gewinner', + 'work' => 'Arbeit', + 'year' => 'Jahr', ], ]; diff --git a/lang/en/actions.php b/lang/en/actions.php index 7ff2b68b..691a73da 100644 --- a/lang/en/actions.php +++ b/lang/en/actions.php @@ -3,117 +3,117 @@ declare(strict_types=1); return [ - 'accept' => 'Accept', - 'action' => 'Action', - 'actions' => 'Actions', - 'add' => 'Add', - 'admin' => 'Admin', - 'agree' => 'Agree', - 'archive' => 'Archive', - 'assign' => 'Assign', - 'associate' => 'Associate', - 'attach' => 'Attach', - 'browse' => 'Browse', - 'cancel' => 'Cancel', - 'choose' => 'Choose', - 'choose_file' => 'Choose File', - 'choose_image' => 'Choose Image', - 'click_to_copy' => 'Click to copy', - 'close' => 'Close', - 'collapse' => 'Collapse', - 'collapse_all' => 'Collapse All', - 'comment' => 'Comment', - 'confirm' => 'Confirm', - 'connect' => 'Connect', - 'create' => 'Create', - 'delete' => 'Delete', - 'detach' => 'Detach', - 'details' => 'Details', - 'disable' => 'Disable', - 'discard' => 'Discard', - 'done' => 'Done', - 'down' => 'Down', - 'duplicate' => 'Duplicate', - 'edit' => 'Edit', - 'enable' => 'Enable', - 'expand' => 'Expand', - 'expand_all' => 'Expand All', - 'explanation' => 'Explanation', - 'export' => 'Export', - 'file' => 'File', - 'files' => 'Files', - 'go_home' => 'Go Home', - 'hide' => 'Hide', - 'home' => 'Home', - 'image' => 'Image', - 'impersonate' => 'Impersonate', - 'impersonation' => 'Impersonation', - 'import' => 'Import', - 'introduction' => 'Introduction', - 'like' => 'Like', - 'load' => 'Load', - 'localize' => 'Localize', - 'log_in' => 'Log In', - 'log_out' => 'Log Out', - 'named' => [ - 'add' => 'Add :name', - 'choose' => 'Choose :name', - 'create' => 'Create :name', - 'delete' => 'Delete :name', + 'accept' => 'Accept', + 'action' => 'Action', + 'actions' => 'Actions', + 'add' => 'Add', + 'admin' => 'Admin', + 'agree' => 'Agree', + 'archive' => 'Archive', + 'assign' => 'Assign', + 'associate' => 'Associate', + 'attach' => 'Attach', + 'browse' => 'Browse', + 'cancel' => 'Cancel', + 'choose' => 'Choose', + 'choose_file' => 'Choose File', + 'choose_image' => 'Choose Image', + 'click_to_copy' => 'Click to copy', + 'close' => 'Close', + 'collapse' => 'Collapse', + 'collapse_all' => 'Collapse All', + 'comment' => 'Comment', + 'confirm' => 'Confirm', + 'connect' => 'Connect', + 'create' => 'Create', + 'delete' => 'Delete', + 'detach' => 'Detach', + 'details' => 'Details', + 'disable' => 'Disable', + 'discard' => 'Discard', + 'done' => 'Done', + 'down' => 'Down', + 'duplicate' => 'Duplicate', + 'edit' => 'Edit', + 'enable' => 'Enable', + 'expand' => 'Expand', + 'expand_all' => 'Expand All', + 'explanation' => 'Explanation', + 'export' => 'Export', + 'file' => 'File', + 'files' => 'Files', + 'go_home' => 'Go Home', + 'hide' => 'Hide', + 'home' => 'Home', + 'image' => 'Image', + 'impersonate' => 'Impersonate', + 'impersonation' => 'Impersonation', + 'import' => 'Import', + 'introduction' => 'Introduction', + 'like' => 'Like', + 'load' => 'Load', + 'localize' => 'Localize', + 'log_in' => 'Log In', + 'log_out' => 'Log Out', + 'named' => [ + 'add' => 'Add :name', + 'choose' => 'Choose :name', + 'create' => 'Create :name', + 'delete' => 'Delete :name', 'duplicate' => 'Duplicate :name', - 'edit' => 'Edit :name', - 'export' => 'Export :name', - 'hide' => 'Hide :name', - 'import' => 'Import :name', - 'new' => 'New :name', - 'restore' => 'Restore :name', - 'save' => 'Save :name', - 'search' => 'Search :name', - 'show' => 'Show :name', - 'update' => 'Update :name', - 'view' => 'View :name', + 'edit' => 'Edit :name', + 'export' => 'Export :name', + 'hide' => 'Hide :name', + 'import' => 'Import :name', + 'new' => 'New :name', + 'restore' => 'Restore :name', + 'save' => 'Save :name', + 'search' => 'Search :name', + 'show' => 'Show :name', + 'update' => 'Update :name', + 'view' => 'View :name', ], - 'new' => 'New', - 'no' => 'No', - 'open' => 'Open', - 'open_website' => 'Open on the website', - 'preview' => 'Preview', - 'price' => 'Price', - 'record' => 'Record', - 'restore' => 'Restore', - 'save' => 'Save', - 'save_and_close' => 'Save & Close', + 'new' => 'New', + 'no' => 'No', + 'open' => 'Open', + 'open_website' => 'Open on the website', + 'preview' => 'Preview', + 'price' => 'Price', + 'record' => 'Record', + 'restore' => 'Restore', + 'save' => 'Save', + 'save_and_close' => 'Save & Close', 'save_and_return' => 'Save & Return', - 'search' => 'Search', - 'select' => 'Select', - 'select_all' => 'Select All', - 'send' => 'Send', - 'settings' => 'Settings', - 'show' => 'Show', - 'show_all' => 'Show All', - 'sign_in' => 'Sign In', - 'solve' => 'Solve', - 'start' => 'Start', - 'stop' => 'Stop', - 'submit' => 'Submit', - 'subscribe' => 'Subscribe', - 'switch' => 'Switch', - 'switch_to_role' => 'Switch To Role', - 'tag' => 'Tag', - 'tags' => 'Tags', - 'target_link' => [ - 'blank' => 'Open in a new window', + 'search' => 'Search', + 'select' => 'Select', + 'select_all' => 'Select All', + 'send' => 'Send', + 'settings' => 'Settings', + 'show' => 'Show', + 'show_all' => 'Show All', + 'sign_in' => 'Sign In', + 'solve' => 'Solve', + 'start' => 'Start', + 'stop' => 'Stop', + 'submit' => 'Submit', + 'subscribe' => 'Subscribe', + 'switch' => 'Switch', + 'switch_to_role' => 'Switch To Role', + 'tag' => 'Tag', + 'tags' => 'Tags', + 'target_link' => [ + 'blank' => 'Open in a new window', 'parent' => 'Open in a parent frame', - 'self' => 'Open in a current window', - 'top' => 'Open in the topmost frame', + 'self' => 'Open in a current window', + 'top' => 'Open in the topmost frame', ], - 'translate' => 'Translate', - 'translate_it' => 'Translate It', - 'unpack' => 'Unpack', - 'unsubscribe' => 'Unsubscribe', - 'up' => 'Up', - 'update' => 'Update', - 'user' => 'User', - 'view' => 'View', - 'yes' => 'Yes', + 'translate' => 'Translate', + 'translate_it' => 'Translate It', + 'unpack' => 'Unpack', + 'unsubscribe' => 'Unsubscribe', + 'up' => 'Up', + 'update' => 'Update', + 'user' => 'User', + 'view' => 'View', + 'yes' => 'Yes', ]; diff --git a/lang/en/auth.php b/lang/en/auth.php index ad725d8b..220349a5 100644 --- a/lang/en/auth.php +++ b/lang/en/auth.php @@ -3,7 +3,7 @@ declare(strict_types=1); return [ - 'failed' => 'These credentials do not match our records.', + 'failed' => 'These credentials do not match our records.', 'password' => 'The provided password is incorrect.', 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', ]; diff --git a/lang/en/http-statuses.php b/lang/en/http-statuses.php index 3346f78c..f2488f41 100644 --- a/lang/en/http-statuses.php +++ b/lang/en/http-statuses.php @@ -3,82 +3,82 @@ declare(strict_types=1); return [ - '0' => 'Unknown Error', - '100' => 'Continue', - '101' => 'Switching Protocols', - '102' => 'Processing', - '200' => 'OK', - '201' => 'Created', - '202' => 'Accepted', - '203' => 'Non-Authoritative Information', - '204' => 'No Content', - '205' => 'Reset Content', - '206' => 'Partial Content', - '207' => 'Multi-Status', - '208' => 'Already Reported', - '226' => 'IM Used', - '300' => 'Multiple Choices', - '301' => 'Moved Permanently', - '302' => 'Found', - '303' => 'See Other', - '304' => 'Not Modified', - '305' => 'Use Proxy', - '307' => 'Temporary Redirect', - '308' => 'Permanent Redirect', - '400' => 'Bad Request', - '401' => 'Unauthorized', - '402' => 'Payment Required', - '403' => 'Forbidden', - '404' => 'Not Found', - '405' => 'Method Not Allowed', - '406' => 'Not Acceptable', - '407' => 'Proxy Authentication Required', - '408' => 'Request Timeout', - '409' => 'Conflict', - '410' => 'Gone', - '411' => 'Length Required', - '412' => 'Precondition Failed', - '413' => 'Payload Too Large', - '414' => 'URI Too Long', - '415' => 'Unsupported Media Type', - '416' => 'Range Not Satisfiable', - '417' => 'Expectation Failed', - '418' => 'I\'m a teapot', - '419' => 'Session Has Expired', - '421' => 'Misdirected Request', - '422' => 'Unprocessable Entity', - '423' => 'Locked', - '424' => 'Failed Dependency', - '425' => 'Too Early', - '426' => 'Upgrade Required', - '428' => 'Precondition Required', - '429' => 'Too Many Requests', - '431' => 'Request Header Fields Too Large', - '444' => 'Connection Closed Without Response', - '449' => 'Retry With', - '451' => 'Unavailable For Legal Reasons', - '499' => 'Client Closed Request', - '500' => 'Internal Server Error', - '501' => 'Not Implemented', - '502' => 'Bad Gateway', - '503' => 'Maintenance Mode', - '504' => 'Gateway Timeout', - '505' => 'HTTP Version Not Supported', - '506' => 'Variant Also Negotiates', - '507' => 'Insufficient Storage', - '508' => 'Loop Detected', - '509' => 'Bandwidth Limit Exceeded', - '510' => 'Not Extended', - '511' => 'Network Authentication Required', - '520' => 'Unknown Error', - '521' => 'Web Server is Down', - '522' => 'Connection Timed Out', - '523' => 'Origin Is Unreachable', - '524' => 'A Timeout Occurred', - '525' => 'SSL Handshake Failed', - '526' => 'Invalid SSL Certificate', - '527' => 'Railgun Error', - '598' => 'Network Read Timeout Error', - '599' => 'Network Connect Timeout Error', + '0' => 'Unknown Error', + '100' => 'Continue', + '101' => 'Switching Protocols', + '102' => 'Processing', + '200' => 'OK', + '201' => 'Created', + '202' => 'Accepted', + '203' => 'Non-Authoritative Information', + '204' => 'No Content', + '205' => 'Reset Content', + '206' => 'Partial Content', + '207' => 'Multi-Status', + '208' => 'Already Reported', + '226' => 'IM Used', + '300' => 'Multiple Choices', + '301' => 'Moved Permanently', + '302' => 'Found', + '303' => 'See Other', + '304' => 'Not Modified', + '305' => 'Use Proxy', + '307' => 'Temporary Redirect', + '308' => 'Permanent Redirect', + '400' => 'Bad Request', + '401' => 'Unauthorized', + '402' => 'Payment Required', + '403' => 'Forbidden', + '404' => 'Not Found', + '405' => 'Method Not Allowed', + '406' => 'Not Acceptable', + '407' => 'Proxy Authentication Required', + '408' => 'Request Timeout', + '409' => 'Conflict', + '410' => 'Gone', + '411' => 'Length Required', + '412' => 'Precondition Failed', + '413' => 'Payload Too Large', + '414' => 'URI Too Long', + '415' => 'Unsupported Media Type', + '416' => 'Range Not Satisfiable', + '417' => 'Expectation Failed', + '418' => 'I\'m a teapot', + '419' => 'Session Has Expired', + '421' => 'Misdirected Request', + '422' => 'Unprocessable Entity', + '423' => 'Locked', + '424' => 'Failed Dependency', + '425' => 'Too Early', + '426' => 'Upgrade Required', + '428' => 'Precondition Required', + '429' => 'Too Many Requests', + '431' => 'Request Header Fields Too Large', + '444' => 'Connection Closed Without Response', + '449' => 'Retry With', + '451' => 'Unavailable For Legal Reasons', + '499' => 'Client Closed Request', + '500' => 'Internal Server Error', + '501' => 'Not Implemented', + '502' => 'Bad Gateway', + '503' => 'Maintenance Mode', + '504' => 'Gateway Timeout', + '505' => 'HTTP Version Not Supported', + '506' => 'Variant Also Negotiates', + '507' => 'Insufficient Storage', + '508' => 'Loop Detected', + '509' => 'Bandwidth Limit Exceeded', + '510' => 'Not Extended', + '511' => 'Network Authentication Required', + '520' => 'Unknown Error', + '521' => 'Web Server is Down', + '522' => 'Connection Timed Out', + '523' => 'Origin Is Unreachable', + '524' => 'A Timeout Occurred', + '525' => 'SSL Handshake Failed', + '526' => 'Invalid SSL Certificate', + '527' => 'Railgun Error', + '598' => 'Network Read Timeout Error', + '599' => 'Network Connect Timeout Error', 'unknownError' => 'Unknown Error', ]; diff --git a/lang/en/pagination.php b/lang/en/pagination.php index f4ceddec..c4937125 100644 --- a/lang/en/pagination.php +++ b/lang/en/pagination.php @@ -3,6 +3,6 @@ declare(strict_types=1); return [ - 'next' => 'Next »', + 'next' => 'Next »', 'previous' => '« Previous', ]; diff --git a/lang/en/passwords.php b/lang/en/passwords.php index f3b65bab..1130b8d4 100644 --- a/lang/en/passwords.php +++ b/lang/en/passwords.php @@ -3,9 +3,9 @@ declare(strict_types=1); return [ - 'reset' => 'Your password has been reset.', - 'sent' => 'We have emailed your password reset link.', + '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.', + '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 78c17b9c..676c60b7 100644 --- a/lang/en/validation.php +++ b/lang/en/validation.php @@ -3,286 +3,286 @@ declare(strict_types=1); return [ - '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.', + '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.', + '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.', - 'encoding' => 'The :attribute field must be encoded in :encoding.', - '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.', + '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.', + 'encoding' => 'The :attribute field must be encoded in :encoding.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', + '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.', - 'ulid' => 'The :attribute field must be a valid ULID.', - '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.', - 'uuid' => 'The :attribute field must be a valid UUID.', - 'attributes' => [ - 'address' => 'address', - 'affiliate_url' => 'affiliate URL', - 'age' => 'age', - 'amount' => 'amount', - 'announcement' => 'announcement', - 'area' => 'area', - 'audience_prize' => 'audience prize', - 'audience_winner' => 'audience winner', - 'available' => 'available', - 'birthday' => 'birthday', - 'body' => 'body', - 'city' => 'city', - 'color' => 'color', - 'company' => 'company', - 'compilation' => 'compilation', - 'concept' => 'concept', - 'conditions' => 'conditions', - 'content' => 'content', - 'contest' => 'contest', - 'country' => 'country', - 'cover' => 'cover', - 'created_at' => 'created at', - 'creator' => 'creator', - 'currency' => 'currency', - 'current_password' => 'current password', - 'customer' => 'customer', - 'date' => 'date', - 'date_of_birth' => 'date of birth', - 'dates' => 'dates', - 'day' => 'day', - 'deleted_at' => 'deleted at', - 'description' => 'description', - 'display_type' => 'display type', - 'district' => 'district', - 'duration' => 'duration', - 'email' => 'email', - 'excerpt' => 'excerpt', - 'filter' => 'filter', - 'finished_at' => 'finished at', - 'first_name' => 'first name', - 'gender' => 'gender', - 'grand_prize' => 'grand prize', - 'group' => 'group', - 'hour' => 'hour', - 'image' => 'image', - 'image_desktop' => 'desktop image', - 'image_main' => 'main image', - 'image_mobile' => 'mobile image', - 'images' => 'images', - 'is_audience_winner' => 'is audience winner', - 'is_hidden' => 'is hidden', - 'is_subscribed' => 'is subscribed', - 'is_visible' => 'is visible', - 'is_winner' => 'is winner', - 'items' => 'items', - 'key' => 'key', - 'last_name' => 'last name', - 'lesson' => 'lesson', - 'line_address_1' => 'line address 1', - 'line_address_2' => 'line address 2', - 'login' => 'login', - 'message' => 'message', - 'middle_name' => 'middle name', - 'minute' => 'minute', - 'mobile' => 'mobile', - 'month' => 'month', - 'name' => 'name', - 'national_code' => 'national code', - 'number' => 'number', - 'password' => 'password', - 'password_confirmation' => 'password confirmation', - 'phone' => 'phone', - 'photo' => 'photo', - 'portfolio' => 'portfolio', - 'postal_code' => 'postal code', - 'preview' => 'preview', - 'price' => 'price', - 'product_id' => 'product ID', - 'product_uid' => 'product UID', - 'product_uuid' => 'product UUID', - 'promo_code' => 'promo code', - 'province' => 'province', - 'quantity' => 'quantity', - 'reason' => 'reason', + '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.', + 'ulid' => 'The :attribute field must be a valid ULID.', + '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.', + 'uuid' => 'The :attribute field must be a valid UUID.', + 'attributes' => [ + 'address' => 'address', + 'affiliate_url' => 'affiliate URL', + 'age' => 'age', + 'amount' => 'amount', + 'announcement' => 'announcement', + 'area' => 'area', + 'audience_prize' => 'audience prize', + 'audience_winner' => 'audience winner', + 'available' => 'available', + 'birthday' => 'birthday', + 'body' => 'body', + 'city' => 'city', + 'color' => 'color', + 'company' => 'company', + 'compilation' => 'compilation', + 'concept' => 'concept', + 'conditions' => 'conditions', + 'content' => 'content', + 'contest' => 'contest', + 'country' => 'country', + 'cover' => 'cover', + 'created_at' => 'created at', + 'creator' => 'creator', + 'currency' => 'currency', + 'current_password' => 'current password', + 'customer' => 'customer', + 'date' => 'date', + 'date_of_birth' => 'date of birth', + 'dates' => 'dates', + 'day' => 'day', + 'deleted_at' => 'deleted at', + 'description' => 'description', + 'display_type' => 'display type', + 'district' => 'district', + 'duration' => 'duration', + 'email' => 'email', + 'excerpt' => 'excerpt', + 'filter' => 'filter', + 'finished_at' => 'finished at', + 'first_name' => 'first name', + 'gender' => 'gender', + 'grand_prize' => 'grand prize', + 'group' => 'group', + 'hour' => 'hour', + 'image' => 'image', + 'image_desktop' => 'desktop image', + 'image_main' => 'main image', + 'image_mobile' => 'mobile image', + 'images' => 'images', + 'is_audience_winner' => 'is audience winner', + 'is_hidden' => 'is hidden', + 'is_subscribed' => 'is subscribed', + 'is_visible' => 'is visible', + 'is_winner' => 'is winner', + 'items' => 'items', + 'key' => 'key', + 'last_name' => 'last name', + 'lesson' => 'lesson', + 'line_address_1' => 'line address 1', + 'line_address_2' => 'line address 2', + 'login' => 'login', + 'message' => 'message', + 'middle_name' => 'middle name', + 'minute' => 'minute', + 'mobile' => 'mobile', + 'month' => 'month', + 'name' => 'name', + 'national_code' => 'national code', + 'number' => 'number', + 'password' => 'password', + 'password_confirmation' => 'password confirmation', + 'phone' => 'phone', + 'photo' => 'photo', + 'portfolio' => 'portfolio', + 'postal_code' => 'postal code', + 'preview' => 'preview', + 'price' => 'price', + 'product_id' => 'product ID', + 'product_uid' => 'product UID', + 'product_uuid' => 'product UUID', + 'promo_code' => 'promo code', + 'province' => 'province', + 'quantity' => 'quantity', + 'reason' => 'reason', 'recaptcha_response_field' => 'recaptcha response field', - 'referee' => 'referee', - 'referees' => 'referees', - 'region' => 'region', - 'reject_reason' => 'reject reason', - 'remember' => 'remember', - 'restored_at' => 'restored at', - 'result_text_under_image' => 'result text under image', - 'role' => 'role', - 'rule' => 'rule', - 'rules' => 'rules', - 'second' => 'second', - 'sex' => 'sex', - 'shipment' => 'shipment', - 'short_text' => 'short text', - 'size' => 'size', - 'skills' => 'skills', - 'slug' => 'slug', - 'specialization' => 'specialization', - 'started_at' => 'started at', - 'state' => 'state', - 'status' => 'status', - 'street' => 'street', - 'student' => 'student', - 'subject' => 'subject', - 'tag' => 'tag', - 'tags' => 'tags', - 'teacher' => 'teacher', - 'terms' => 'terms', - 'test_description' => 'test description', - 'test_locale' => 'test locale', - 'test_name' => 'test name', - 'text' => 'text', - 'time' => 'time', - 'title' => 'title', - 'type' => 'type', - 'updated_at' => 'updated at', - 'user' => 'user', - 'username' => 'username', - 'value' => 'value', - 'winner' => 'winner', - 'work' => 'work', - 'year' => 'year', + 'referee' => 'referee', + 'referees' => 'referees', + 'region' => 'region', + 'reject_reason' => 'reject reason', + 'remember' => 'remember', + 'restored_at' => 'restored at', + 'result_text_under_image' => 'result text under image', + 'role' => 'role', + 'rule' => 'rule', + 'rules' => 'rules', + 'second' => 'second', + 'sex' => 'sex', + 'shipment' => 'shipment', + 'short_text' => 'short text', + 'size' => 'size', + 'skills' => 'skills', + 'slug' => 'slug', + 'specialization' => 'specialization', + 'started_at' => 'started at', + 'state' => 'state', + 'status' => 'status', + 'street' => 'street', + 'student' => 'student', + 'subject' => 'subject', + 'tag' => 'tag', + 'tags' => 'tags', + 'teacher' => 'teacher', + 'terms' => 'terms', + 'test_description' => 'test description', + 'test_locale' => 'test locale', + 'test_name' => 'test name', + 'text' => 'text', + 'time' => 'time', + 'title' => 'title', + 'type' => 'type', + 'updated_at' => 'updated at', + 'user' => 'user', + 'username' => 'username', + 'value' => 'value', + 'winner' => 'winner', + 'work' => 'work', + 'year' => 'year', ], ]; diff --git a/lang/es/actions.php b/lang/es/actions.php index f709ddfe..6a0ebe31 100644 --- a/lang/es/actions.php +++ b/lang/es/actions.php @@ -3,117 +3,117 @@ declare(strict_types=1); return [ - 'accept' => 'Aceptar', - 'action' => 'Acción', - 'actions' => 'Acciones', - 'add' => 'Agregar', - 'admin' => 'Administrar', - 'agree' => 'Aceptar', - 'archive' => 'Archivar', - 'assign' => 'Asignar', - 'associate' => 'Asociar', - 'attach' => 'Adjuntar', - 'browse' => 'Navegar', - 'cancel' => 'Cancelar', - 'choose' => 'Elegir', - 'choose_file' => 'Elegir archivo', - 'choose_image' => 'Elegir Imagen', - 'click_to_copy' => 'Haga clic para copiar', - 'close' => 'Cerrar', - 'collapse' => 'Colapsar', - 'collapse_all' => 'Colapsar todo', - 'comment' => 'Comentar', - 'confirm' => 'Confirmar', - 'connect' => 'Conectar', - 'create' => 'Crear', - 'delete' => 'Borrar', - 'detach' => 'Desasociar', - 'details' => 'Detalles', - 'disable' => 'Desactivar', - 'discard' => 'Descartar', - 'done' => 'Hecho', - 'down' => 'Abajo', - 'duplicate' => 'Duplicar', - 'edit' => 'Editar', - 'enable' => 'Permitir', - 'expand' => 'Expandir', - 'expand_all' => 'Expandir todo', - 'explanation' => 'Explicación', - 'export' => 'Exportar', - 'file' => 'Archivo', - 'files' => 'Archivos', - 'go_home' => 'Ir a Inicio', - 'hide' => 'Ocultar', - 'home' => 'Inicio', - 'image' => 'Imagen', - 'impersonate' => 'Personificar', - 'impersonation' => 'Personificación', - 'import' => 'Importar', - 'introduction' => 'Introducción', - 'like' => 'Me gusta', - 'load' => 'Cargar', - 'localize' => 'Localizar', - 'log_in' => 'Acceder', - 'log_out' => 'Cerrar sesión', - 'named' => [ - 'add' => 'Agregar :name', - 'choose' => 'Elegir :name', - 'create' => 'Crear :name', - 'delete' => 'Eliminar :name', + 'accept' => 'Aceptar', + 'action' => 'Acción', + 'actions' => 'Acciones', + 'add' => 'Agregar', + 'admin' => 'Administrar', + 'agree' => 'Aceptar', + 'archive' => 'Archivar', + 'assign' => 'Asignar', + 'associate' => 'Asociar', + 'attach' => 'Adjuntar', + 'browse' => 'Navegar', + 'cancel' => 'Cancelar', + 'choose' => 'Elegir', + 'choose_file' => 'Elegir archivo', + 'choose_image' => 'Elegir Imagen', + 'click_to_copy' => 'Haga clic para copiar', + 'close' => 'Cerrar', + 'collapse' => 'Colapsar', + 'collapse_all' => 'Colapsar todo', + 'comment' => 'Comentar', + 'confirm' => 'Confirmar', + 'connect' => 'Conectar', + 'create' => 'Crear', + 'delete' => 'Borrar', + 'detach' => 'Desasociar', + 'details' => 'Detalles', + 'disable' => 'Desactivar', + 'discard' => 'Descartar', + 'done' => 'Hecho', + 'down' => 'Abajo', + 'duplicate' => 'Duplicar', + 'edit' => 'Editar', + 'enable' => 'Permitir', + 'expand' => 'Expandir', + 'expand_all' => 'Expandir todo', + 'explanation' => 'Explicación', + 'export' => 'Exportar', + 'file' => 'Archivo', + 'files' => 'Archivos', + 'go_home' => 'Ir a Inicio', + 'hide' => 'Ocultar', + 'home' => 'Inicio', + 'image' => 'Imagen', + 'impersonate' => 'Personificar', + 'impersonation' => 'Personificación', + 'import' => 'Importar', + 'introduction' => 'Introducción', + 'like' => 'Me gusta', + 'load' => 'Cargar', + 'localize' => 'Localizar', + 'log_in' => 'Acceder', + 'log_out' => 'Cerrar sesión', + 'named' => [ + 'add' => 'Agregar :name', + 'choose' => 'Elegir :name', + 'create' => 'Crear :name', + 'delete' => 'Eliminar :name', 'duplicate' => 'Duplicar :name', - 'edit' => 'Editar :name', - 'export' => 'Exportar :name', - 'hide' => 'Ocultar :name', - 'import' => 'Importar :name', - 'new' => 'Nuevo :name', - 'restore' => 'Restaurar :name', - 'save' => 'Guardar :name', - 'search' => 'Buscar :name', - 'show' => 'Mostrar :name', - 'update' => 'Actualizar :name', - 'view' => 'Ver :name', + 'edit' => 'Editar :name', + 'export' => 'Exportar :name', + 'hide' => 'Ocultar :name', + 'import' => 'Importar :name', + 'new' => 'Nuevo :name', + 'restore' => 'Restaurar :name', + 'save' => 'Guardar :name', + 'search' => 'Buscar :name', + 'show' => 'Mostrar :name', + 'update' => 'Actualizar :name', + 'view' => 'Ver :name', ], - 'new' => 'Nuevo', - 'no' => 'No', - 'open' => 'Abrir', - 'open_website' => 'Abrir en el sitio web', - 'preview' => 'Previsualizar', - 'price' => 'Precio', - 'record' => 'Registro', - 'restore' => 'Restaurar', - 'save' => 'Guardar', - 'save_and_close' => 'Guardar y cerrar', + 'new' => 'Nuevo', + 'no' => 'No', + 'open' => 'Abrir', + 'open_website' => 'Abrir en el sitio web', + 'preview' => 'Previsualizar', + 'price' => 'Precio', + 'record' => 'Registro', + 'restore' => 'Restaurar', + 'save' => 'Guardar', + 'save_and_close' => 'Guardar y cerrar', 'save_and_return' => 'Guardar y volver', - 'search' => 'Buscar', - 'select' => 'Seleccionar', - 'select_all' => 'Seleccionar todo', - 'send' => 'Enviar', - 'settings' => 'Ajustes', - 'show' => 'Mostrar', - 'show_all' => 'Mostrar todo', - 'sign_in' => 'Iniciar sesión', - 'solve' => 'Resolver', - 'start' => 'Comenzar', - 'stop' => 'Detener', - 'submit' => 'Enviar', - 'subscribe' => 'Suscribir', - 'switch' => 'Cambiar', - 'switch_to_role' => 'Cambiar de rol', - 'tag' => 'Etiqueta', - 'tags' => 'Etiquetas', - 'target_link' => [ - 'blank' => 'Abrir en una ventana nueva', + 'search' => 'Buscar', + 'select' => 'Seleccionar', + 'select_all' => 'Seleccionar todo', + 'send' => 'Enviar', + 'settings' => 'Ajustes', + 'show' => 'Mostrar', + 'show_all' => 'Mostrar todo', + 'sign_in' => 'Iniciar sesión', + 'solve' => 'Resolver', + 'start' => 'Comenzar', + 'stop' => 'Detener', + 'submit' => 'Enviar', + 'subscribe' => 'Suscribir', + 'switch' => 'Cambiar', + 'switch_to_role' => 'Cambiar de rol', + 'tag' => 'Etiqueta', + 'tags' => 'Etiquetas', + 'target_link' => [ + 'blank' => 'Abrir en una ventana nueva', 'parent' => 'Abrir en el marco principal', - 'self' => 'Abrir en la ventana actual', - 'top' => 'Abrir en el marco superior', + 'self' => 'Abrir en la ventana actual', + 'top' => 'Abrir en el marco superior', ], - 'translate' => 'Traducir', - 'translate_it' => 'Traducirlo', - 'unpack' => 'Desglosar', - 'unsubscribe' => 'Darse de baja', - 'up' => 'Arriba', - 'update' => 'Actualizar', - 'user' => 'Usuario', - 'view' => 'Ver', - 'yes' => 'Sí', + 'translate' => 'Traducir', + 'translate_it' => 'Traducirlo', + 'unpack' => 'Desglosar', + 'unsubscribe' => 'Darse de baja', + 'up' => 'Arriba', + 'update' => 'Actualizar', + 'user' => 'Usuario', + 'view' => 'Ver', + 'yes' => 'Sí', ]; diff --git a/lang/es/auth.php b/lang/es/auth.php index 888279b0..688b177e 100644 --- a/lang/es/auth.php +++ b/lang/es/auth.php @@ -3,7 +3,7 @@ declare(strict_types=1); return [ - 'failed' => 'Estas credenciales no coinciden con nuestros registros.', + 'failed' => 'Estas credenciales no coinciden con nuestros registros.', 'password' => 'La contraseña es incorrecta.', 'throttle' => 'Demasiados intentos de acceso. Por favor intente nuevamente en :seconds segundos.', ]; diff --git a/lang/es/http-statuses.php b/lang/es/http-statuses.php index 0548dab8..8b9837c1 100644 --- a/lang/es/http-statuses.php +++ b/lang/es/http-statuses.php @@ -3,82 +3,82 @@ declare(strict_types=1); return [ - '0' => 'Error desconocido', - '100' => 'Continuar', - '101' => 'Protocolos de conmutación', - '102' => 'Procesando', - '200' => 'DE ACUERDO', - '201' => 'Creado', - '202' => 'Aceptado', - '203' => 'Información no autorizada', - '204' => 'Sin contenido', - '205' => 'Restablecer contenido', - '206' => 'Contenido parcial', - '207' => 'Multiestado', - '208' => 'Ya Reportado', - '226' => 'IM usado', - '300' => 'Múltiples opciones', - '301' => 'Movido permanentemente', - '302' => 'Encontrado', - '303' => 'Ver otros', - '304' => 'No modificado', - '305' => 'Usa proxy', - '307' => 'Redirección temporal', - '308' => 'Redirección permanente', - '400' => 'Solicitud incorrecta', - '401' => 'No autorizado', - '402' => 'Pago requerido', - '403' => 'Prohibido', - '404' => 'No encontrado', - '405' => 'Método no permitido', - '406' => 'Inaceptable', - '407' => 'Se requiere autenticación proxy', - '408' => 'Solicitud de tiempo de espera', - '409' => 'Conflicto', - '410' => 'Recurso no disponible', - '411' => 'Longitud requerida', - '412' => 'Error de condición previa', - '413' => 'Solicitud demasiado grande', - '414' => 'URI demasiado largo', - '415' => 'Tipo de medio no admitido', - '416' => 'Rango no satisfactorio', - '417' => 'Expectativa fallida', - '418' => 'Soy una tetera', - '419' => 'La sesión ha expirado', - '421' => 'Solicitud mal dirigida', - '422' => 'Entidad no procesable', - '423' => 'Bloqueado', - '424' => 'Dependencia fallida', - '425' => 'Demasiado temprano', - '426' => 'Se requiere actualización', - '428' => 'Precondición requerida', - '429' => 'Demasiadas solicitudes', - '431' => 'Campos de encabezado de solicitud demasiado grandes', - '444' => 'Conexión cerrada sin respuesta', - '449' => 'Reintentar con', - '451' => 'No disponible por razones legales', - '499' => 'Solicitud cerrada del cliente', - '500' => 'Error interno del servidor', - '501' => 'No se ha implementado', - '502' => 'Mala puerta de enlace', - '503' => 'Modo de mantenimiento', - '504' => 'Tiempo de espera de puerta de enlace', - '505' => 'Versión HTTP no compatible', - '506' => 'Variante También Negocia', - '507' => 'Espacio insuficiente', - '508' => 'Bucle detectado', - '509' => 'Límite de ancho de banda excedido', - '510' => 'no extendido', - '511' => 'Se requiere autenticación de red', - '520' => 'Error desconocido', - '521' => 'El servidor web está caído', - '522' => 'Tiempo de conexión agotado', - '523' => 'El origen es inalcanzable', - '524' => 'Se produjo un tiempo de espera', - '525' => 'Protocolo de enlace SSL fallido', - '526' => 'Certificado SSL no válido', - '527' => 'Error de cañón de riel', - '598' => 'Error de tiempo de espera de lectura de red', - '599' => 'Error de tiempo de espera de conexión de red', + '0' => 'Error desconocido', + '100' => 'Continuar', + '101' => 'Protocolos de conmutación', + '102' => 'Procesando', + '200' => 'DE ACUERDO', + '201' => 'Creado', + '202' => 'Aceptado', + '203' => 'Información no autorizada', + '204' => 'Sin contenido', + '205' => 'Restablecer contenido', + '206' => 'Contenido parcial', + '207' => 'Multiestado', + '208' => 'Ya Reportado', + '226' => 'IM usado', + '300' => 'Múltiples opciones', + '301' => 'Movido permanentemente', + '302' => 'Encontrado', + '303' => 'Ver otros', + '304' => 'No modificado', + '305' => 'Usa proxy', + '307' => 'Redirección temporal', + '308' => 'Redirección permanente', + '400' => 'Solicitud incorrecta', + '401' => 'No autorizado', + '402' => 'Pago requerido', + '403' => 'Prohibido', + '404' => 'No encontrado', + '405' => 'Método no permitido', + '406' => 'Inaceptable', + '407' => 'Se requiere autenticación proxy', + '408' => 'Solicitud de tiempo de espera', + '409' => 'Conflicto', + '410' => 'Recurso no disponible', + '411' => 'Longitud requerida', + '412' => 'Error de condición previa', + '413' => 'Solicitud demasiado grande', + '414' => 'URI demasiado largo', + '415' => 'Tipo de medio no admitido', + '416' => 'Rango no satisfactorio', + '417' => 'Expectativa fallida', + '418' => 'Soy una tetera', + '419' => 'La sesión ha expirado', + '421' => 'Solicitud mal dirigida', + '422' => 'Entidad no procesable', + '423' => 'Bloqueado', + '424' => 'Dependencia fallida', + '425' => 'Demasiado temprano', + '426' => 'Se requiere actualización', + '428' => 'Precondición requerida', + '429' => 'Demasiadas solicitudes', + '431' => 'Campos de encabezado de solicitud demasiado grandes', + '444' => 'Conexión cerrada sin respuesta', + '449' => 'Reintentar con', + '451' => 'No disponible por razones legales', + '499' => 'Solicitud cerrada del cliente', + '500' => 'Error interno del servidor', + '501' => 'No se ha implementado', + '502' => 'Mala puerta de enlace', + '503' => 'Modo de mantenimiento', + '504' => 'Tiempo de espera de puerta de enlace', + '505' => 'Versión HTTP no compatible', + '506' => 'Variante También Negocia', + '507' => 'Espacio insuficiente', + '508' => 'Bucle detectado', + '509' => 'Límite de ancho de banda excedido', + '510' => 'no extendido', + '511' => 'Se requiere autenticación de red', + '520' => 'Error desconocido', + '521' => 'El servidor web está caído', + '522' => 'Tiempo de conexión agotado', + '523' => 'El origen es inalcanzable', + '524' => 'Se produjo un tiempo de espera', + '525' => 'Protocolo de enlace SSL fallido', + '526' => 'Certificado SSL no válido', + '527' => 'Error de cañón de riel', + '598' => 'Error de tiempo de espera de lectura de red', + '599' => 'Error de tiempo de espera de conexión de red', 'unknownError' => 'Error desconocido', ]; diff --git a/lang/es/pagination.php b/lang/es/pagination.php index 03816a38..e047f940 100644 --- a/lang/es/pagination.php +++ b/lang/es/pagination.php @@ -3,6 +3,6 @@ declare(strict_types=1); return [ - 'next' => 'Siguiente »', + 'next' => 'Siguiente »', 'previous' => '« Anterior', ]; diff --git a/lang/es/passwords.php b/lang/es/passwords.php index 75b5e89c..3f50330b 100644 --- a/lang/es/passwords.php +++ b/lang/es/passwords.php @@ -3,9 +3,9 @@ declare(strict_types=1); return [ - 'reset' => 'Su contraseña ha sido restablecida.', - 'sent' => 'Le hemos enviado por correo electrónico el enlace para restablecer su contraseña.', + 'reset' => 'Su contraseña ha sido restablecida.', + 'sent' => 'Le hemos enviado por correo electrónico el enlace para restablecer su contraseña.', 'throttled' => 'Por favor espere antes de intentar de nuevo.', - 'token' => 'El token de restablecimiento de contraseña es inválido.', - 'user' => 'No encontramos ningún usuario con ese correo electrónico.', + 'token' => 'El token de restablecimiento de contraseña es inválido.', + 'user' => 'No encontramos ningún usuario con ese correo electrónico.', ]; diff --git a/lang/es/validation.php b/lang/es/validation.php index ebda0430..0ecbe3f3 100644 --- a/lang/es/validation.php +++ b/lang/es/validation.php @@ -3,286 +3,286 @@ declare(strict_types=1); return [ - 'accepted' => 'El campo :attribute debe ser aceptado.', - 'accepted_if' => 'El campo :attribute debe ser aceptado cuando :other sea :value.', - 'active_url' => 'El campo :attribute debe ser una URL válida.', - 'after' => 'El campo :attribute debe ser una fecha posterior a :date.', - 'after_or_equal' => 'El campo :attribute debe ser una fecha posterior o igual a :date.', - 'alpha' => 'El campo :attribute sólo debe contener letras.', - 'alpha_dash' => 'El campo :attribute sólo debe contener letras, números, guiones y guiones bajos.', - 'alpha_num' => 'El campo :attribute sólo debe contener letras y números.', - 'any_of' => 'El campo :attribute no es válido.', - 'array' => 'El campo :attribute debe ser un conjunto.', - 'ascii' => 'El campo :attribute solo debe contener caracteres alfanuméricos y símbolos de un solo byte.', - 'before' => 'El campo :attribute debe ser una fecha anterior a :date.', - 'before_or_equal' => 'El campo :attribute debe ser una fecha anterior o igual a :date.', - 'between' => [ - 'array' => 'El campo :attribute tiene que tener entre :min - :max elementos.', - 'file' => 'El campo :attribute debe pesar entre :min - :max kilobytes.', + 'accepted' => 'El campo :attribute debe ser aceptado.', + 'accepted_if' => 'El campo :attribute debe ser aceptado cuando :other sea :value.', + 'active_url' => 'El campo :attribute debe ser una URL válida.', + 'after' => 'El campo :attribute debe ser una fecha posterior a :date.', + 'after_or_equal' => 'El campo :attribute debe ser una fecha posterior o igual a :date.', + 'alpha' => 'El campo :attribute sólo debe contener letras.', + 'alpha_dash' => 'El campo :attribute sólo debe contener letras, números, guiones y guiones bajos.', + 'alpha_num' => 'El campo :attribute sólo debe contener letras y números.', + 'any_of' => 'El campo :attribute no es válido.', + 'array' => 'El campo :attribute debe ser un conjunto.', + 'ascii' => 'El campo :attribute solo debe contener caracteres alfanuméricos y símbolos de un solo byte.', + 'before' => 'El campo :attribute debe ser una fecha anterior a :date.', + 'before_or_equal' => 'El campo :attribute debe ser una fecha anterior o igual a :date.', + 'between' => [ + 'array' => 'El campo :attribute tiene que tener entre :min - :max elementos.', + 'file' => 'El campo :attribute debe pesar entre :min - :max kilobytes.', 'numeric' => 'El campo :attribute tiene que estar entre :min - :max.', - 'string' => 'El campo :attribute tiene que tener entre :min - :max caracteres.', + 'string' => 'El campo :attribute tiene que tener entre :min - :max caracteres.', ], - 'boolean' => 'El campo :attribute debe tener un valor verdadero o falso.', - 'can' => 'El campo :attribute contiene un valor no autorizado.', - 'confirmed' => 'La confirmación de :attribute no coincide.', - 'contains' => 'Al campo :attribute le falta un valor obligatorio.', - 'current_password' => 'La contraseña es incorrecta.', - 'date' => 'El campo :attribute debe ser una fecha válida.', - 'date_equals' => 'El campo :attribute debe ser una fecha igual a :date.', - 'date_format' => 'El campo :attribute debe coincidir con el formato :format.', - 'decimal' => 'El campo :attribute debe tener :decimal cifras decimales.', - 'declined' => 'El campo :attribute debe ser rechazado.', - 'declined_if' => 'El campo :attribute debe ser rechazado cuando :other sea :value.', - 'different' => 'El campo :attribute y :other deben ser diferentes.', - 'digits' => 'El campo :attribute debe tener :digits dígitos.', - 'digits_between' => 'El campo :attribute debe tener entre :min y :max dígitos.', - 'dimensions' => 'El campo :attribute tiene dimensiones de imagen no válidas.', - 'distinct' => 'El campo :attribute contiene un valor duplicado.', - 'doesnt_contain' => 'El campo :attribute no debe contener ninguno de los siguientes valores: :values.', - 'doesnt_end_with' => 'El campo :attribute no debe finalizar con uno de los siguientes: :values.', - 'doesnt_start_with' => 'El campo :attribute no debe comenzar con uno de los siguientes: :values.', - 'email' => 'El campo :attribute no es un correo válido.', - 'encoding' => 'El campo :attribute debe estar codificado en :encoding.', - 'ends_with' => 'El campo :attribute debe finalizar con uno de los siguientes valores: :values', - 'enum' => 'El campo :attribute no está en la lista de valores permitidos.', - 'exists' => 'El campo :attribute no existe.', - 'extensions' => 'El campo :attribute debe tener una de las siguientes extensiones: :values.', - 'file' => 'El campo :attribute debe ser un archivo.', - 'filled' => 'El campo :attribute es obligatorio.', - 'gt' => [ - 'array' => 'El campo :attribute debe tener más de :value elementos.', - 'file' => 'El campo :attribute debe tener más de :value kilobytes.', + 'boolean' => 'El campo :attribute debe tener un valor verdadero o falso.', + 'can' => 'El campo :attribute contiene un valor no autorizado.', + 'confirmed' => 'La confirmación de :attribute no coincide.', + 'contains' => 'Al campo :attribute le falta un valor obligatorio.', + 'current_password' => 'La contraseña es incorrecta.', + 'date' => 'El campo :attribute debe ser una fecha válida.', + 'date_equals' => 'El campo :attribute debe ser una fecha igual a :date.', + 'date_format' => 'El campo :attribute debe coincidir con el formato :format.', + 'decimal' => 'El campo :attribute debe tener :decimal cifras decimales.', + 'declined' => 'El campo :attribute debe ser rechazado.', + 'declined_if' => 'El campo :attribute debe ser rechazado cuando :other sea :value.', + 'different' => 'El campo :attribute y :other deben ser diferentes.', + 'digits' => 'El campo :attribute debe tener :digits dígitos.', + 'digits_between' => 'El campo :attribute debe tener entre :min y :max dígitos.', + 'dimensions' => 'El campo :attribute tiene dimensiones de imagen no válidas.', + 'distinct' => 'El campo :attribute contiene un valor duplicado.', + 'doesnt_contain' => 'El campo :attribute no debe contener ninguno de los siguientes valores: :values.', + 'doesnt_end_with' => 'El campo :attribute no debe finalizar con uno de los siguientes: :values.', + 'doesnt_start_with' => 'El campo :attribute no debe comenzar con uno de los siguientes: :values.', + 'email' => 'El campo :attribute no es un correo válido.', + 'encoding' => 'El campo :attribute debe estar codificado en :encoding.', + 'ends_with' => 'El campo :attribute debe finalizar con uno de los siguientes valores: :values', + 'enum' => 'El campo :attribute no está en la lista de valores permitidos.', + 'exists' => 'El campo :attribute no existe.', + 'extensions' => 'El campo :attribute debe tener una de las siguientes extensiones: :values.', + 'file' => 'El campo :attribute debe ser un archivo.', + 'filled' => 'El campo :attribute es obligatorio.', + 'gt' => [ + 'array' => 'El campo :attribute debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe tener más de :value kilobytes.', 'numeric' => 'El campo :attribute debe ser mayor que :value.', - 'string' => 'El campo :attribute debe tener más de :value caracteres.', + 'string' => 'El campo :attribute debe tener más de :value caracteres.', ], - 'gte' => [ - 'array' => 'El campo :attribute debe tener como mínimo :value elementos.', - 'file' => 'El campo :attribute debe tener como mínimo :value kilobytes.', + 'gte' => [ + 'array' => 'El campo :attribute debe tener como mínimo :value elementos.', + 'file' => 'El campo :attribute debe tener como mínimo :value kilobytes.', 'numeric' => 'El campo :attribute debe ser como mínimo :value.', - 'string' => 'El campo :attribute debe tener como mínimo :value caracteres.', + 'string' => 'El campo :attribute debe tener como mínimo :value caracteres.', ], - 'hex_color' => 'El campo :attribute debe tener un color hexadecimal válido.', - 'image' => 'El campo :attribute debe ser una imagen.', - 'in' => 'El campo :attribute no está en la lista de valores permitidos.', - 'in_array' => 'El campo :attribute debe existir en :other.', - 'in_array_keys' => 'El campo :attribute debe contener al menos una de las siguientes claves: :values.', - 'integer' => 'El campo :attribute debe ser un número entero.', - 'ip' => 'El campo :attribute debe ser una dirección IP válida.', - 'ipv4' => 'El campo :attribute debe ser una dirección IPv4 válida.', - 'ipv6' => 'El campo :attribute debe ser una dirección IPv6 válida.', - 'json' => 'El campo :attribute debe ser una cadena JSON válida.', - 'list' => 'El campo :attribute debe ser una lista.', - 'lowercase' => 'El campo :attribute debe estar en minúscula.', - 'lt' => [ - 'array' => 'El campo :attribute debe tener menos de :value elementos.', - 'file' => 'El campo :attribute debe tener menos de :value kilobytes.', + 'hex_color' => 'El campo :attribute debe tener un color hexadecimal válido.', + 'image' => 'El campo :attribute debe ser una imagen.', + 'in' => 'El campo :attribute no está en la lista de valores permitidos.', + 'in_array' => 'El campo :attribute debe existir en :other.', + 'in_array_keys' => 'El campo :attribute debe contener al menos una de las siguientes claves: :values.', + 'integer' => 'El campo :attribute debe ser un número entero.', + 'ip' => 'El campo :attribute debe ser una dirección IP válida.', + 'ipv4' => 'El campo :attribute debe ser una dirección IPv4 válida.', + 'ipv6' => 'El campo :attribute debe ser una dirección IPv6 válida.', + 'json' => 'El campo :attribute debe ser una cadena JSON válida.', + 'list' => 'El campo :attribute debe ser una lista.', + 'lowercase' => 'El campo :attribute debe estar en minúscula.', + 'lt' => [ + 'array' => 'El campo :attribute debe tener menos de :value elementos.', + 'file' => 'El campo :attribute debe tener menos de :value kilobytes.', 'numeric' => 'El campo :attribute debe ser menor que :value.', - 'string' => 'El campo :attribute debe tener menos de :value caracteres.', + 'string' => 'El campo :attribute debe tener menos de :value caracteres.', ], - 'lte' => [ - 'array' => 'El campo :attribute debe tener como máximo :value elementos.', - 'file' => 'El campo :attribute debe tener como máximo :value kilobytes.', + 'lte' => [ + 'array' => 'El campo :attribute debe tener como máximo :value elementos.', + 'file' => 'El campo :attribute debe tener como máximo :value kilobytes.', 'numeric' => 'El campo :attribute debe ser como máximo :value.', - 'string' => 'El campo :attribute debe tener como máximo :value caracteres.', + 'string' => 'El campo :attribute debe tener como máximo :value caracteres.', ], - 'mac_address' => 'El campo :attribute debe ser una dirección MAC válida.', - 'max' => [ - 'array' => 'El campo :attribute no debe tener más de :max elementos.', - 'file' => 'El campo :attribute no debe ser mayor que :max kilobytes.', + 'mac_address' => 'El campo :attribute debe ser una dirección MAC válida.', + 'max' => [ + 'array' => 'El campo :attribute no debe tener más de :max elementos.', + 'file' => 'El campo :attribute no debe ser mayor que :max kilobytes.', 'numeric' => 'El campo :attribute no debe ser mayor que :max.', - 'string' => 'El campo :attribute no debe ser mayor que :max caracteres.', + 'string' => 'El campo :attribute no debe ser mayor que :max caracteres.', ], - 'max_digits' => 'El campo :attribute no debe tener más de :max dígitos.', - 'mimes' => 'El campo :attribute debe ser un archivo con formato: :values.', - 'mimetypes' => 'El campo :attribute debe ser un archivo con formato: :values.', - 'min' => [ - 'array' => 'El campo :attribute debe tener al menos :min elementos.', - 'file' => 'El tamaño de :attribute debe ser de al menos :min kilobytes.', + 'max_digits' => 'El campo :attribute no debe tener más de :max dígitos.', + 'mimes' => 'El campo :attribute debe ser un archivo con formato: :values.', + 'mimetypes' => 'El campo :attribute debe ser un archivo con formato: :values.', + 'min' => [ + 'array' => 'El campo :attribute debe tener al menos :min elementos.', + 'file' => 'El tamaño de :attribute debe ser de al menos :min kilobytes.', 'numeric' => 'El tamaño de :attribute debe ser de al menos :min.', - 'string' => 'El campo :attribute debe contener al menos :min caracteres.', + 'string' => 'El campo :attribute debe contener al menos :min caracteres.', ], - 'min_digits' => 'El campo :attribute debe tener al menos :min dígitos.', - 'missing' => 'El campo :attribute no debe estar presente.', - 'missing_if' => 'El campo :attribute no debe estar presente cuando :other sea :value.', - 'missing_unless' => 'El campo :attribute no debe estar presente a menos que :other sea :value.', - 'missing_with' => 'El campo :attribute no debe estar presente si alguno de los campos :values está presente.', - 'missing_with_all' => 'El campo :attribute no debe estar presente cuando los campos :values estén presentes.', - 'multiple_of' => 'El campo :attribute debe ser múltiplo de :value', - 'not_in' => 'El campo :attribute no debe estar en la lista.', - 'not_regex' => 'El formato del campo :attribute no es válido.', - 'numeric' => 'El campo :attribute debe ser numérico.', - 'password' => [ - 'letters' => 'La :attribute debe contener al menos una letra.', - 'mixed' => 'La :attribute debe contener al menos una letra mayúscula y una minúscula.', - 'numbers' => 'La :attribute debe contener al menos un número.', - 'symbols' => 'La :attribute debe contener al menos un símbolo.', + 'min_digits' => 'El campo :attribute debe tener al menos :min dígitos.', + 'missing' => 'El campo :attribute no debe estar presente.', + 'missing_if' => 'El campo :attribute no debe estar presente cuando :other sea :value.', + 'missing_unless' => 'El campo :attribute no debe estar presente a menos que :other sea :value.', + 'missing_with' => 'El campo :attribute no debe estar presente si alguno de los campos :values está presente.', + 'missing_with_all' => 'El campo :attribute no debe estar presente cuando los campos :values estén presentes.', + 'multiple_of' => 'El campo :attribute debe ser múltiplo de :value', + 'not_in' => 'El campo :attribute no debe estar en la lista.', + 'not_regex' => 'El formato del campo :attribute no es válido.', + 'numeric' => 'El campo :attribute debe ser numérico.', + 'password' => [ + 'letters' => 'La :attribute debe contener al menos una letra.', + 'mixed' => 'La :attribute debe contener al menos una letra mayúscula y una minúscula.', + 'numbers' => 'La :attribute debe contener al menos un número.', + 'symbols' => 'La :attribute debe contener al menos un símbolo.', 'uncompromised' => 'La :attribute proporcionada se ha visto comprometida en una filtración de datos (data leak). Elija una :attribute diferente.', ], - 'present' => 'El campo :attribute debe estar presente.', - 'present_if' => 'El campo :attribute debe estar presente cuando :other es :value.', - 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', - 'present_with' => 'El campo :attribute debe estar presente cuando :values esté presente.', - 'present_with_all' => 'El campo :attribute debe estar presente cuando :values estén presentes.', - 'prohibited' => 'El campo :attribute está prohibido.', - 'prohibited_if' => 'El campo :attribute está prohibido cuando :other es :value.', + 'present' => 'El campo :attribute debe estar presente.', + 'present_if' => 'El campo :attribute debe estar presente cuando :other es :value.', + 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', + 'present_with' => 'El campo :attribute debe estar presente cuando :values esté presente.', + 'present_with_all' => 'El campo :attribute debe estar presente cuando :values estén presentes.', + 'prohibited' => 'El campo :attribute está prohibido.', + 'prohibited_if' => 'El campo :attribute está prohibido cuando :other es :value.', 'prohibited_if_accepted' => 'El campo :attribute está prohibido cuando se acepta :other.', 'prohibited_if_declined' => 'El campo :attribute está prohibido cuando se rechaza :other.', - 'prohibited_unless' => 'El campo :attribute está prohibido a menos que :other sea :values.', - 'prohibits' => 'El campo :attribute prohibe que :other esté presente.', - 'regex' => 'El formato del campo :attribute no es válido.', - 'required' => 'El campo :attribute es obligatorio.', - 'required_array_keys' => 'El campo :attribute debe contener entradas para: :values.', - 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', - 'required_if_accepted' => 'El campo :attribute es obligatorio si :other es aceptado.', - 'required_if_declined' => 'El campo :attribute es obligatorio si :other es rechazado.', - 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', - 'required_with' => 'El campo :attribute es obligatorio cuando :values está presente.', - 'required_with_all' => 'El campo :attribute es obligatorio cuando :values están presentes.', - 'required_without' => 'El campo :attribute es obligatorio cuando :values no está presente.', - 'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values está presente.', - 'same' => 'Los campos :attribute y :other deben coincidir.', - 'size' => [ - 'array' => 'El campo :attribute debe contener :size elementos.', - 'file' => 'El tamaño de :attribute debe ser :size kilobytes.', + 'prohibited_unless' => 'El campo :attribute está prohibido a menos que :other sea :values.', + 'prohibits' => 'El campo :attribute prohibe que :other esté presente.', + 'regex' => 'El formato del campo :attribute no es válido.', + 'required' => 'El campo :attribute es obligatorio.', + 'required_array_keys' => 'El campo :attribute debe contener entradas para: :values.', + 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', + 'required_if_accepted' => 'El campo :attribute es obligatorio si :other es aceptado.', + 'required_if_declined' => 'El campo :attribute es obligatorio si :other es rechazado.', + 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', + 'required_with' => 'El campo :attribute es obligatorio cuando :values está presente.', + 'required_with_all' => 'El campo :attribute es obligatorio cuando :values están presentes.', + 'required_without' => 'El campo :attribute es obligatorio cuando :values no está presente.', + 'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values está presente.', + 'same' => 'Los campos :attribute y :other deben coincidir.', + 'size' => [ + 'array' => 'El campo :attribute debe contener :size elementos.', + 'file' => 'El tamaño de :attribute debe ser :size kilobytes.', 'numeric' => 'El tamaño de :attribute debe ser :size.', - 'string' => 'El campo :attribute debe contener :size caracteres.', + 'string' => 'El campo :attribute debe contener :size caracteres.', ], - 'starts_with' => 'El campo :attribute debe comenzar con uno de los siguientes valores: :values', - 'string' => 'El campo :attribute debe ser una cadena de caracteres.', - 'timezone' => 'El campo :attribute debe ser una zona horaria válida.', - 'ulid' => 'El campo :attribute debe ser un ULID válido.', - 'unique' => 'El campo :attribute ya ha sido registrado.', - 'uploaded' => 'Subir :attribute ha fallado.', - 'uppercase' => 'El campo :attribute debe estar en mayúscula.', - 'url' => 'El campo :attribute debe ser una URL válida.', - 'uuid' => 'El campo :attribute debe ser un UUID válido.', - 'attributes' => [ - 'address' => 'dirección', - 'affiliate_url' => 'URL de afiliado', - 'age' => 'edad', - 'amount' => 'cantidad', - 'announcement' => 'anuncio', - 'area' => 'área', - 'audience_prize' => 'premio del público', - 'audience_winner' => 'ganador del público', - 'available' => 'disponible', - 'birthday' => 'cumpleaños', - 'body' => 'contenido', - 'city' => 'ciudad', - 'color' => 'color', - 'company' => 'compañía', - 'compilation' => 'compilación', - 'concept' => 'concepto', - 'conditions' => 'condiciones', - 'content' => 'contenido', - 'contest' => 'concurso', - 'country' => 'país', - 'cover' => 'portada', - 'created_at' => 'creado el', - 'creator' => 'creador', - 'currency' => 'moneda', - 'current_password' => 'contraseña actual', - 'customer' => 'cliente', - 'date' => 'fecha', - 'date_of_birth' => 'fecha de nacimiento', - 'dates' => 'fechas', - 'day' => 'día', - 'deleted_at' => 'eliminado el', - 'description' => 'descripción', - 'display_type' => 'tipo de visualización', - 'district' => 'distrito', - 'duration' => 'duración', - 'email' => 'correo electrónico', - 'excerpt' => 'extracto', - 'filter' => 'filtro', - 'finished_at' => 'terminado el', - 'first_name' => 'nombre', - 'gender' => 'género', - 'grand_prize' => 'gran Premio', - 'group' => 'grupo', - 'hour' => 'hora', - 'image' => 'imagen', - 'image_desktop' => 'imagen de escritorio', - 'image_main' => 'imagen principal', - 'image_mobile' => 'imagen móvil', - 'images' => 'imágenes', - 'is_audience_winner' => 'es ganador de audiencia', - 'is_hidden' => 'está oculto', - 'is_subscribed' => 'está suscrito', - 'is_visible' => 'es visible', - 'is_winner' => 'es ganador', - 'items' => 'elementos', - 'key' => 'clave', - 'last_name' => 'apellidos', - 'lesson' => 'lección', - 'line_address_1' => 'línea de dirección 1', - 'line_address_2' => 'línea de dirección 2', - 'login' => 'acceso', - 'message' => 'mensaje', - 'middle_name' => 'segundo nombre', - 'minute' => 'minuto', - 'mobile' => 'móvil', - 'month' => 'mes', - 'name' => 'nombre', - 'national_code' => 'código nacional', - 'number' => 'número', - 'password' => 'contraseña', - 'password_confirmation' => 'confirmación de la contraseña', - 'phone' => 'teléfono', - 'photo' => 'foto', - 'portfolio' => 'portafolio', - 'postal_code' => 'código postal', - 'preview' => 'vista preliminar', - 'price' => 'precio', - 'product_id' => 'ID del producto', - 'product_uid' => 'UID del producto', - 'product_uuid' => 'UUID del producto', - 'promo_code' => 'código promocional', - 'province' => 'provincia', - 'quantity' => 'cantidad', - 'reason' => 'razón', + 'starts_with' => 'El campo :attribute debe comenzar con uno de los siguientes valores: :values', + 'string' => 'El campo :attribute debe ser una cadena de caracteres.', + 'timezone' => 'El campo :attribute debe ser una zona horaria válida.', + 'ulid' => 'El campo :attribute debe ser un ULID válido.', + 'unique' => 'El campo :attribute ya ha sido registrado.', + 'uploaded' => 'Subir :attribute ha fallado.', + 'uppercase' => 'El campo :attribute debe estar en mayúscula.', + 'url' => 'El campo :attribute debe ser una URL válida.', + 'uuid' => 'El campo :attribute debe ser un UUID válido.', + 'attributes' => [ + 'address' => 'dirección', + 'affiliate_url' => 'URL de afiliado', + 'age' => 'edad', + 'amount' => 'cantidad', + 'announcement' => 'anuncio', + 'area' => 'área', + 'audience_prize' => 'premio del público', + 'audience_winner' => 'ganador del público', + 'available' => 'disponible', + 'birthday' => 'cumpleaños', + 'body' => 'contenido', + 'city' => 'ciudad', + 'color' => 'color', + 'company' => 'compañía', + 'compilation' => 'compilación', + 'concept' => 'concepto', + 'conditions' => 'condiciones', + 'content' => 'contenido', + 'contest' => 'concurso', + 'country' => 'país', + 'cover' => 'portada', + 'created_at' => 'creado el', + 'creator' => 'creador', + 'currency' => 'moneda', + 'current_password' => 'contraseña actual', + 'customer' => 'cliente', + 'date' => 'fecha', + 'date_of_birth' => 'fecha de nacimiento', + 'dates' => 'fechas', + 'day' => 'día', + 'deleted_at' => 'eliminado el', + 'description' => 'descripción', + 'display_type' => 'tipo de visualización', + 'district' => 'distrito', + 'duration' => 'duración', + 'email' => 'correo electrónico', + 'excerpt' => 'extracto', + 'filter' => 'filtro', + 'finished_at' => 'terminado el', + 'first_name' => 'nombre', + 'gender' => 'género', + 'grand_prize' => 'gran Premio', + 'group' => 'grupo', + 'hour' => 'hora', + 'image' => 'imagen', + 'image_desktop' => 'imagen de escritorio', + 'image_main' => 'imagen principal', + 'image_mobile' => 'imagen móvil', + 'images' => 'imágenes', + 'is_audience_winner' => 'es ganador de audiencia', + 'is_hidden' => 'está oculto', + 'is_subscribed' => 'está suscrito', + 'is_visible' => 'es visible', + 'is_winner' => 'es ganador', + 'items' => 'elementos', + 'key' => 'clave', + 'last_name' => 'apellidos', + 'lesson' => 'lección', + 'line_address_1' => 'línea de dirección 1', + 'line_address_2' => 'línea de dirección 2', + 'login' => 'acceso', + 'message' => 'mensaje', + 'middle_name' => 'segundo nombre', + 'minute' => 'minuto', + 'mobile' => 'móvil', + 'month' => 'mes', + 'name' => 'nombre', + 'national_code' => 'código nacional', + 'number' => 'número', + 'password' => 'contraseña', + 'password_confirmation' => 'confirmación de la contraseña', + 'phone' => 'teléfono', + 'photo' => 'foto', + 'portfolio' => 'portafolio', + 'postal_code' => 'código postal', + 'preview' => 'vista preliminar', + 'price' => 'precio', + 'product_id' => 'ID del producto', + 'product_uid' => 'UID del producto', + 'product_uuid' => 'UUID del producto', + 'promo_code' => 'código promocional', + 'province' => 'provincia', + 'quantity' => 'cantidad', + 'reason' => 'razón', 'recaptcha_response_field' => 'respuesta del recaptcha', - 'referee' => 'árbitro', - 'referees' => 'árbitros', - 'region' => 'región', - 'reject_reason' => 'motivo de rechazo', - 'remember' => 'recordar', - 'restored_at' => 'restaurado el', - 'result_text_under_image' => 'texto bajo la imagen', - 'role' => 'rol', - 'rule' => 'regla', - 'rules' => 'reglas', - 'second' => 'segundo', - 'sex' => 'sexo', - 'shipment' => 'envío', - 'short_text' => 'texto corto', - 'size' => 'tamaño', - 'skills' => 'habilidades', - 'slug' => 'slug', - 'specialization' => 'especialización', - 'started_at' => 'comenzado el', - 'state' => 'estado', - 'status' => 'estado', - 'street' => 'calle', - 'student' => 'estudiante', - 'subject' => 'asunto', - 'tag' => 'etiqueta', - 'tags' => 'etiquetas', - 'teacher' => 'profesor', - 'terms' => 'términos', - 'test_description' => 'descripción de prueba', - 'test_locale' => 'idioma de prueba', - 'test_name' => 'nombre de prueba', - 'text' => 'texto', - 'time' => 'hora', - 'title' => 'título', - 'type' => 'tipo', - 'updated_at' => 'actualizado el', - 'user' => 'usuario', - 'username' => 'usuario', - 'value' => 'valor', - 'winner' => 'ganador', - 'work' => 'trabajo', - 'year' => 'año', + 'referee' => 'árbitro', + 'referees' => 'árbitros', + 'region' => 'región', + 'reject_reason' => 'motivo de rechazo', + 'remember' => 'recordar', + 'restored_at' => 'restaurado el', + 'result_text_under_image' => 'texto bajo la imagen', + 'role' => 'rol', + 'rule' => 'regla', + 'rules' => 'reglas', + 'second' => 'segundo', + 'sex' => 'sexo', + 'shipment' => 'envío', + 'short_text' => 'texto corto', + 'size' => 'tamaño', + 'skills' => 'habilidades', + 'slug' => 'slug', + 'specialization' => 'especialización', + 'started_at' => 'comenzado el', + 'state' => 'estado', + 'status' => 'estado', + 'street' => 'calle', + 'student' => 'estudiante', + 'subject' => 'asunto', + 'tag' => 'etiqueta', + 'tags' => 'etiquetas', + 'teacher' => 'profesor', + 'terms' => 'términos', + 'test_description' => 'descripción de prueba', + 'test_locale' => 'idioma de prueba', + 'test_name' => 'nombre de prueba', + 'text' => 'texto', + 'time' => 'hora', + 'title' => 'título', + 'type' => 'tipo', + 'updated_at' => 'actualizado el', + 'user' => 'usuario', + 'username' => 'usuario', + 'value' => 'valor', + 'winner' => 'ganador', + 'work' => 'trabajo', + 'year' => 'año', ], ]; diff --git a/lang/fr/actions.php b/lang/fr/actions.php index b853eed5..e7a9f84e 100644 --- a/lang/fr/actions.php +++ b/lang/fr/actions.php @@ -3,117 +3,117 @@ declare(strict_types=1); return [ - 'accept' => 'Accepter', - 'action' => 'Action', - 'actions' => 'Actions', - 'add' => 'Ajouter', - 'admin' => 'Administrateur', - 'agree' => 'Approuver', - 'archive' => 'Archiver', - 'assign' => 'Attribuer', - 'associate' => 'Associer', - 'attach' => 'Attacher', - 'browse' => 'Parcourir', - 'cancel' => 'Annuler', - 'choose' => 'Choisir', - 'choose_file' => 'Choisir le fichier', - 'choose_image' => 'Choisir une image', - 'click_to_copy' => 'Cliquer pour copier', - 'close' => 'Fermer', - 'collapse' => 'Réduire', - 'collapse_all' => 'Réduire tout', - 'comment' => 'Commentaire', - 'confirm' => 'Confirmer', - 'connect' => 'Connecter', - 'create' => 'Créer', - 'delete' => 'Supprimer', - 'detach' => 'Détacher', - 'details' => 'Détails', - 'disable' => 'Désactiver', - 'discard' => 'Jeter', - 'done' => 'Fait', - 'down' => 'Descendre', - 'duplicate' => 'Dupliquer', - 'edit' => 'Editer', - 'enable' => 'Activer', - 'expand' => 'Développer', - 'expand_all' => 'Développer tout', - 'explanation' => 'Explication', - 'export' => 'Exporter', - 'file' => 'Déposer', - 'files' => 'Fichiers', - 'go_home' => 'Aller à l\'accueil', - 'hide' => 'Cacher', - 'home' => 'Accueil', - 'image' => 'Image', - 'impersonate' => 'Imiter', - 'impersonation' => 'Imitation', - 'import' => 'Importer', - 'introduction' => 'Introduction', - 'like' => 'Aimer', - 'load' => 'Charger', - 'localize' => 'Localiser', - 'log_in' => 'Se connecter', - 'log_out' => 'Se déconnecter', - 'named' => [ - 'add' => 'Ajouter :name', - 'choose' => 'Choisir :name', - 'create' => 'Créer :name', - 'delete' => 'Supprimer :name', + 'accept' => 'Accepter', + 'action' => 'Action', + 'actions' => 'Actions', + 'add' => 'Ajouter', + 'admin' => 'Administrateur', + 'agree' => 'Approuver', + 'archive' => 'Archiver', + 'assign' => 'Attribuer', + 'associate' => 'Associer', + 'attach' => 'Attacher', + 'browse' => 'Parcourir', + 'cancel' => 'Annuler', + 'choose' => 'Choisir', + 'choose_file' => 'Choisir le fichier', + 'choose_image' => 'Choisir une image', + 'click_to_copy' => 'Cliquer pour copier', + 'close' => 'Fermer', + 'collapse' => 'Réduire', + 'collapse_all' => 'Réduire tout', + 'comment' => 'Commentaire', + 'confirm' => 'Confirmer', + 'connect' => 'Connecter', + 'create' => 'Créer', + 'delete' => 'Supprimer', + 'detach' => 'Détacher', + 'details' => 'Détails', + 'disable' => 'Désactiver', + 'discard' => 'Jeter', + 'done' => 'Fait', + 'down' => 'Descendre', + 'duplicate' => 'Dupliquer', + 'edit' => 'Editer', + 'enable' => 'Activer', + 'expand' => 'Développer', + 'expand_all' => 'Développer tout', + 'explanation' => 'Explication', + 'export' => 'Exporter', + 'file' => 'Déposer', + 'files' => 'Fichiers', + 'go_home' => 'Aller à l\'accueil', + 'hide' => 'Cacher', + 'home' => 'Accueil', + 'image' => 'Image', + 'impersonate' => 'Imiter', + 'impersonation' => 'Imitation', + 'import' => 'Importer', + 'introduction' => 'Introduction', + 'like' => 'Aimer', + 'load' => 'Charger', + 'localize' => 'Localiser', + 'log_in' => 'Se connecter', + 'log_out' => 'Se déconnecter', + 'named' => [ + 'add' => 'Ajouter :name', + 'choose' => 'Choisir :name', + 'create' => 'Créer :name', + 'delete' => 'Supprimer :name', 'duplicate' => 'Dupliquer :name', - 'edit' => 'Editer :name', - 'export' => 'Exporter :name', - 'hide' => 'Cacher :name', - 'import' => 'Importer :name', - 'new' => 'Nouveau :name', - 'restore' => 'Restaurer :name', - 'save' => 'Sauvegarder :name', - 'search' => 'Chercher :name', - 'show' => 'Afficher :name', - 'update' => 'Mettre à jour :name', - 'view' => 'Voir :name', + 'edit' => 'Editer :name', + 'export' => 'Exporter :name', + 'hide' => 'Cacher :name', + 'import' => 'Importer :name', + 'new' => 'Nouveau :name', + 'restore' => 'Restaurer :name', + 'save' => 'Sauvegarder :name', + 'search' => 'Chercher :name', + 'show' => 'Afficher :name', + 'update' => 'Mettre à jour :name', + 'view' => 'Voir :name', ], - 'new' => 'Nouveau', - 'no' => 'Non', - 'open' => 'Ouvrir', - 'open_website' => 'Ouvrir sur le site', - 'preview' => 'Aperçu', - 'price' => 'Prix', - 'record' => 'Enregistrer', - 'restore' => 'Restaurer', - 'save' => 'Sauvegarder', - 'save_and_close' => 'Sauvegarder et fermer', + 'new' => 'Nouveau', + 'no' => 'Non', + 'open' => 'Ouvrir', + 'open_website' => 'Ouvrir sur le site', + 'preview' => 'Aperçu', + 'price' => 'Prix', + 'record' => 'Enregistrer', + 'restore' => 'Restaurer', + 'save' => 'Sauvegarder', + 'save_and_close' => 'Sauvegarder et fermer', 'save_and_return' => 'Sauvegarder et retourner', - 'search' => 'Chercher', - 'select' => 'Sélectionner', - 'select_all' => 'Tout sélectionner', - 'send' => 'Envoyer', - 'settings' => 'Paramètres', - 'show' => 'Montrer', - 'show_all' => 'Afficher tout', - 'sign_in' => 'Se connecter', - 'solve' => 'Résoudre', - 'start' => 'Commencer', - 'stop' => 'Arrêter', - 'submit' => 'Soumettre', - 'subscribe' => 'S\'abonner', - 'switch' => 'Changer', - 'switch_to_role' => 'Passer au rôle', - 'tag' => 'Mot clé', - 'tags' => 'Mots clés', - 'target_link' => [ - 'blank' => 'Ouvrir dans une nouvelle fenêtre', + 'search' => 'Chercher', + 'select' => 'Sélectionner', + 'select_all' => 'Tout sélectionner', + 'send' => 'Envoyer', + 'settings' => 'Paramètres', + 'show' => 'Montrer', + 'show_all' => 'Afficher tout', + 'sign_in' => 'Se connecter', + 'solve' => 'Résoudre', + 'start' => 'Commencer', + 'stop' => 'Arrêter', + 'submit' => 'Soumettre', + 'subscribe' => 'S\'abonner', + 'switch' => 'Changer', + 'switch_to_role' => 'Passer au rôle', + 'tag' => 'Mot clé', + 'tags' => 'Mots clés', + 'target_link' => [ + 'blank' => 'Ouvrir dans une nouvelle fenêtre', 'parent' => 'Ouvrir dans la fenêtre parente', - 'self' => 'Ouvrir dans la fenêtre actuelle', - 'top' => 'Ouvrir dans le cadre le plus haut', + 'self' => 'Ouvrir dans la fenêtre actuelle', + 'top' => 'Ouvrir dans le cadre le plus haut', ], - 'translate' => 'Traduire', - 'translate_it' => 'Traduis le', - 'unpack' => 'Déballer', - 'unsubscribe' => 'Se désabonner', - 'up' => 'Monter', - 'update' => 'Mettre à jour', - 'user' => 'Utilisateur', - 'view' => 'Voir', - 'yes' => 'Oui', + 'translate' => 'Traduire', + 'translate_it' => 'Traduis le', + 'unpack' => 'Déballer', + 'unsubscribe' => 'Se désabonner', + 'up' => 'Monter', + 'update' => 'Mettre à jour', + 'user' => 'Utilisateur', + 'view' => 'Voir', + 'yes' => 'Oui', ]; diff --git a/lang/fr/auth.php b/lang/fr/auth.php index a22cd3f7..7b21d006 100644 --- a/lang/fr/auth.php +++ b/lang/fr/auth.php @@ -3,7 +3,7 @@ declare(strict_types=1); return [ - 'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.', + 'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.', 'password' => 'Le mot de passe est incorrect', 'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.', ]; diff --git a/lang/fr/http-statuses.php b/lang/fr/http-statuses.php index f7114082..1dd3d615 100644 --- a/lang/fr/http-statuses.php +++ b/lang/fr/http-statuses.php @@ -3,82 +3,82 @@ declare(strict_types=1); return [ - '0' => 'Erreur inconnue', - '100' => 'Continuer', - '101' => 'Protocoles de commutation', - '102' => 'En traitement', - '200' => 'OK', - '201' => 'Créé', - '202' => 'Accepté', - '203' => 'Informations non certifiées', - '204' => 'Pas de contenu', - '205' => 'Réinitialiser le contenu', - '206' => 'Contenu partiel', - '207' => 'Statut multiple', - '208' => 'Déjà rapporté', - '226' => 'IM utilisé', - '300' => 'Choix multiples', - '301' => 'Déplacé de façon permanente', - '302' => 'A trouvé', - '303' => 'Voir autre', - '304' => 'Non modifié', - '305' => 'Utiliser un proxy', - '307' => 'Redirection temporaire', - '308' => 'Redirection permanente', - '400' => 'Requête invalide', - '401' => 'Non authentifié', - '402' => 'Paiement requis', - '403' => 'Interdit', - '404' => 'Page non trouvée', - '405' => 'Méthode non autorisée', - '406' => 'Non acceptable', - '407' => 'Authentification proxy requise', - '408' => 'Requête expirée', - '409' => 'Conflit', - '410' => 'Disparu', - '411' => 'Longueur requise', - '412' => 'La précondition a échoué', - '413' => 'Charge utile trop grande', - '414' => 'URI trop long', - '415' => 'Type de média non supporté', - '416' => 'Plage non satisfaisante', - '417' => 'Comportement attendu insatisfaisant', - '418' => 'Je suis une théière', - '419' => 'La session a expiré', - '421' => 'Demande mal dirigée', - '422' => 'Contenu non traitable', - '423' => 'Verrouillé', - '424' => 'Dépendance échouée', - '425' => 'Trop tôt', - '426' => 'Mise à niveau requise', - '428' => 'Condition préalable requise', - '429' => 'Trop de demandes', - '431' => 'Champs d\'en-tête de requête trop grands', - '444' => 'Connexion fermée sans réponse', - '449' => 'Réessayer avec', - '451' => 'Indisponible pour des raisons légales', - '499' => 'Demande fermée par le client', - '500' => 'Erreur interne du serveur', - '501' => 'Non implémenté', - '502' => 'Mauvaise passerelle', - '503' => 'Service non disponible', - '504' => 'Temps d\'attente de la passerelle dépassé', - '505' => 'Version HTTP non prise en charge', - '506' => 'La variante négocie également', - '507' => 'Espace insuffisant', - '508' => 'Boucle détectée', - '509' => 'Limite de bande passante dépassée', - '510' => 'Non prolongé', - '511' => 'Authentification réseau requise', - '520' => 'Erreur inconnue', - '521' => 'Le serveur Web est en panne', - '522' => 'La connexion a expiré', - '523' => 'L\'origine est inaccessible', - '524' => 'Un dépassement de délai s\'est produit', - '525' => 'Échec de la prise de contact SSL', - '526' => 'Certificat SSL invalide', - '527' => 'Erreur de Railgun', - '598' => 'Temps d\'attente de la lecture réseau dépassé', - '599' => 'Temps d\'attente de la connexion réseau dépassé', + '0' => 'Erreur inconnue', + '100' => 'Continuer', + '101' => 'Protocoles de commutation', + '102' => 'En traitement', + '200' => 'OK', + '201' => 'Créé', + '202' => 'Accepté', + '203' => 'Informations non certifiées', + '204' => 'Pas de contenu', + '205' => 'Réinitialiser le contenu', + '206' => 'Contenu partiel', + '207' => 'Statut multiple', + '208' => 'Déjà rapporté', + '226' => 'IM utilisé', + '300' => 'Choix multiples', + '301' => 'Déplacé de façon permanente', + '302' => 'A trouvé', + '303' => 'Voir autre', + '304' => 'Non modifié', + '305' => 'Utiliser un proxy', + '307' => 'Redirection temporaire', + '308' => 'Redirection permanente', + '400' => 'Requête invalide', + '401' => 'Non authentifié', + '402' => 'Paiement requis', + '403' => 'Interdit', + '404' => 'Page non trouvée', + '405' => 'Méthode non autorisée', + '406' => 'Non acceptable', + '407' => 'Authentification proxy requise', + '408' => 'Requête expirée', + '409' => 'Conflit', + '410' => 'Disparu', + '411' => 'Longueur requise', + '412' => 'La précondition a échoué', + '413' => 'Charge utile trop grande', + '414' => 'URI trop long', + '415' => 'Type de média non supporté', + '416' => 'Plage non satisfaisante', + '417' => 'Comportement attendu insatisfaisant', + '418' => 'Je suis une théière', + '419' => 'La session a expiré', + '421' => 'Demande mal dirigée', + '422' => 'Contenu non traitable', + '423' => 'Verrouillé', + '424' => 'Dépendance échouée', + '425' => 'Trop tôt', + '426' => 'Mise à niveau requise', + '428' => 'Condition préalable requise', + '429' => 'Trop de demandes', + '431' => 'Champs d\'en-tête de requête trop grands', + '444' => 'Connexion fermée sans réponse', + '449' => 'Réessayer avec', + '451' => 'Indisponible pour des raisons légales', + '499' => 'Demande fermée par le client', + '500' => 'Erreur interne du serveur', + '501' => 'Non implémenté', + '502' => 'Mauvaise passerelle', + '503' => 'Service non disponible', + '504' => 'Temps d\'attente de la passerelle dépassé', + '505' => 'Version HTTP non prise en charge', + '506' => 'La variante négocie également', + '507' => 'Espace insuffisant', + '508' => 'Boucle détectée', + '509' => 'Limite de bande passante dépassée', + '510' => 'Non prolongé', + '511' => 'Authentification réseau requise', + '520' => 'Erreur inconnue', + '521' => 'Le serveur Web est en panne', + '522' => 'La connexion a expiré', + '523' => 'L\'origine est inaccessible', + '524' => 'Un dépassement de délai s\'est produit', + '525' => 'Échec de la prise de contact SSL', + '526' => 'Certificat SSL invalide', + '527' => 'Erreur de Railgun', + '598' => 'Temps d\'attente de la lecture réseau dépassé', + '599' => 'Temps d\'attente de la connexion réseau dépassé', 'unknownError' => 'Erreur inconnue', ]; diff --git a/lang/fr/pagination.php b/lang/fr/pagination.php index 225391eb..78d8fd96 100644 --- a/lang/fr/pagination.php +++ b/lang/fr/pagination.php @@ -3,6 +3,6 @@ declare(strict_types=1); return [ - 'next' => 'Suivant »', + 'next' => 'Suivant »', 'previous' => '« Précédent', ]; diff --git a/lang/fr/passwords.php b/lang/fr/passwords.php index 75ae1485..0a6eeac4 100644 --- a/lang/fr/passwords.php +++ b/lang/fr/passwords.php @@ -3,9 +3,9 @@ declare(strict_types=1); return [ - 'reset' => 'Votre mot de passe a été réinitialisé !', - 'sent' => 'Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !', + 'reset' => 'Votre mot de passe a été réinitialisé !', + 'sent' => 'Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !', 'throttled' => 'Veuillez patienter avant de réessayer.', - 'token' => 'Ce jeton de réinitialisation du mot de passe n\'est pas valide.', - 'user' => 'Aucun utilisateur n\'a été trouvé avec cette adresse email.', + 'token' => 'Ce jeton de réinitialisation du mot de passe n\'est pas valide.', + 'user' => 'Aucun utilisateur n\'a été trouvé avec cette adresse email.', ]; diff --git a/lang/fr/validation.php b/lang/fr/validation.php index 652af8f2..cc9c5422 100644 --- a/lang/fr/validation.php +++ b/lang/fr/validation.php @@ -3,286 +3,286 @@ declare(strict_types=1); return [ - 'accepted' => 'Le champ :attribute doit être accepté.', - 'accepted_if' => 'Le champ :attribute doit être accepté quand :other a la valeur :value.', - 'active_url' => 'Le champ :attribute n\'est pas une URL valide.', - 'after' => 'Le champ :attribute doit être une date postérieure au :date.', - 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.', - 'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.', - 'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.', - 'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.', - 'any_of' => 'Le champ :attribute est invalide.', - 'array' => 'Le champ :attribute doit être un tableau.', - 'ascii' => 'Le champ :attribute ne doit contenir que des caractères alphanumériques et des symboles codés sur un octet.', - 'before' => 'Le champ :attribute doit être une date antérieure au :date.', - 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.', - 'between' => [ - 'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.', - 'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.', + 'accepted' => 'Le champ :attribute doit être accepté.', + 'accepted_if' => 'Le champ :attribute doit être accepté quand :other a la valeur :value.', + 'active_url' => 'Le champ :attribute n\'est pas une URL valide.', + 'after' => 'Le champ :attribute doit être une date postérieure au :date.', + 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.', + 'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.', + 'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.', + 'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.', + 'any_of' => 'Le champ :attribute est invalide.', + 'array' => 'Le champ :attribute doit être un tableau.', + 'ascii' => 'Le champ :attribute ne doit contenir que des caractères alphanumériques et des symboles codés sur un octet.', + 'before' => 'Le champ :attribute doit être une date antérieure au :date.', + 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.', + 'between' => [ + 'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.', + 'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.', 'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.', - 'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.', + 'string' => 'Le texte :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.', - 'contains' => 'Le champ :attribute manque une valeur requise.', - 'current_password' => 'Le mot de passe est incorrect.', - 'date' => 'Le champ :attribute n\'est pas une date valide.', - 'date_equals' => 'Le champ :attribute doit être une date égale à :date.', - 'date_format' => 'Le champ :attribute ne correspond pas au format :format.', - 'decimal' => 'Le champ :attribute doit comporter :decimal décimales.', - 'declined' => 'Le champ :attribute doit être décliné.', - 'declined_if' => 'Le champ :attribute doit être décliné quand :other a la valeur :value.', - 'different' => 'Les champs :attribute et :other doivent être différents.', - 'digits' => 'Le champ :attribute doit contenir :digits chiffres.', - 'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.', - 'dimensions' => 'La taille de l\'image :attribute n\'est pas conforme.', - 'distinct' => 'Le champ :attribute a une valeur en double.', - 'doesnt_contain' => 'Le champ :attribute ne doit contenir aucun des éléments suivants : :values.', - 'doesnt_end_with' => 'Le champ :attribute ne doit pas finir avec une des valeurs suivantes : :values.', - 'doesnt_start_with' => 'Le champ :attribute ne doit pas commencer avec une des valeurs suivantes : :values.', - 'email' => 'Le champ :attribute doit être une adresse e-mail valide.', - 'encoding' => 'The :attribute field must be encoded in :encoding.', - 'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values', - 'enum' => 'Le champ :attribute sélectionné est invalide.', - 'exists' => 'Le champ :attribute sélectionné est invalide.', - 'extensions' => 'Le champ :attribute doit avoir l\'une des extensions suivantes : :values.', - 'file' => 'Le champ :attribute doit être un fichier.', - 'filled' => 'Le champ :attribute doit avoir une valeur.', - 'gt' => [ - 'array' => 'Le tableau :attribute doit contenir plus de :value éléments.', - 'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.', + '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.', + 'contains' => 'Le champ :attribute manque une valeur requise.', + 'current_password' => 'Le mot de passe est incorrect.', + 'date' => 'Le champ :attribute n\'est pas une date valide.', + 'date_equals' => 'Le champ :attribute doit être une date égale à :date.', + 'date_format' => 'Le champ :attribute ne correspond pas au format :format.', + 'decimal' => 'Le champ :attribute doit comporter :decimal décimales.', + 'declined' => 'Le champ :attribute doit être décliné.', + 'declined_if' => 'Le champ :attribute doit être décliné quand :other a la valeur :value.', + 'different' => 'Les champs :attribute et :other doivent être différents.', + 'digits' => 'Le champ :attribute doit contenir :digits chiffres.', + 'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.', + 'dimensions' => 'La taille de l\'image :attribute n\'est pas conforme.', + 'distinct' => 'Le champ :attribute a une valeur en double.', + 'doesnt_contain' => 'Le champ :attribute ne doit contenir aucun des éléments suivants : :values.', + 'doesnt_end_with' => 'Le champ :attribute ne doit pas finir avec une des valeurs suivantes : :values.', + 'doesnt_start_with' => 'Le champ :attribute ne doit pas commencer avec une des valeurs suivantes : :values.', + 'email' => 'Le champ :attribute doit être une adresse e-mail valide.', + 'encoding' => 'The :attribute field must be encoded in :encoding.', + 'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values', + 'enum' => 'Le champ :attribute sélectionné est invalide.', + 'exists' => 'Le champ :attribute sélectionné est invalide.', + 'extensions' => 'Le champ :attribute doit avoir l\'une des extensions suivantes : :values.', + 'file' => 'Le champ :attribute doit être un fichier.', + 'filled' => 'Le champ :attribute doit avoir une valeur.', + 'gt' => [ + 'array' => 'Le tableau :attribute doit contenir plus de :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.', 'numeric' => 'La valeur de :attribute doit être supérieure à :value.', - 'string' => 'Le texte :attribute doit contenir plus de :value caractères.', + 'string' => 'Le texte :attribute doit contenir plus de :value caractères.', ], - 'gte' => [ - 'array' => 'Le tableau :attribute doit contenir au moins :value éléments.', - 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.', + 'gte' => [ + 'array' => 'Le tableau :attribute doit contenir au moins :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.', 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.', - 'string' => 'Le texte :attribute doit contenir au moins :value caractères.', + 'string' => 'Le texte :attribute doit contenir au moins :value caractères.', ], - 'hex_color' => 'Le champ :attribute doit être une couleur hexadécimale valide.', - 'image' => 'Le champ :attribute doit être une image.', - 'in' => 'Le champ :attribute est invalide.', - 'in_array' => 'Le champ :attribute n\'existe pas dans :other.', - 'in_array_keys' => 'Le champ :attribute doit contenir au moins l\'une des clés suivantes : :values.', - 'integer' => 'Le champ :attribute doit être un 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 un document JSON valide.', - 'list' => 'Le champ :attribute doit être une liste.', - 'lowercase' => 'Le champ :attribute doit être en minuscules.', - 'lt' => [ - 'array' => 'Le tableau :attribute doit contenir moins de :value éléments.', - 'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.', + 'hex_color' => 'Le champ :attribute doit être une couleur hexadécimale valide.', + 'image' => 'Le champ :attribute doit être une image.', + 'in' => 'Le champ :attribute est invalide.', + 'in_array' => 'Le champ :attribute n\'existe pas dans :other.', + 'in_array_keys' => 'Le champ :attribute doit contenir au moins l\'une des clés suivantes : :values.', + 'integer' => 'Le champ :attribute doit être un 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 un document JSON valide.', + 'list' => 'Le champ :attribute doit être une liste.', + 'lowercase' => 'Le champ :attribute doit être en minuscules.', + 'lt' => [ + 'array' => 'Le tableau :attribute doit contenir moins de :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.', 'numeric' => 'La valeur de :attribute doit être inférieure à :value.', - 'string' => 'Le texte :attribute doit contenir moins de :value caractères.', + 'string' => 'Le texte :attribute doit contenir moins de :value caractères.', ], - 'lte' => [ - 'array' => 'Le tableau :attribute doit contenir au plus :value éléments.', - 'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.', + 'lte' => [ + 'array' => 'Le tableau :attribute doit contenir au plus :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.', 'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.', - 'string' => 'Le texte :attribute doit contenir au plus :value caractères.', + 'string' => 'Le texte :attribute doit contenir au plus :value caractères.', ], - 'mac_address' => 'Le champ :attribute doit être une adresse MAC valide.', - 'max' => [ - 'array' => 'Le tableau :attribute ne peut pas contenir plus que :max éléments.', - 'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.', + 'mac_address' => 'Le champ :attribute doit être une adresse MAC valide.', + 'max' => [ + 'array' => 'Le tableau :attribute ne peut pas contenir plus que :max éléments.', + 'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.', 'numeric' => 'La valeur de :attribute ne peut pas être supérieure à :max.', - 'string' => 'Le texte de :attribute ne peut pas contenir plus de :max caractères.', + 'string' => 'Le texte de :attribute ne peut pas contenir plus de :max caractères.', ], - 'max_digits' => 'Le champ :attribute ne doit pas 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 tableau :attribute doit contenir au moins :min éléments.', - 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :min kilo-octets.', + 'max_digits' => 'Le champ :attribute ne doit pas 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 tableau :attribute doit contenir au moins :min éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :min kilo-octets.', 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.', - 'string' => 'Le texte de :attribute doit contenir au moins :min caractères.', + 'string' => 'Le texte de :attribute doit 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 manquant quand :other a la valeur :value.', - 'missing_unless' => 'Le champ :attribute doit être manquant sauf si :other a la valeur :value.', - 'missing_with' => 'Le champ :attribute doit être manquant quand :values est présent.', - 'missing_with_all' => 'Le champ :attribute doit être manquant quand :values sont présents.', - 'multiple_of' => 'La valeur de :attribute doit être un multiple de :value', - 'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.', - 'not_regex' => 'Le format du champ :attribute n\'est pas valide.', - 'numeric' => 'Le champ :attribute doit contenir un nombre.', - 'password' => [ - 'letters' => 'Le champ :attribute doit contenir au moins une lettre.', - 'mixed' => 'Le champ :attribute doit contenir au moins une majuscule et une minuscule.', - 'numbers' => 'Le champ :attribute doit contenir au moins un chiffre.', - 'symbols' => 'Le champ :attribute doit contenir au moins un symbole.', + '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 manquant quand :other a la valeur :value.', + 'missing_unless' => 'Le champ :attribute doit être manquant sauf si :other a la valeur :value.', + 'missing_with' => 'Le champ :attribute doit être manquant quand :values est présent.', + 'missing_with_all' => 'Le champ :attribute doit être manquant quand :values sont présents.', + 'multiple_of' => 'La valeur de :attribute doit être un multiple de :value', + 'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.', + 'not_regex' => 'Le format du champ :attribute n\'est pas valide.', + 'numeric' => 'Le champ :attribute doit contenir un nombre.', + 'password' => [ + 'letters' => 'Le champ :attribute doit contenir au moins une lettre.', + 'mixed' => 'Le champ :attribute doit contenir au moins une majuscule et une minuscule.', + 'numbers' => 'Le champ :attribute doit contenir au moins un chiffre.', + 'symbols' => 'Le champ :attribute doit contenir au moins un symbole.', 'uncompromised' => 'La valeur du champ :attribute est apparue dans une fuite de données. Veuillez choisir une valeur différente.', ], - 'present' => 'Le champ :attribute doit être présent.', - 'present_if' => 'Le champ :attribute doit être présent lorsque :other est :value.', - 'present_unless' => 'Le champ :attribute doit être présent sauf si :other vaut :value.', - 'present_with' => 'Le champ :attribute doit être présent lorsque :values est présent.', - 'present_with_all' => 'Le champ :attribute doit être présent lorsque :values sont présents.', - 'prohibited' => 'Le champ :attribute est interdit.', - 'prohibited_if' => 'Le champ :attribute est interdit quand :other a la valeur :value.', + 'present' => 'Le champ :attribute doit être présent.', + 'present_if' => 'Le champ :attribute doit être présent lorsque :other est :value.', + 'present_unless' => 'Le champ :attribute doit être présent sauf si :other vaut :value.', + 'present_with' => 'Le champ :attribute doit être présent lorsque :values est présent.', + 'present_with_all' => 'Le champ :attribute doit être présent lorsque :values sont présents.', + 'prohibited' => 'Le champ :attribute est interdit.', + 'prohibited_if' => 'Le champ :attribute est interdit quand :other a la valeur :value.', 'prohibited_if_accepted' => 'Le champ :attribute est interdit quand :other a été accepté.', 'prohibited_if_declined' => 'Le champ :attribute est interdit quand :other a été refusé.', - 'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other est l\'une des valeurs :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 la valeur de :other est :value.', - 'required_if_accepted' => 'Le champ :attribute est obligatoire quand le champ :other a été accepté.', - 'required_if_declined' => 'Le champ :attribute est obligatoire quand le champ :other a été refusé.', - 'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.', - 'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.', - 'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.', - 'required_without' => 'Le champ :attribute est obligatoire quand :values n\'est pas présent.', - 'required_without_all' => 'Le champ :attribute est requis quand aucun de :values n\'est présent.', - 'same' => 'Les champs :attribute et :other doivent être identiques.', - 'size' => [ - 'array' => 'Le tableau :attribute doit contenir :size éléments.', - 'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.', + 'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other est l\'une des valeurs :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 la valeur de :other est :value.', + 'required_if_accepted' => 'Le champ :attribute est obligatoire quand le champ :other a été accepté.', + 'required_if_declined' => 'Le champ :attribute est obligatoire quand le champ :other a été refusé.', + 'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.', + 'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.', + 'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.', + 'required_without' => 'Le champ :attribute est obligatoire quand :values n\'est pas présent.', + 'required_without_all' => 'Le champ :attribute est requis quand aucun de :values n\'est présent.', + 'same' => 'Les champs :attribute et :other doivent être identiques.', + 'size' => [ + 'array' => 'Le tableau :attribute doit contenir :size éléments.', + 'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.', 'numeric' => 'La valeur de :attribute doit être :size.', - 'string' => 'Le texte de :attribute doit contenir :size caractères.', + 'string' => 'Le texte de :attribute doit contenir :size caractères.', ], - 'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values', - 'string' => 'Le champ :attribute doit être une chaîne de caractères.', - 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', - 'ulid' => 'Le champ :attribute doit être un ULID valide.', - 'unique' => 'La valeur du champ :attribute est déjà utilisée.', - 'uploaded' => 'Le fichier du champ :attribute n\'a pu être téléversé.', - 'uppercase' => 'Le champ :attribute doit être en majuscules.', - 'url' => 'Le format de l\'URL de :attribute n\'est pas valide.', - 'uuid' => 'Le champ :attribute doit être un UUID valide', - 'attributes' => [ - 'address' => 'adresse', - 'affiliate_url' => 'URL d\'affiliation', - 'age' => 'âge', - 'amount' => 'montant', - 'announcement' => 'annonce', - 'area' => 'zone', - 'audience_prize' => 'prix du public', - 'audience_winner' => 'gagnant du public', - 'available' => 'disponible', - 'birthday' => 'anniversaire', - 'body' => 'corps', - 'city' => 'ville', - 'color' => 'color', - 'company' => 'entreprise', - 'compilation' => 'compilation', - 'concept' => 'concept', - 'conditions' => 'conditions', - 'content' => 'contenu', - 'contest' => 'contest', - 'country' => 'pays', - 'cover' => 'couverture', - 'created_at' => 'date de création', - 'creator' => 'créateur', - 'currency' => 'devise', - 'current_password' => 'mot de passe actuel', - 'customer' => 'client', - 'date' => 'date', - 'date_of_birth' => 'date de naissance', - 'dates' => 'rendez-vous', - 'day' => 'jour', - 'deleted_at' => 'date de suppression', - 'description' => 'description', - 'display_type' => 'type d\'affichage', - 'district' => 'quartier', - 'duration' => 'durée', - 'email' => 'adresse e-mail', - 'excerpt' => 'extrait', - 'filter' => 'filtre', - 'finished_at' => 'date de fin', - 'first_name' => 'prénom', - 'gender' => 'genre', - 'grand_prize' => 'grand prix', - 'group' => 'groupe', - 'hour' => 'heure', - 'image' => 'image', - 'image_desktop' => 'image de bureau', - 'image_main' => 'image principale', - 'image_mobile' => 'image mobile', - 'images' => 'images', - 'is_audience_winner' => 'est le gagnant du public', - 'is_hidden' => 'est caché', - 'is_subscribed' => 'est abonné', - 'is_visible' => 'est visible', - 'is_winner' => 'est gagnant', - 'items' => 'articles', - 'key' => 'clé', - 'last_name' => 'nom de famille', - 'lesson' => 'leçon', - 'line_address_1' => 'ligne d\'adresse 1', - 'line_address_2' => 'ligne d\'adresse 2', - 'login' => 'identifiant', - 'message' => 'message', - 'middle_name' => 'deuxième prénom', - 'minute' => 'minute', - 'mobile' => 'portable', - 'month' => 'mois', - 'name' => 'nom', - 'national_code' => 'code national', - 'number' => 'numéro', - 'password' => 'mot de passe', - 'password_confirmation' => 'confirmation du mot de passe', - 'phone' => 'téléphone', - 'photo' => 'photo', - 'portfolio' => 'portefeuille', - 'postal_code' => 'code postal', - 'preview' => 'aperçu', - 'price' => 'prix', - 'product_id' => 'identifiant du produit', - 'product_uid' => 'UID du produit', - 'product_uuid' => 'UUID du produit', - 'promo_code' => 'code promo', - 'province' => 'région', - 'quantity' => 'quantité', - 'reason' => 'raison', + 'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values', + 'string' => 'Le champ :attribute doit être une chaîne de caractères.', + 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', + 'ulid' => 'Le champ :attribute doit être un ULID valide.', + 'unique' => 'La valeur du champ :attribute est déjà utilisée.', + 'uploaded' => 'Le fichier du champ :attribute n\'a pu être téléversé.', + 'uppercase' => 'Le champ :attribute doit être en majuscules.', + 'url' => 'Le format de l\'URL de :attribute n\'est pas valide.', + 'uuid' => 'Le champ :attribute doit être un UUID valide', + 'attributes' => [ + 'address' => 'adresse', + 'affiliate_url' => 'URL d\'affiliation', + 'age' => 'âge', + 'amount' => 'montant', + 'announcement' => 'annonce', + 'area' => 'zone', + 'audience_prize' => 'prix du public', + 'audience_winner' => 'gagnant du public', + 'available' => 'disponible', + 'birthday' => 'anniversaire', + 'body' => 'corps', + 'city' => 'ville', + 'color' => 'color', + 'company' => 'entreprise', + 'compilation' => 'compilation', + 'concept' => 'concept', + 'conditions' => 'conditions', + 'content' => 'contenu', + 'contest' => 'contest', + 'country' => 'pays', + 'cover' => 'couverture', + 'created_at' => 'date de création', + 'creator' => 'créateur', + 'currency' => 'devise', + 'current_password' => 'mot de passe actuel', + 'customer' => 'client', + 'date' => 'date', + 'date_of_birth' => 'date de naissance', + 'dates' => 'rendez-vous', + 'day' => 'jour', + 'deleted_at' => 'date de suppression', + 'description' => 'description', + 'display_type' => 'type d\'affichage', + 'district' => 'quartier', + 'duration' => 'durée', + 'email' => 'adresse e-mail', + 'excerpt' => 'extrait', + 'filter' => 'filtre', + 'finished_at' => 'date de fin', + 'first_name' => 'prénom', + 'gender' => 'genre', + 'grand_prize' => 'grand prix', + 'group' => 'groupe', + 'hour' => 'heure', + 'image' => 'image', + 'image_desktop' => 'image de bureau', + 'image_main' => 'image principale', + 'image_mobile' => 'image mobile', + 'images' => 'images', + 'is_audience_winner' => 'est le gagnant du public', + 'is_hidden' => 'est caché', + 'is_subscribed' => 'est abonné', + 'is_visible' => 'est visible', + 'is_winner' => 'est gagnant', + 'items' => 'articles', + 'key' => 'clé', + 'last_name' => 'nom de famille', + 'lesson' => 'leçon', + 'line_address_1' => 'ligne d\'adresse 1', + 'line_address_2' => 'ligne d\'adresse 2', + 'login' => 'identifiant', + 'message' => 'message', + 'middle_name' => 'deuxième prénom', + 'minute' => 'minute', + 'mobile' => 'portable', + 'month' => 'mois', + 'name' => 'nom', + 'national_code' => 'code national', + 'number' => 'numéro', + 'password' => 'mot de passe', + 'password_confirmation' => 'confirmation du mot de passe', + 'phone' => 'téléphone', + 'photo' => 'photo', + 'portfolio' => 'portefeuille', + 'postal_code' => 'code postal', + 'preview' => 'aperçu', + 'price' => 'prix', + 'product_id' => 'identifiant du produit', + 'product_uid' => 'UID du produit', + 'product_uuid' => 'UUID du produit', + 'promo_code' => 'code promo', + 'province' => 'région', + 'quantity' => 'quantité', + 'reason' => 'raison', 'recaptcha_response_field' => 'champ de réponse reCAPTCHA', - 'referee' => 'arbitre', - 'referees' => 'arbitres', - 'region' => 'region', - 'reject_reason' => 'motif de rejet', - 'remember' => 'se souvenir', - 'restored_at' => 'date de restauration', - 'result_text_under_image' => 'texte de résultat sous l\'image', - 'role' => 'rôle', - 'rule' => 'règle', - 'rules' => 'règles', - 'second' => 'seconde', - 'sex' => 'sexe', - 'shipment' => 'expédition', - 'short_text' => 'texte court', - 'size' => 'taille', - 'skills' => 'compétences', - 'slug' => 'slug', - 'specialization' => 'spécialisation', - 'started_at' => 'date de début', - 'state' => 'état', - 'status' => 'statut', - 'street' => 'rue', - 'student' => 'étudiant', - 'subject' => 'sujet', - 'tag' => 'mot clé', - 'tags' => 'mots clés', - 'teacher' => 'professeur', - 'terms' => 'conditions', - 'test_description' => 'description du test', - 'test_locale' => 'localisation du test', - 'test_name' => 'nom du test', - 'text' => 'texte', - 'time' => 'heure', - 'title' => 'titre', - 'type' => 'type', - 'updated_at' => 'date de mise à jour', - 'user' => 'utilisateur', - 'username' => 'nom d\'utilisateur', - 'value' => 'valeur', - 'winner' => 'gagnant', - 'work' => 'travail', - 'year' => 'année', + 'referee' => 'arbitre', + 'referees' => 'arbitres', + 'region' => 'region', + 'reject_reason' => 'motif de rejet', + 'remember' => 'se souvenir', + 'restored_at' => 'date de restauration', + 'result_text_under_image' => 'texte de résultat sous l\'image', + 'role' => 'rôle', + 'rule' => 'règle', + 'rules' => 'règles', + 'second' => 'seconde', + 'sex' => 'sexe', + 'shipment' => 'expédition', + 'short_text' => 'texte court', + 'size' => 'taille', + 'skills' => 'compétences', + 'slug' => 'slug', + 'specialization' => 'spécialisation', + 'started_at' => 'date de début', + 'state' => 'état', + 'status' => 'statut', + 'street' => 'rue', + 'student' => 'étudiant', + 'subject' => 'sujet', + 'tag' => 'mot clé', + 'tags' => 'mots clés', + 'teacher' => 'professeur', + 'terms' => 'conditions', + 'test_description' => 'description du test', + 'test_locale' => 'localisation du test', + 'test_name' => 'nom du test', + 'text' => 'texte', + 'time' => 'heure', + 'title' => 'titre', + 'type' => 'type', + 'updated_at' => 'date de mise à jour', + 'user' => 'utilisateur', + 'username' => 'nom d\'utilisateur', + 'value' => 'valeur', + 'winner' => 'gagnant', + 'work' => 'travail', + 'year' => 'année', ], ]; diff --git a/lang/fr_CA/actions.php b/lang/fr_CA/actions.php index b853eed5..e7a9f84e 100644 --- a/lang/fr_CA/actions.php +++ b/lang/fr_CA/actions.php @@ -3,117 +3,117 @@ declare(strict_types=1); return [ - 'accept' => 'Accepter', - 'action' => 'Action', - 'actions' => 'Actions', - 'add' => 'Ajouter', - 'admin' => 'Administrateur', - 'agree' => 'Approuver', - 'archive' => 'Archiver', - 'assign' => 'Attribuer', - 'associate' => 'Associer', - 'attach' => 'Attacher', - 'browse' => 'Parcourir', - 'cancel' => 'Annuler', - 'choose' => 'Choisir', - 'choose_file' => 'Choisir le fichier', - 'choose_image' => 'Choisir une image', - 'click_to_copy' => 'Cliquer pour copier', - 'close' => 'Fermer', - 'collapse' => 'Réduire', - 'collapse_all' => 'Réduire tout', - 'comment' => 'Commentaire', - 'confirm' => 'Confirmer', - 'connect' => 'Connecter', - 'create' => 'Créer', - 'delete' => 'Supprimer', - 'detach' => 'Détacher', - 'details' => 'Détails', - 'disable' => 'Désactiver', - 'discard' => 'Jeter', - 'done' => 'Fait', - 'down' => 'Descendre', - 'duplicate' => 'Dupliquer', - 'edit' => 'Editer', - 'enable' => 'Activer', - 'expand' => 'Développer', - 'expand_all' => 'Développer tout', - 'explanation' => 'Explication', - 'export' => 'Exporter', - 'file' => 'Déposer', - 'files' => 'Fichiers', - 'go_home' => 'Aller à l\'accueil', - 'hide' => 'Cacher', - 'home' => 'Accueil', - 'image' => 'Image', - 'impersonate' => 'Imiter', - 'impersonation' => 'Imitation', - 'import' => 'Importer', - 'introduction' => 'Introduction', - 'like' => 'Aimer', - 'load' => 'Charger', - 'localize' => 'Localiser', - 'log_in' => 'Se connecter', - 'log_out' => 'Se déconnecter', - 'named' => [ - 'add' => 'Ajouter :name', - 'choose' => 'Choisir :name', - 'create' => 'Créer :name', - 'delete' => 'Supprimer :name', + 'accept' => 'Accepter', + 'action' => 'Action', + 'actions' => 'Actions', + 'add' => 'Ajouter', + 'admin' => 'Administrateur', + 'agree' => 'Approuver', + 'archive' => 'Archiver', + 'assign' => 'Attribuer', + 'associate' => 'Associer', + 'attach' => 'Attacher', + 'browse' => 'Parcourir', + 'cancel' => 'Annuler', + 'choose' => 'Choisir', + 'choose_file' => 'Choisir le fichier', + 'choose_image' => 'Choisir une image', + 'click_to_copy' => 'Cliquer pour copier', + 'close' => 'Fermer', + 'collapse' => 'Réduire', + 'collapse_all' => 'Réduire tout', + 'comment' => 'Commentaire', + 'confirm' => 'Confirmer', + 'connect' => 'Connecter', + 'create' => 'Créer', + 'delete' => 'Supprimer', + 'detach' => 'Détacher', + 'details' => 'Détails', + 'disable' => 'Désactiver', + 'discard' => 'Jeter', + 'done' => 'Fait', + 'down' => 'Descendre', + 'duplicate' => 'Dupliquer', + 'edit' => 'Editer', + 'enable' => 'Activer', + 'expand' => 'Développer', + 'expand_all' => 'Développer tout', + 'explanation' => 'Explication', + 'export' => 'Exporter', + 'file' => 'Déposer', + 'files' => 'Fichiers', + 'go_home' => 'Aller à l\'accueil', + 'hide' => 'Cacher', + 'home' => 'Accueil', + 'image' => 'Image', + 'impersonate' => 'Imiter', + 'impersonation' => 'Imitation', + 'import' => 'Importer', + 'introduction' => 'Introduction', + 'like' => 'Aimer', + 'load' => 'Charger', + 'localize' => 'Localiser', + 'log_in' => 'Se connecter', + 'log_out' => 'Se déconnecter', + 'named' => [ + 'add' => 'Ajouter :name', + 'choose' => 'Choisir :name', + 'create' => 'Créer :name', + 'delete' => 'Supprimer :name', 'duplicate' => 'Dupliquer :name', - 'edit' => 'Editer :name', - 'export' => 'Exporter :name', - 'hide' => 'Cacher :name', - 'import' => 'Importer :name', - 'new' => 'Nouveau :name', - 'restore' => 'Restaurer :name', - 'save' => 'Sauvegarder :name', - 'search' => 'Chercher :name', - 'show' => 'Afficher :name', - 'update' => 'Mettre à jour :name', - 'view' => 'Voir :name', + 'edit' => 'Editer :name', + 'export' => 'Exporter :name', + 'hide' => 'Cacher :name', + 'import' => 'Importer :name', + 'new' => 'Nouveau :name', + 'restore' => 'Restaurer :name', + 'save' => 'Sauvegarder :name', + 'search' => 'Chercher :name', + 'show' => 'Afficher :name', + 'update' => 'Mettre à jour :name', + 'view' => 'Voir :name', ], - 'new' => 'Nouveau', - 'no' => 'Non', - 'open' => 'Ouvrir', - 'open_website' => 'Ouvrir sur le site', - 'preview' => 'Aperçu', - 'price' => 'Prix', - 'record' => 'Enregistrer', - 'restore' => 'Restaurer', - 'save' => 'Sauvegarder', - 'save_and_close' => 'Sauvegarder et fermer', + 'new' => 'Nouveau', + 'no' => 'Non', + 'open' => 'Ouvrir', + 'open_website' => 'Ouvrir sur le site', + 'preview' => 'Aperçu', + 'price' => 'Prix', + 'record' => 'Enregistrer', + 'restore' => 'Restaurer', + 'save' => 'Sauvegarder', + 'save_and_close' => 'Sauvegarder et fermer', 'save_and_return' => 'Sauvegarder et retourner', - 'search' => 'Chercher', - 'select' => 'Sélectionner', - 'select_all' => 'Tout sélectionner', - 'send' => 'Envoyer', - 'settings' => 'Paramètres', - 'show' => 'Montrer', - 'show_all' => 'Afficher tout', - 'sign_in' => 'Se connecter', - 'solve' => 'Résoudre', - 'start' => 'Commencer', - 'stop' => 'Arrêter', - 'submit' => 'Soumettre', - 'subscribe' => 'S\'abonner', - 'switch' => 'Changer', - 'switch_to_role' => 'Passer au rôle', - 'tag' => 'Mot clé', - 'tags' => 'Mots clés', - 'target_link' => [ - 'blank' => 'Ouvrir dans une nouvelle fenêtre', + 'search' => 'Chercher', + 'select' => 'Sélectionner', + 'select_all' => 'Tout sélectionner', + 'send' => 'Envoyer', + 'settings' => 'Paramètres', + 'show' => 'Montrer', + 'show_all' => 'Afficher tout', + 'sign_in' => 'Se connecter', + 'solve' => 'Résoudre', + 'start' => 'Commencer', + 'stop' => 'Arrêter', + 'submit' => 'Soumettre', + 'subscribe' => 'S\'abonner', + 'switch' => 'Changer', + 'switch_to_role' => 'Passer au rôle', + 'tag' => 'Mot clé', + 'tags' => 'Mots clés', + 'target_link' => [ + 'blank' => 'Ouvrir dans une nouvelle fenêtre', 'parent' => 'Ouvrir dans la fenêtre parente', - 'self' => 'Ouvrir dans la fenêtre actuelle', - 'top' => 'Ouvrir dans le cadre le plus haut', + 'self' => 'Ouvrir dans la fenêtre actuelle', + 'top' => 'Ouvrir dans le cadre le plus haut', ], - 'translate' => 'Traduire', - 'translate_it' => 'Traduis le', - 'unpack' => 'Déballer', - 'unsubscribe' => 'Se désabonner', - 'up' => 'Monter', - 'update' => 'Mettre à jour', - 'user' => 'Utilisateur', - 'view' => 'Voir', - 'yes' => 'Oui', + 'translate' => 'Traduire', + 'translate_it' => 'Traduis le', + 'unpack' => 'Déballer', + 'unsubscribe' => 'Se désabonner', + 'up' => 'Monter', + 'update' => 'Mettre à jour', + 'user' => 'Utilisateur', + 'view' => 'Voir', + 'yes' => 'Oui', ]; diff --git a/lang/fr_CA/auth.php b/lang/fr_CA/auth.php index a22cd3f7..7b21d006 100644 --- a/lang/fr_CA/auth.php +++ b/lang/fr_CA/auth.php @@ -3,7 +3,7 @@ declare(strict_types=1); return [ - 'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.', + 'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.', 'password' => 'Le mot de passe est incorrect', 'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.', ]; diff --git a/lang/fr_CA/http-statuses.php b/lang/fr_CA/http-statuses.php index f7114082..1dd3d615 100644 --- a/lang/fr_CA/http-statuses.php +++ b/lang/fr_CA/http-statuses.php @@ -3,82 +3,82 @@ declare(strict_types=1); return [ - '0' => 'Erreur inconnue', - '100' => 'Continuer', - '101' => 'Protocoles de commutation', - '102' => 'En traitement', - '200' => 'OK', - '201' => 'Créé', - '202' => 'Accepté', - '203' => 'Informations non certifiées', - '204' => 'Pas de contenu', - '205' => 'Réinitialiser le contenu', - '206' => 'Contenu partiel', - '207' => 'Statut multiple', - '208' => 'Déjà rapporté', - '226' => 'IM utilisé', - '300' => 'Choix multiples', - '301' => 'Déplacé de façon permanente', - '302' => 'A trouvé', - '303' => 'Voir autre', - '304' => 'Non modifié', - '305' => 'Utiliser un proxy', - '307' => 'Redirection temporaire', - '308' => 'Redirection permanente', - '400' => 'Requête invalide', - '401' => 'Non authentifié', - '402' => 'Paiement requis', - '403' => 'Interdit', - '404' => 'Page non trouvée', - '405' => 'Méthode non autorisée', - '406' => 'Non acceptable', - '407' => 'Authentification proxy requise', - '408' => 'Requête expirée', - '409' => 'Conflit', - '410' => 'Disparu', - '411' => 'Longueur requise', - '412' => 'La précondition a échoué', - '413' => 'Charge utile trop grande', - '414' => 'URI trop long', - '415' => 'Type de média non supporté', - '416' => 'Plage non satisfaisante', - '417' => 'Comportement attendu insatisfaisant', - '418' => 'Je suis une théière', - '419' => 'La session a expiré', - '421' => 'Demande mal dirigée', - '422' => 'Contenu non traitable', - '423' => 'Verrouillé', - '424' => 'Dépendance échouée', - '425' => 'Trop tôt', - '426' => 'Mise à niveau requise', - '428' => 'Condition préalable requise', - '429' => 'Trop de demandes', - '431' => 'Champs d\'en-tête de requête trop grands', - '444' => 'Connexion fermée sans réponse', - '449' => 'Réessayer avec', - '451' => 'Indisponible pour des raisons légales', - '499' => 'Demande fermée par le client', - '500' => 'Erreur interne du serveur', - '501' => 'Non implémenté', - '502' => 'Mauvaise passerelle', - '503' => 'Service non disponible', - '504' => 'Temps d\'attente de la passerelle dépassé', - '505' => 'Version HTTP non prise en charge', - '506' => 'La variante négocie également', - '507' => 'Espace insuffisant', - '508' => 'Boucle détectée', - '509' => 'Limite de bande passante dépassée', - '510' => 'Non prolongé', - '511' => 'Authentification réseau requise', - '520' => 'Erreur inconnue', - '521' => 'Le serveur Web est en panne', - '522' => 'La connexion a expiré', - '523' => 'L\'origine est inaccessible', - '524' => 'Un dépassement de délai s\'est produit', - '525' => 'Échec de la prise de contact SSL', - '526' => 'Certificat SSL invalide', - '527' => 'Erreur de Railgun', - '598' => 'Temps d\'attente de la lecture réseau dépassé', - '599' => 'Temps d\'attente de la connexion réseau dépassé', + '0' => 'Erreur inconnue', + '100' => 'Continuer', + '101' => 'Protocoles de commutation', + '102' => 'En traitement', + '200' => 'OK', + '201' => 'Créé', + '202' => 'Accepté', + '203' => 'Informations non certifiées', + '204' => 'Pas de contenu', + '205' => 'Réinitialiser le contenu', + '206' => 'Contenu partiel', + '207' => 'Statut multiple', + '208' => 'Déjà rapporté', + '226' => 'IM utilisé', + '300' => 'Choix multiples', + '301' => 'Déplacé de façon permanente', + '302' => 'A trouvé', + '303' => 'Voir autre', + '304' => 'Non modifié', + '305' => 'Utiliser un proxy', + '307' => 'Redirection temporaire', + '308' => 'Redirection permanente', + '400' => 'Requête invalide', + '401' => 'Non authentifié', + '402' => 'Paiement requis', + '403' => 'Interdit', + '404' => 'Page non trouvée', + '405' => 'Méthode non autorisée', + '406' => 'Non acceptable', + '407' => 'Authentification proxy requise', + '408' => 'Requête expirée', + '409' => 'Conflit', + '410' => 'Disparu', + '411' => 'Longueur requise', + '412' => 'La précondition a échoué', + '413' => 'Charge utile trop grande', + '414' => 'URI trop long', + '415' => 'Type de média non supporté', + '416' => 'Plage non satisfaisante', + '417' => 'Comportement attendu insatisfaisant', + '418' => 'Je suis une théière', + '419' => 'La session a expiré', + '421' => 'Demande mal dirigée', + '422' => 'Contenu non traitable', + '423' => 'Verrouillé', + '424' => 'Dépendance échouée', + '425' => 'Trop tôt', + '426' => 'Mise à niveau requise', + '428' => 'Condition préalable requise', + '429' => 'Trop de demandes', + '431' => 'Champs d\'en-tête de requête trop grands', + '444' => 'Connexion fermée sans réponse', + '449' => 'Réessayer avec', + '451' => 'Indisponible pour des raisons légales', + '499' => 'Demande fermée par le client', + '500' => 'Erreur interne du serveur', + '501' => 'Non implémenté', + '502' => 'Mauvaise passerelle', + '503' => 'Service non disponible', + '504' => 'Temps d\'attente de la passerelle dépassé', + '505' => 'Version HTTP non prise en charge', + '506' => 'La variante négocie également', + '507' => 'Espace insuffisant', + '508' => 'Boucle détectée', + '509' => 'Limite de bande passante dépassée', + '510' => 'Non prolongé', + '511' => 'Authentification réseau requise', + '520' => 'Erreur inconnue', + '521' => 'Le serveur Web est en panne', + '522' => 'La connexion a expiré', + '523' => 'L\'origine est inaccessible', + '524' => 'Un dépassement de délai s\'est produit', + '525' => 'Échec de la prise de contact SSL', + '526' => 'Certificat SSL invalide', + '527' => 'Erreur de Railgun', + '598' => 'Temps d\'attente de la lecture réseau dépassé', + '599' => 'Temps d\'attente de la connexion réseau dépassé', 'unknownError' => 'Erreur inconnue', ]; diff --git a/lang/fr_CA/pagination.php b/lang/fr_CA/pagination.php index 225391eb..78d8fd96 100644 --- a/lang/fr_CA/pagination.php +++ b/lang/fr_CA/pagination.php @@ -3,6 +3,6 @@ declare(strict_types=1); return [ - 'next' => 'Suivant »', + 'next' => 'Suivant »', 'previous' => '« Précédent', ]; diff --git a/lang/fr_CA/passwords.php b/lang/fr_CA/passwords.php index 75ae1485..0a6eeac4 100644 --- a/lang/fr_CA/passwords.php +++ b/lang/fr_CA/passwords.php @@ -3,9 +3,9 @@ declare(strict_types=1); return [ - 'reset' => 'Votre mot de passe a été réinitialisé !', - 'sent' => 'Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !', + 'reset' => 'Votre mot de passe a été réinitialisé !', + 'sent' => 'Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !', 'throttled' => 'Veuillez patienter avant de réessayer.', - 'token' => 'Ce jeton de réinitialisation du mot de passe n\'est pas valide.', - 'user' => 'Aucun utilisateur n\'a été trouvé avec cette adresse email.', + 'token' => 'Ce jeton de réinitialisation du mot de passe n\'est pas valide.', + 'user' => 'Aucun utilisateur n\'a été trouvé avec cette adresse email.', ]; diff --git a/lang/fr_CA/validation.php b/lang/fr_CA/validation.php index 652af8f2..cc9c5422 100644 --- a/lang/fr_CA/validation.php +++ b/lang/fr_CA/validation.php @@ -3,286 +3,286 @@ declare(strict_types=1); return [ - 'accepted' => 'Le champ :attribute doit être accepté.', - 'accepted_if' => 'Le champ :attribute doit être accepté quand :other a la valeur :value.', - 'active_url' => 'Le champ :attribute n\'est pas une URL valide.', - 'after' => 'Le champ :attribute doit être une date postérieure au :date.', - 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.', - 'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.', - 'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.', - 'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.', - 'any_of' => 'Le champ :attribute est invalide.', - 'array' => 'Le champ :attribute doit être un tableau.', - 'ascii' => 'Le champ :attribute ne doit contenir que des caractères alphanumériques et des symboles codés sur un octet.', - 'before' => 'Le champ :attribute doit être une date antérieure au :date.', - 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.', - 'between' => [ - 'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.', - 'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.', + 'accepted' => 'Le champ :attribute doit être accepté.', + 'accepted_if' => 'Le champ :attribute doit être accepté quand :other a la valeur :value.', + 'active_url' => 'Le champ :attribute n\'est pas une URL valide.', + 'after' => 'Le champ :attribute doit être une date postérieure au :date.', + 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.', + 'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.', + 'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.', + 'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.', + 'any_of' => 'Le champ :attribute est invalide.', + 'array' => 'Le champ :attribute doit être un tableau.', + 'ascii' => 'Le champ :attribute ne doit contenir que des caractères alphanumériques et des symboles codés sur un octet.', + 'before' => 'Le champ :attribute doit être une date antérieure au :date.', + 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.', + 'between' => [ + 'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.', + 'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.', 'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.', - 'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.', + 'string' => 'Le texte :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.', - 'contains' => 'Le champ :attribute manque une valeur requise.', - 'current_password' => 'Le mot de passe est incorrect.', - 'date' => 'Le champ :attribute n\'est pas une date valide.', - 'date_equals' => 'Le champ :attribute doit être une date égale à :date.', - 'date_format' => 'Le champ :attribute ne correspond pas au format :format.', - 'decimal' => 'Le champ :attribute doit comporter :decimal décimales.', - 'declined' => 'Le champ :attribute doit être décliné.', - 'declined_if' => 'Le champ :attribute doit être décliné quand :other a la valeur :value.', - 'different' => 'Les champs :attribute et :other doivent être différents.', - 'digits' => 'Le champ :attribute doit contenir :digits chiffres.', - 'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.', - 'dimensions' => 'La taille de l\'image :attribute n\'est pas conforme.', - 'distinct' => 'Le champ :attribute a une valeur en double.', - 'doesnt_contain' => 'Le champ :attribute ne doit contenir aucun des éléments suivants : :values.', - 'doesnt_end_with' => 'Le champ :attribute ne doit pas finir avec une des valeurs suivantes : :values.', - 'doesnt_start_with' => 'Le champ :attribute ne doit pas commencer avec une des valeurs suivantes : :values.', - 'email' => 'Le champ :attribute doit être une adresse e-mail valide.', - 'encoding' => 'The :attribute field must be encoded in :encoding.', - 'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values', - 'enum' => 'Le champ :attribute sélectionné est invalide.', - 'exists' => 'Le champ :attribute sélectionné est invalide.', - 'extensions' => 'Le champ :attribute doit avoir l\'une des extensions suivantes : :values.', - 'file' => 'Le champ :attribute doit être un fichier.', - 'filled' => 'Le champ :attribute doit avoir une valeur.', - 'gt' => [ - 'array' => 'Le tableau :attribute doit contenir plus de :value éléments.', - 'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.', + '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.', + 'contains' => 'Le champ :attribute manque une valeur requise.', + 'current_password' => 'Le mot de passe est incorrect.', + 'date' => 'Le champ :attribute n\'est pas une date valide.', + 'date_equals' => 'Le champ :attribute doit être une date égale à :date.', + 'date_format' => 'Le champ :attribute ne correspond pas au format :format.', + 'decimal' => 'Le champ :attribute doit comporter :decimal décimales.', + 'declined' => 'Le champ :attribute doit être décliné.', + 'declined_if' => 'Le champ :attribute doit être décliné quand :other a la valeur :value.', + 'different' => 'Les champs :attribute et :other doivent être différents.', + 'digits' => 'Le champ :attribute doit contenir :digits chiffres.', + 'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.', + 'dimensions' => 'La taille de l\'image :attribute n\'est pas conforme.', + 'distinct' => 'Le champ :attribute a une valeur en double.', + 'doesnt_contain' => 'Le champ :attribute ne doit contenir aucun des éléments suivants : :values.', + 'doesnt_end_with' => 'Le champ :attribute ne doit pas finir avec une des valeurs suivantes : :values.', + 'doesnt_start_with' => 'Le champ :attribute ne doit pas commencer avec une des valeurs suivantes : :values.', + 'email' => 'Le champ :attribute doit être une adresse e-mail valide.', + 'encoding' => 'The :attribute field must be encoded in :encoding.', + 'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values', + 'enum' => 'Le champ :attribute sélectionné est invalide.', + 'exists' => 'Le champ :attribute sélectionné est invalide.', + 'extensions' => 'Le champ :attribute doit avoir l\'une des extensions suivantes : :values.', + 'file' => 'Le champ :attribute doit être un fichier.', + 'filled' => 'Le champ :attribute doit avoir une valeur.', + 'gt' => [ + 'array' => 'Le tableau :attribute doit contenir plus de :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.', 'numeric' => 'La valeur de :attribute doit être supérieure à :value.', - 'string' => 'Le texte :attribute doit contenir plus de :value caractères.', + 'string' => 'Le texte :attribute doit contenir plus de :value caractères.', ], - 'gte' => [ - 'array' => 'Le tableau :attribute doit contenir au moins :value éléments.', - 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.', + 'gte' => [ + 'array' => 'Le tableau :attribute doit contenir au moins :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.', 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.', - 'string' => 'Le texte :attribute doit contenir au moins :value caractères.', + 'string' => 'Le texte :attribute doit contenir au moins :value caractères.', ], - 'hex_color' => 'Le champ :attribute doit être une couleur hexadécimale valide.', - 'image' => 'Le champ :attribute doit être une image.', - 'in' => 'Le champ :attribute est invalide.', - 'in_array' => 'Le champ :attribute n\'existe pas dans :other.', - 'in_array_keys' => 'Le champ :attribute doit contenir au moins l\'une des clés suivantes : :values.', - 'integer' => 'Le champ :attribute doit être un 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 un document JSON valide.', - 'list' => 'Le champ :attribute doit être une liste.', - 'lowercase' => 'Le champ :attribute doit être en minuscules.', - 'lt' => [ - 'array' => 'Le tableau :attribute doit contenir moins de :value éléments.', - 'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.', + 'hex_color' => 'Le champ :attribute doit être une couleur hexadécimale valide.', + 'image' => 'Le champ :attribute doit être une image.', + 'in' => 'Le champ :attribute est invalide.', + 'in_array' => 'Le champ :attribute n\'existe pas dans :other.', + 'in_array_keys' => 'Le champ :attribute doit contenir au moins l\'une des clés suivantes : :values.', + 'integer' => 'Le champ :attribute doit être un 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 un document JSON valide.', + 'list' => 'Le champ :attribute doit être une liste.', + 'lowercase' => 'Le champ :attribute doit être en minuscules.', + 'lt' => [ + 'array' => 'Le tableau :attribute doit contenir moins de :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.', 'numeric' => 'La valeur de :attribute doit être inférieure à :value.', - 'string' => 'Le texte :attribute doit contenir moins de :value caractères.', + 'string' => 'Le texte :attribute doit contenir moins de :value caractères.', ], - 'lte' => [ - 'array' => 'Le tableau :attribute doit contenir au plus :value éléments.', - 'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.', + 'lte' => [ + 'array' => 'Le tableau :attribute doit contenir au plus :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.', 'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.', - 'string' => 'Le texte :attribute doit contenir au plus :value caractères.', + 'string' => 'Le texte :attribute doit contenir au plus :value caractères.', ], - 'mac_address' => 'Le champ :attribute doit être une adresse MAC valide.', - 'max' => [ - 'array' => 'Le tableau :attribute ne peut pas contenir plus que :max éléments.', - 'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.', + 'mac_address' => 'Le champ :attribute doit être une adresse MAC valide.', + 'max' => [ + 'array' => 'Le tableau :attribute ne peut pas contenir plus que :max éléments.', + 'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.', 'numeric' => 'La valeur de :attribute ne peut pas être supérieure à :max.', - 'string' => 'Le texte de :attribute ne peut pas contenir plus de :max caractères.', + 'string' => 'Le texte de :attribute ne peut pas contenir plus de :max caractères.', ], - 'max_digits' => 'Le champ :attribute ne doit pas 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 tableau :attribute doit contenir au moins :min éléments.', - 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :min kilo-octets.', + 'max_digits' => 'Le champ :attribute ne doit pas 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 tableau :attribute doit contenir au moins :min éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :min kilo-octets.', 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.', - 'string' => 'Le texte de :attribute doit contenir au moins :min caractères.', + 'string' => 'Le texte de :attribute doit 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 manquant quand :other a la valeur :value.', - 'missing_unless' => 'Le champ :attribute doit être manquant sauf si :other a la valeur :value.', - 'missing_with' => 'Le champ :attribute doit être manquant quand :values est présent.', - 'missing_with_all' => 'Le champ :attribute doit être manquant quand :values sont présents.', - 'multiple_of' => 'La valeur de :attribute doit être un multiple de :value', - 'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.', - 'not_regex' => 'Le format du champ :attribute n\'est pas valide.', - 'numeric' => 'Le champ :attribute doit contenir un nombre.', - 'password' => [ - 'letters' => 'Le champ :attribute doit contenir au moins une lettre.', - 'mixed' => 'Le champ :attribute doit contenir au moins une majuscule et une minuscule.', - 'numbers' => 'Le champ :attribute doit contenir au moins un chiffre.', - 'symbols' => 'Le champ :attribute doit contenir au moins un symbole.', + '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 manquant quand :other a la valeur :value.', + 'missing_unless' => 'Le champ :attribute doit être manquant sauf si :other a la valeur :value.', + 'missing_with' => 'Le champ :attribute doit être manquant quand :values est présent.', + 'missing_with_all' => 'Le champ :attribute doit être manquant quand :values sont présents.', + 'multiple_of' => 'La valeur de :attribute doit être un multiple de :value', + 'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.', + 'not_regex' => 'Le format du champ :attribute n\'est pas valide.', + 'numeric' => 'Le champ :attribute doit contenir un nombre.', + 'password' => [ + 'letters' => 'Le champ :attribute doit contenir au moins une lettre.', + 'mixed' => 'Le champ :attribute doit contenir au moins une majuscule et une minuscule.', + 'numbers' => 'Le champ :attribute doit contenir au moins un chiffre.', + 'symbols' => 'Le champ :attribute doit contenir au moins un symbole.', 'uncompromised' => 'La valeur du champ :attribute est apparue dans une fuite de données. Veuillez choisir une valeur différente.', ], - 'present' => 'Le champ :attribute doit être présent.', - 'present_if' => 'Le champ :attribute doit être présent lorsque :other est :value.', - 'present_unless' => 'Le champ :attribute doit être présent sauf si :other vaut :value.', - 'present_with' => 'Le champ :attribute doit être présent lorsque :values est présent.', - 'present_with_all' => 'Le champ :attribute doit être présent lorsque :values sont présents.', - 'prohibited' => 'Le champ :attribute est interdit.', - 'prohibited_if' => 'Le champ :attribute est interdit quand :other a la valeur :value.', + 'present' => 'Le champ :attribute doit être présent.', + 'present_if' => 'Le champ :attribute doit être présent lorsque :other est :value.', + 'present_unless' => 'Le champ :attribute doit être présent sauf si :other vaut :value.', + 'present_with' => 'Le champ :attribute doit être présent lorsque :values est présent.', + 'present_with_all' => 'Le champ :attribute doit être présent lorsque :values sont présents.', + 'prohibited' => 'Le champ :attribute est interdit.', + 'prohibited_if' => 'Le champ :attribute est interdit quand :other a la valeur :value.', 'prohibited_if_accepted' => 'Le champ :attribute est interdit quand :other a été accepté.', 'prohibited_if_declined' => 'Le champ :attribute est interdit quand :other a été refusé.', - 'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other est l\'une des valeurs :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 la valeur de :other est :value.', - 'required_if_accepted' => 'Le champ :attribute est obligatoire quand le champ :other a été accepté.', - 'required_if_declined' => 'Le champ :attribute est obligatoire quand le champ :other a été refusé.', - 'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.', - 'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.', - 'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.', - 'required_without' => 'Le champ :attribute est obligatoire quand :values n\'est pas présent.', - 'required_without_all' => 'Le champ :attribute est requis quand aucun de :values n\'est présent.', - 'same' => 'Les champs :attribute et :other doivent être identiques.', - 'size' => [ - 'array' => 'Le tableau :attribute doit contenir :size éléments.', - 'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.', + 'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other est l\'une des valeurs :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 la valeur de :other est :value.', + 'required_if_accepted' => 'Le champ :attribute est obligatoire quand le champ :other a été accepté.', + 'required_if_declined' => 'Le champ :attribute est obligatoire quand le champ :other a été refusé.', + 'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.', + 'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.', + 'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.', + 'required_without' => 'Le champ :attribute est obligatoire quand :values n\'est pas présent.', + 'required_without_all' => 'Le champ :attribute est requis quand aucun de :values n\'est présent.', + 'same' => 'Les champs :attribute et :other doivent être identiques.', + 'size' => [ + 'array' => 'Le tableau :attribute doit contenir :size éléments.', + 'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.', 'numeric' => 'La valeur de :attribute doit être :size.', - 'string' => 'Le texte de :attribute doit contenir :size caractères.', + 'string' => 'Le texte de :attribute doit contenir :size caractères.', ], - 'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values', - 'string' => 'Le champ :attribute doit être une chaîne de caractères.', - 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', - 'ulid' => 'Le champ :attribute doit être un ULID valide.', - 'unique' => 'La valeur du champ :attribute est déjà utilisée.', - 'uploaded' => 'Le fichier du champ :attribute n\'a pu être téléversé.', - 'uppercase' => 'Le champ :attribute doit être en majuscules.', - 'url' => 'Le format de l\'URL de :attribute n\'est pas valide.', - 'uuid' => 'Le champ :attribute doit être un UUID valide', - 'attributes' => [ - 'address' => 'adresse', - 'affiliate_url' => 'URL d\'affiliation', - 'age' => 'âge', - 'amount' => 'montant', - 'announcement' => 'annonce', - 'area' => 'zone', - 'audience_prize' => 'prix du public', - 'audience_winner' => 'gagnant du public', - 'available' => 'disponible', - 'birthday' => 'anniversaire', - 'body' => 'corps', - 'city' => 'ville', - 'color' => 'color', - 'company' => 'entreprise', - 'compilation' => 'compilation', - 'concept' => 'concept', - 'conditions' => 'conditions', - 'content' => 'contenu', - 'contest' => 'contest', - 'country' => 'pays', - 'cover' => 'couverture', - 'created_at' => 'date de création', - 'creator' => 'créateur', - 'currency' => 'devise', - 'current_password' => 'mot de passe actuel', - 'customer' => 'client', - 'date' => 'date', - 'date_of_birth' => 'date de naissance', - 'dates' => 'rendez-vous', - 'day' => 'jour', - 'deleted_at' => 'date de suppression', - 'description' => 'description', - 'display_type' => 'type d\'affichage', - 'district' => 'quartier', - 'duration' => 'durée', - 'email' => 'adresse e-mail', - 'excerpt' => 'extrait', - 'filter' => 'filtre', - 'finished_at' => 'date de fin', - 'first_name' => 'prénom', - 'gender' => 'genre', - 'grand_prize' => 'grand prix', - 'group' => 'groupe', - 'hour' => 'heure', - 'image' => 'image', - 'image_desktop' => 'image de bureau', - 'image_main' => 'image principale', - 'image_mobile' => 'image mobile', - 'images' => 'images', - 'is_audience_winner' => 'est le gagnant du public', - 'is_hidden' => 'est caché', - 'is_subscribed' => 'est abonné', - 'is_visible' => 'est visible', - 'is_winner' => 'est gagnant', - 'items' => 'articles', - 'key' => 'clé', - 'last_name' => 'nom de famille', - 'lesson' => 'leçon', - 'line_address_1' => 'ligne d\'adresse 1', - 'line_address_2' => 'ligne d\'adresse 2', - 'login' => 'identifiant', - 'message' => 'message', - 'middle_name' => 'deuxième prénom', - 'minute' => 'minute', - 'mobile' => 'portable', - 'month' => 'mois', - 'name' => 'nom', - 'national_code' => 'code national', - 'number' => 'numéro', - 'password' => 'mot de passe', - 'password_confirmation' => 'confirmation du mot de passe', - 'phone' => 'téléphone', - 'photo' => 'photo', - 'portfolio' => 'portefeuille', - 'postal_code' => 'code postal', - 'preview' => 'aperçu', - 'price' => 'prix', - 'product_id' => 'identifiant du produit', - 'product_uid' => 'UID du produit', - 'product_uuid' => 'UUID du produit', - 'promo_code' => 'code promo', - 'province' => 'région', - 'quantity' => 'quantité', - 'reason' => 'raison', + 'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values', + 'string' => 'Le champ :attribute doit être une chaîne de caractères.', + 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', + 'ulid' => 'Le champ :attribute doit être un ULID valide.', + 'unique' => 'La valeur du champ :attribute est déjà utilisée.', + 'uploaded' => 'Le fichier du champ :attribute n\'a pu être téléversé.', + 'uppercase' => 'Le champ :attribute doit être en majuscules.', + 'url' => 'Le format de l\'URL de :attribute n\'est pas valide.', + 'uuid' => 'Le champ :attribute doit être un UUID valide', + 'attributes' => [ + 'address' => 'adresse', + 'affiliate_url' => 'URL d\'affiliation', + 'age' => 'âge', + 'amount' => 'montant', + 'announcement' => 'annonce', + 'area' => 'zone', + 'audience_prize' => 'prix du public', + 'audience_winner' => 'gagnant du public', + 'available' => 'disponible', + 'birthday' => 'anniversaire', + 'body' => 'corps', + 'city' => 'ville', + 'color' => 'color', + 'company' => 'entreprise', + 'compilation' => 'compilation', + 'concept' => 'concept', + 'conditions' => 'conditions', + 'content' => 'contenu', + 'contest' => 'contest', + 'country' => 'pays', + 'cover' => 'couverture', + 'created_at' => 'date de création', + 'creator' => 'créateur', + 'currency' => 'devise', + 'current_password' => 'mot de passe actuel', + 'customer' => 'client', + 'date' => 'date', + 'date_of_birth' => 'date de naissance', + 'dates' => 'rendez-vous', + 'day' => 'jour', + 'deleted_at' => 'date de suppression', + 'description' => 'description', + 'display_type' => 'type d\'affichage', + 'district' => 'quartier', + 'duration' => 'durée', + 'email' => 'adresse e-mail', + 'excerpt' => 'extrait', + 'filter' => 'filtre', + 'finished_at' => 'date de fin', + 'first_name' => 'prénom', + 'gender' => 'genre', + 'grand_prize' => 'grand prix', + 'group' => 'groupe', + 'hour' => 'heure', + 'image' => 'image', + 'image_desktop' => 'image de bureau', + 'image_main' => 'image principale', + 'image_mobile' => 'image mobile', + 'images' => 'images', + 'is_audience_winner' => 'est le gagnant du public', + 'is_hidden' => 'est caché', + 'is_subscribed' => 'est abonné', + 'is_visible' => 'est visible', + 'is_winner' => 'est gagnant', + 'items' => 'articles', + 'key' => 'clé', + 'last_name' => 'nom de famille', + 'lesson' => 'leçon', + 'line_address_1' => 'ligne d\'adresse 1', + 'line_address_2' => 'ligne d\'adresse 2', + 'login' => 'identifiant', + 'message' => 'message', + 'middle_name' => 'deuxième prénom', + 'minute' => 'minute', + 'mobile' => 'portable', + 'month' => 'mois', + 'name' => 'nom', + 'national_code' => 'code national', + 'number' => 'numéro', + 'password' => 'mot de passe', + 'password_confirmation' => 'confirmation du mot de passe', + 'phone' => 'téléphone', + 'photo' => 'photo', + 'portfolio' => 'portefeuille', + 'postal_code' => 'code postal', + 'preview' => 'aperçu', + 'price' => 'prix', + 'product_id' => 'identifiant du produit', + 'product_uid' => 'UID du produit', + 'product_uuid' => 'UUID du produit', + 'promo_code' => 'code promo', + 'province' => 'région', + 'quantity' => 'quantité', + 'reason' => 'raison', 'recaptcha_response_field' => 'champ de réponse reCAPTCHA', - 'referee' => 'arbitre', - 'referees' => 'arbitres', - 'region' => 'region', - 'reject_reason' => 'motif de rejet', - 'remember' => 'se souvenir', - 'restored_at' => 'date de restauration', - 'result_text_under_image' => 'texte de résultat sous l\'image', - 'role' => 'rôle', - 'rule' => 'règle', - 'rules' => 'règles', - 'second' => 'seconde', - 'sex' => 'sexe', - 'shipment' => 'expédition', - 'short_text' => 'texte court', - 'size' => 'taille', - 'skills' => 'compétences', - 'slug' => 'slug', - 'specialization' => 'spécialisation', - 'started_at' => 'date de début', - 'state' => 'état', - 'status' => 'statut', - 'street' => 'rue', - 'student' => 'étudiant', - 'subject' => 'sujet', - 'tag' => 'mot clé', - 'tags' => 'mots clés', - 'teacher' => 'professeur', - 'terms' => 'conditions', - 'test_description' => 'description du test', - 'test_locale' => 'localisation du test', - 'test_name' => 'nom du test', - 'text' => 'texte', - 'time' => 'heure', - 'title' => 'titre', - 'type' => 'type', - 'updated_at' => 'date de mise à jour', - 'user' => 'utilisateur', - 'username' => 'nom d\'utilisateur', - 'value' => 'valeur', - 'winner' => 'gagnant', - 'work' => 'travail', - 'year' => 'année', + 'referee' => 'arbitre', + 'referees' => 'arbitres', + 'region' => 'region', + 'reject_reason' => 'motif de rejet', + 'remember' => 'se souvenir', + 'restored_at' => 'date de restauration', + 'result_text_under_image' => 'texte de résultat sous l\'image', + 'role' => 'rôle', + 'rule' => 'règle', + 'rules' => 'règles', + 'second' => 'seconde', + 'sex' => 'sexe', + 'shipment' => 'expédition', + 'short_text' => 'texte court', + 'size' => 'taille', + 'skills' => 'compétences', + 'slug' => 'slug', + 'specialization' => 'spécialisation', + 'started_at' => 'date de début', + 'state' => 'état', + 'status' => 'statut', + 'street' => 'rue', + 'student' => 'étudiant', + 'subject' => 'sujet', + 'tag' => 'mot clé', + 'tags' => 'mots clés', + 'teacher' => 'professeur', + 'terms' => 'conditions', + 'test_description' => 'description du test', + 'test_locale' => 'localisation du test', + 'test_name' => 'nom du test', + 'text' => 'texte', + 'time' => 'heure', + 'title' => 'titre', + 'type' => 'type', + 'updated_at' => 'date de mise à jour', + 'user' => 'utilisateur', + 'username' => 'nom d\'utilisateur', + 'value' => 'valeur', + 'winner' => 'gagnant', + 'work' => 'travail', + 'year' => 'année', ], ]; diff --git a/lang/it/actions.php b/lang/it/actions.php index b50c5d3f..2233748d 100644 --- a/lang/it/actions.php +++ b/lang/it/actions.php @@ -3,117 +3,117 @@ declare(strict_types=1); return [ - 'accept' => 'Accettare', - 'action' => 'Azione', - 'actions' => 'Azioni', - 'add' => 'Aggiungi', - 'admin' => 'Ammin', - 'agree' => 'Essere d\'accordo', - 'archive' => 'Archivio', - 'assign' => 'Assegnare', - 'associate' => 'Associare', - 'attach' => 'Allega', - 'browse' => 'Naviga', - 'cancel' => 'Annulla', - 'choose' => 'Scegli', - 'choose_file' => 'Scegli il file', - 'choose_image' => 'Scegli Immagine', - 'click_to_copy' => 'Fare clic per copiare', - 'close' => 'Chiudi', - 'collapse' => 'Comprimi', - 'collapse_all' => 'Comprimi tutto', - 'comment' => 'Commenta', - 'confirm' => 'Conferma', - 'connect' => 'Collega', - 'create' => 'Crea', - 'delete' => 'Elimina', - 'detach' => 'Scollega', - 'details' => 'Dettagli', - 'disable' => 'Disattiva', - 'discard' => 'Scarta', - 'done' => 'Fatto', - 'down' => 'Giù', - 'duplicate' => 'Duplica', - 'edit' => 'Modifica', - 'enable' => 'Abilita', - 'expand' => 'Espandi', - 'expand_all' => 'Espandi tutto', - 'explanation' => 'Spiegazione', - 'export' => 'Esporta', - 'file' => 'File', - 'files' => 'File', - 'go_home' => 'Torna alla Home', - 'hide' => 'Nascondi', - 'home' => 'Home', - 'image' => 'Immagine', - 'impersonate' => 'Impersona', - 'impersonation' => 'Impersonificazione', - 'import' => 'Importa', - 'introduction' => 'introduzione', - 'like' => 'Mi Piace', - 'load' => 'Carica', - 'localize' => 'Localizza', - 'log_in' => 'Login', - 'log_out' => 'Disconnettersi', - 'named' => [ - 'add' => 'Aggiungi :name', - 'choose' => 'Scegli :name', - 'create' => 'Crea :name', - 'delete' => 'Cancella :name', + 'accept' => 'Accettare', + 'action' => 'Azione', + 'actions' => 'Azioni', + 'add' => 'Aggiungi', + 'admin' => 'Ammin', + 'agree' => 'Essere d\'accordo', + 'archive' => 'Archivio', + 'assign' => 'Assegnare', + 'associate' => 'Associare', + 'attach' => 'Allega', + 'browse' => 'Naviga', + 'cancel' => 'Annulla', + 'choose' => 'Scegli', + 'choose_file' => 'Scegli il file', + 'choose_image' => 'Scegli Immagine', + 'click_to_copy' => 'Fare clic per copiare', + 'close' => 'Chiudi', + 'collapse' => 'Comprimi', + 'collapse_all' => 'Comprimi tutto', + 'comment' => 'Commenta', + 'confirm' => 'Conferma', + 'connect' => 'Collega', + 'create' => 'Crea', + 'delete' => 'Elimina', + 'detach' => 'Scollega', + 'details' => 'Dettagli', + 'disable' => 'Disattiva', + 'discard' => 'Scarta', + 'done' => 'Fatto', + 'down' => 'Giù', + 'duplicate' => 'Duplica', + 'edit' => 'Modifica', + 'enable' => 'Abilita', + 'expand' => 'Espandi', + 'expand_all' => 'Espandi tutto', + 'explanation' => 'Spiegazione', + 'export' => 'Esporta', + 'file' => 'File', + 'files' => 'File', + 'go_home' => 'Torna alla Home', + 'hide' => 'Nascondi', + 'home' => 'Home', + 'image' => 'Immagine', + 'impersonate' => 'Impersona', + 'impersonation' => 'Impersonificazione', + 'import' => 'Importa', + 'introduction' => 'introduzione', + 'like' => 'Mi Piace', + 'load' => 'Carica', + 'localize' => 'Localizza', + 'log_in' => 'Login', + 'log_out' => 'Disconnettersi', + 'named' => [ + 'add' => 'Aggiungi :name', + 'choose' => 'Scegli :name', + 'create' => 'Crea :name', + 'delete' => 'Cancella :name', 'duplicate' => 'Duplica: nome', - 'edit' => 'Modifica :name', - 'export' => 'Esporta :name', - 'hide' => 'Nascondi :name', - 'import' => 'Importa :name', - 'new' => 'Nuovo :name', - 'restore' => 'Ripristina :name', - 'save' => 'Salva :name', - 'search' => 'Cerca :name', - 'show' => 'Mostra :name', - 'update' => 'Aggiorna :name', - 'view' => 'Mostra :name', + 'edit' => 'Modifica :name', + 'export' => 'Esporta :name', + 'hide' => 'Nascondi :name', + 'import' => 'Importa :name', + 'new' => 'Nuovo :name', + 'restore' => 'Ripristina :name', + 'save' => 'Salva :name', + 'search' => 'Cerca :name', + 'show' => 'Mostra :name', + 'update' => 'Aggiorna :name', + 'view' => 'Mostra :name', ], - 'new' => 'Nuovo', - 'no' => 'NO', - 'open' => 'Aprire', - 'open_website' => 'Apri sul sito', - 'preview' => 'Anteprima', - 'price' => 'Prezzo', - 'record' => 'Documentazione', - 'restore' => 'Ripristina', - 'save' => 'Salva', - 'save_and_close' => 'Salva e chiudi', + 'new' => 'Nuovo', + 'no' => 'NO', + 'open' => 'Aprire', + 'open_website' => 'Apri sul sito', + 'preview' => 'Anteprima', + 'price' => 'Prezzo', + 'record' => 'Documentazione', + 'restore' => 'Ripristina', + 'save' => 'Salva', + 'save_and_close' => 'Salva e chiudi', 'save_and_return' => 'Salva e ritorna', - 'search' => 'Ricerca', - 'select' => 'Seleziona', - 'select_all' => 'Seleziona tutto', - 'send' => 'Invia', - 'settings' => 'Impostazioni', - 'show' => 'Mostra', - 'show_all' => 'Mostra tutto', - 'sign_in' => 'Accedi', - 'solve' => 'Risolvere', - 'start' => 'Avvia', - 'stop' => 'Ferma', - 'submit' => 'Invia', - 'subscribe' => 'Sottoscrivi', - 'switch' => 'Passa', - 'switch_to_role' => 'Passa al ruolo', - 'tag' => 'Etichetta', - 'tags' => 'Etichette', - 'target_link' => [ - 'blank' => 'Apri in una nuova finestra', + 'search' => 'Ricerca', + 'select' => 'Seleziona', + 'select_all' => 'Seleziona tutto', + 'send' => 'Invia', + 'settings' => 'Impostazioni', + 'show' => 'Mostra', + 'show_all' => 'Mostra tutto', + 'sign_in' => 'Accedi', + 'solve' => 'Risolvere', + 'start' => 'Avvia', + 'stop' => 'Ferma', + 'submit' => 'Invia', + 'subscribe' => 'Sottoscrivi', + 'switch' => 'Passa', + 'switch_to_role' => 'Passa al ruolo', + 'tag' => 'Etichetta', + 'tags' => 'Etichette', + 'target_link' => [ + 'blank' => 'Apri in una nuova finestra', 'parent' => 'Apri in un frame principale', - 'self' => 'Apri in una finestra corrente', - 'top' => 'Apri nel riquadro più in alto', + 'self' => 'Apri in una finestra corrente', + 'top' => 'Apri nel riquadro più in alto', ], - 'translate' => 'Traduci', - 'translate_it' => 'Traducilo', - 'unpack' => 'Decomprimi', - 'unsubscribe' => 'Annulla l\'iscrizione', - 'up' => 'Su', - 'update' => 'Aggiorna', - 'user' => 'Utente', - 'view' => 'Visualizza', - 'yes' => 'SI', + 'translate' => 'Traduci', + 'translate_it' => 'Traducilo', + 'unpack' => 'Decomprimi', + 'unsubscribe' => 'Annulla l\'iscrizione', + 'up' => 'Su', + 'update' => 'Aggiorna', + 'user' => 'Utente', + 'view' => 'Visualizza', + 'yes' => 'SI', ]; diff --git a/lang/it/auth.php b/lang/it/auth.php index 54a09678..e26a190d 100644 --- a/lang/it/auth.php +++ b/lang/it/auth.php @@ -3,7 +3,7 @@ declare(strict_types=1); return [ - 'failed' => 'Credenziali non valide.', + 'failed' => 'Credenziali non valide.', 'password' => 'Il campo :attribute non è corretto.', 'throttle' => 'Troppi tentativi di accesso. Riprova tra :seconds secondi.', ]; diff --git a/lang/it/http-statuses.php b/lang/it/http-statuses.php index 72321c32..25aa3e95 100644 --- a/lang/it/http-statuses.php +++ b/lang/it/http-statuses.php @@ -3,82 +3,82 @@ declare(strict_types=1); return [ - '0' => 'Errore sconosciuto', - '100' => 'Continua', - '101' => 'Scambiando protocolli', - '102' => 'In processo', - '200' => 'OK', - '201' => 'Creato', - '202' => 'Accettato', - '203' => 'Informazione non autorevole', - '204' => 'Nessun contenuto', - '205' => 'Resetta il contenuto', - '206' => 'Contenuto parziale', - '207' => 'Stati multipli', - '208' => 'Già riportato', - '226' => 'IM utilizzati', - '300' => 'Scelte multiple', - '301' => 'Trasferito permanentemente', - '302' => 'Trovato', - '303' => 'Guarda altro', - '304' => 'Non modificata', - '305' => 'Usa un proxy', - '307' => 'Re-indirizzamento temporaneo', - '308' => 'Re-indirizzamento permanente', - '400' => 'Cattiva richiesta', - '401' => 'Non autorizzata', - '402' => 'Pagamento richiesto', - '403' => 'Accesso vietato', - '404' => 'Pagina non trovata', - '405' => 'Metodo non consentito', - '406' => 'Non accettabile', - '407' => 'Autenticazione al proxy richiesta', - '408' => 'Tempo scaduto per la richiesta', - '409' => 'Conflitto', - '410' => 'Andata', - '411' => 'Lunghezza necessaria', - '412' => 'Precondizione fallita', - '413' => 'Payload troppo grande', - '414' => 'URI troppo lungo', - '415' => 'Media Type non supportato', - '416' => 'intervallo non soddisfacibile', - '417' => 'Aspettativa fallita', - '418' => 'Sono una teiera', - '419' => 'Sessione scaduta', - '421' => 'Richiesta mal indirizzata', - '422' => 'Entità improcessabile', - '423' => 'Bloccata', - '424' => 'Dipendenza fallita', - '425' => 'Troppo presto', - '426' => 'Aggiornamento richiesto', - '428' => 'Precondizione necessaria', - '429' => 'Troppe richieste', - '431' => 'Campi header della richiesta troppo grandi', - '444' => 'Connessione chiusa senza risposta', - '449' => 'Riprova con', - '451' => 'Non disponibile per motivi legali', - '499' => 'Richiesta chiusa del cliente', - '500' => 'Errore interno al server', - '501' => 'Non implementato', - '502' => 'Gateway cattivo', - '503' => 'In manutenzione', - '504' => 'Tempo scaduto per il gateway', - '505' => 'Versione HTTP non supportata', - '506' => 'Variante anche negozia', - '507' => 'Spazio insufficiente', - '508' => 'Loop identificato', - '509' => 'Limita di banda superato', - '510' => 'Non esteso', - '511' => 'Autenticazione di rete necessaria', - '520' => 'Errore sconosciuto', - '521' => 'Web server spento', - '522' => 'Tempo scaduto per la connessione', - '523' => 'Origine non raggiungibile', - '524' => 'Un timeout è avvenuto', - '525' => 'Handshake SSL fallita', - '526' => 'Certificato SSL invalido', - '527' => 'Errore del cannone a rotaia', - '598' => 'Errore timeout lettura rete', - '599' => 'Errore di timeout della connessione di rete', + '0' => 'Errore sconosciuto', + '100' => 'Continua', + '101' => 'Scambiando protocolli', + '102' => 'In processo', + '200' => 'OK', + '201' => 'Creato', + '202' => 'Accettato', + '203' => 'Informazione non autorevole', + '204' => 'Nessun contenuto', + '205' => 'Resetta il contenuto', + '206' => 'Contenuto parziale', + '207' => 'Stati multipli', + '208' => 'Già riportato', + '226' => 'IM utilizzati', + '300' => 'Scelte multiple', + '301' => 'Trasferito permanentemente', + '302' => 'Trovato', + '303' => 'Guarda altro', + '304' => 'Non modificata', + '305' => 'Usa un proxy', + '307' => 'Re-indirizzamento temporaneo', + '308' => 'Re-indirizzamento permanente', + '400' => 'Cattiva richiesta', + '401' => 'Non autorizzata', + '402' => 'Pagamento richiesto', + '403' => 'Accesso vietato', + '404' => 'Pagina non trovata', + '405' => 'Metodo non consentito', + '406' => 'Non accettabile', + '407' => 'Autenticazione al proxy richiesta', + '408' => 'Tempo scaduto per la richiesta', + '409' => 'Conflitto', + '410' => 'Andata', + '411' => 'Lunghezza necessaria', + '412' => 'Precondizione fallita', + '413' => 'Payload troppo grande', + '414' => 'URI troppo lungo', + '415' => 'Media Type non supportato', + '416' => 'intervallo non soddisfacibile', + '417' => 'Aspettativa fallita', + '418' => 'Sono una teiera', + '419' => 'Sessione scaduta', + '421' => 'Richiesta mal indirizzata', + '422' => 'Entità improcessabile', + '423' => 'Bloccata', + '424' => 'Dipendenza fallita', + '425' => 'Troppo presto', + '426' => 'Aggiornamento richiesto', + '428' => 'Precondizione necessaria', + '429' => 'Troppe richieste', + '431' => 'Campi header della richiesta troppo grandi', + '444' => 'Connessione chiusa senza risposta', + '449' => 'Riprova con', + '451' => 'Non disponibile per motivi legali', + '499' => 'Richiesta chiusa del cliente', + '500' => 'Errore interno al server', + '501' => 'Non implementato', + '502' => 'Gateway cattivo', + '503' => 'In manutenzione', + '504' => 'Tempo scaduto per il gateway', + '505' => 'Versione HTTP non supportata', + '506' => 'Variante anche negozia', + '507' => 'Spazio insufficiente', + '508' => 'Loop identificato', + '509' => 'Limita di banda superato', + '510' => 'Non esteso', + '511' => 'Autenticazione di rete necessaria', + '520' => 'Errore sconosciuto', + '521' => 'Web server spento', + '522' => 'Tempo scaduto per la connessione', + '523' => 'Origine non raggiungibile', + '524' => 'Un timeout è avvenuto', + '525' => 'Handshake SSL fallita', + '526' => 'Certificato SSL invalido', + '527' => 'Errore del cannone a rotaia', + '598' => 'Errore timeout lettura rete', + '599' => 'Errore di timeout della connessione di rete', 'unknownError' => 'Errore sconosciuto', ]; diff --git a/lang/it/pagination.php b/lang/it/pagination.php index 64cdccc0..f68efffc 100644 --- a/lang/it/pagination.php +++ b/lang/it/pagination.php @@ -3,6 +3,6 @@ declare(strict_types=1); return [ - 'next' => 'Successivo »', + 'next' => 'Successivo »', 'previous' => '« Precedente', ]; diff --git a/lang/it/passwords.php b/lang/it/passwords.php index eb946bc4..00008503 100644 --- a/lang/it/passwords.php +++ b/lang/it/passwords.php @@ -3,9 +3,9 @@ declare(strict_types=1); return [ - 'reset' => 'La password è stata reimpostata!', - 'sent' => 'Ti abbiamo inviato una email con il link per il reset della password!', + 'reset' => 'La password è stata reimpostata!', + 'sent' => 'Ti abbiamo inviato una email con il link per il reset della password!', 'throttled' => 'Per favore, attendi prima di riprovare.', - 'token' => 'Questo token di reset della password non è valido.', - 'user' => 'Non riusciamo a trovare un utente con questo indirizzo email.', + 'token' => 'Questo token di reset della password non è valido.', + 'user' => 'Non riusciamo a trovare un utente con questo indirizzo email.', ]; diff --git a/lang/it/validation.php b/lang/it/validation.php index bef22089..e8494ee4 100644 --- a/lang/it/validation.php +++ b/lang/it/validation.php @@ -3,286 +3,286 @@ declare(strict_types=1); return [ - 'accepted' => ':Attribute deve essere accettato.', - 'accepted_if' => ':Attribute deve essere accettato quando :other è :value.', - 'active_url' => ':Attribute non è un URL valido.', - 'after' => ':Attribute deve essere una data successiva al :date.', - 'after_or_equal' => ':Attribute deve essere una data successiva o uguale al :date.', - 'alpha' => ':Attribute può contenere solo lettere.', - 'alpha_dash' => ':Attribute può contenere solo lettere, numeri e trattini.', - 'alpha_num' => ':Attribute può contenere solo lettere e numeri.', - 'any_of' => 'Il campo :attribute non è valido.', - 'array' => ':Attribute deve essere un array.', - 'ascii' => ':Attribute deve contenere solo caratteri alfanumerici single-byte e simboli.', - 'before' => ':Attribute deve essere una data precedente al :date.', - 'before_or_equal' => ':Attribute deve essere una data precedente o uguale al :date.', - 'between' => [ - 'array' => ':Attribute deve avere tra :min - :max elementi.', - 'file' => ':Attribute deve trovarsi tra :min - :max kilobyte.', + 'accepted' => ':Attribute deve essere accettato.', + 'accepted_if' => ':Attribute deve essere accettato quando :other è :value.', + 'active_url' => ':Attribute non è un URL valido.', + 'after' => ':Attribute deve essere una data successiva al :date.', + 'after_or_equal' => ':Attribute deve essere una data successiva o uguale al :date.', + 'alpha' => ':Attribute può contenere solo lettere.', + 'alpha_dash' => ':Attribute può contenere solo lettere, numeri e trattini.', + 'alpha_num' => ':Attribute può contenere solo lettere e numeri.', + 'any_of' => 'Il campo :attribute non è valido.', + 'array' => ':Attribute deve essere un array.', + 'ascii' => ':Attribute deve contenere solo caratteri alfanumerici single-byte e simboli.', + 'before' => ':Attribute deve essere una data precedente al :date.', + 'before_or_equal' => ':Attribute deve essere una data precedente o uguale al :date.', + 'between' => [ + 'array' => ':Attribute deve avere tra :min - :max elementi.', + 'file' => ':Attribute deve trovarsi tra :min - :max kilobyte.', 'numeric' => ':Attribute deve trovarsi tra :min - :max.', - 'string' => ':Attribute deve trovarsi tra :min - :max caratteri.', + 'string' => ':Attribute deve trovarsi tra :min - :max caratteri.', ], - 'boolean' => 'Il campo :attribute deve essere vero o falso.', - 'can' => 'Il campo :attribute contiene un valore non autorizzato.', - 'confirmed' => 'Il campo di conferma per :attribute non coincide.', - 'contains' => 'Il campo :attribute non contiene un valore richiesto.', - 'current_password' => 'Password non valida.', - 'date' => ':Attribute non è una data valida.', - 'date_equals' => ':Attribute deve essere una data e uguale a :date.', - 'date_format' => ':Attribute non coincide con il formato :format.', - 'decimal' => ':Attribute deve avere :decimal cifre decimali.', - 'declined' => ':Attribute deve essere rifiutato.', - 'declined_if' => ':Attribute deve essere rifiutato quando :other è :value.', - 'different' => ':Attribute e :other devono essere differenti.', - 'digits' => ':Attribute deve essere di :digits cifre.', - 'digits_between' => ':Attribute deve essere tra :min e :max cifre.', - 'dimensions' => 'Le dimensioni dell\'immagine di :attribute non sono valide.', - 'distinct' => ':Attribute contiene un valore duplicato.', - 'doesnt_contain' => 'Il campo :attribute non deve contenere alcuno dei seguenti: :values.', - 'doesnt_end_with' => ':Attribute non può terminare con uno dei seguenti valori: :values.', - 'doesnt_start_with' => ':Attribute non può iniziare con uno dei seguenti valori: :values.', - 'email' => ':Attribute non è valido.', - 'encoding' => 'Il campo :attribute deve essere codificato in :encoding.', - 'ends_with' => ':Attribute deve finire con uno dei seguenti valori: :values', - 'enum' => 'Il campo :attribute non è valido.', - 'exists' => ':Attribute selezionato non è valido.', - 'extensions' => 'Il campo :attribute deve avere una delle seguenti estensioni: :values.', - 'file' => ':Attribute deve essere un file.', - 'filled' => 'Il campo :attribute deve contenere un valore.', - 'gt' => [ - 'array' => ':Attribute deve contenere più di :value elementi.', - 'file' => ':Attribute deve essere maggiore di :value kilobyte.', + 'boolean' => 'Il campo :attribute deve essere vero o falso.', + 'can' => 'Il campo :attribute contiene un valore non autorizzato.', + 'confirmed' => 'Il campo di conferma per :attribute non coincide.', + 'contains' => 'Il campo :attribute non contiene un valore richiesto.', + 'current_password' => 'Password non valida.', + 'date' => ':Attribute non è una data valida.', + 'date_equals' => ':Attribute deve essere una data e uguale a :date.', + 'date_format' => ':Attribute non coincide con il formato :format.', + 'decimal' => ':Attribute deve avere :decimal cifre decimali.', + 'declined' => ':Attribute deve essere rifiutato.', + 'declined_if' => ':Attribute deve essere rifiutato quando :other è :value.', + 'different' => ':Attribute e :other devono essere differenti.', + 'digits' => ':Attribute deve essere di :digits cifre.', + 'digits_between' => ':Attribute deve essere tra :min e :max cifre.', + 'dimensions' => 'Le dimensioni dell\'immagine di :attribute non sono valide.', + 'distinct' => ':Attribute contiene un valore duplicato.', + 'doesnt_contain' => 'Il campo :attribute non deve contenere alcuno dei seguenti: :values.', + 'doesnt_end_with' => ':Attribute non può terminare con uno dei seguenti valori: :values.', + 'doesnt_start_with' => ':Attribute non può iniziare con uno dei seguenti valori: :values.', + 'email' => ':Attribute non è valido.', + 'encoding' => 'Il campo :attribute deve essere codificato in :encoding.', + 'ends_with' => ':Attribute deve finire con uno dei seguenti valori: :values', + 'enum' => 'Il campo :attribute non è valido.', + 'exists' => ':Attribute selezionato non è valido.', + 'extensions' => 'Il campo :attribute deve avere una delle seguenti estensioni: :values.', + 'file' => ':Attribute deve essere un file.', + 'filled' => 'Il campo :attribute deve contenere un valore.', + 'gt' => [ + 'array' => ':Attribute deve contenere più di :value elementi.', + 'file' => ':Attribute deve essere maggiore di :value kilobyte.', 'numeric' => ':Attribute deve essere maggiore di :value.', - 'string' => ':Attribute deve contenere più di :value caratteri.', + 'string' => ':Attribute deve contenere più di :value caratteri.', ], - 'gte' => [ - 'array' => ':Attribute deve contenere un numero di elementi uguale o maggiore di :value.', - 'file' => ':Attribute deve essere uguale o maggiore di :value kilobyte.', + 'gte' => [ + 'array' => ':Attribute deve contenere un numero di elementi uguale o maggiore di :value.', + 'file' => ':Attribute deve essere uguale o maggiore di :value kilobyte.', 'numeric' => ':Attribute deve essere uguale o maggiore di :value.', - 'string' => ':Attribute deve contenere un numero di caratteri uguale o maggiore di :value.', + 'string' => ':Attribute deve contenere un numero di caratteri uguale o maggiore di :value.', ], - 'hex_color' => 'Il campo :attribute deve essere un colore esadecimale valido.', - 'image' => ':Attribute deve essere un\'immagine.', - 'in' => ':Attribute selezionato non è valido.', - 'in_array' => 'Il valore del campo :attribute non esiste in :other.', - 'in_array_keys' => 'Il campo :attribute deve contenere almeno una delle seguenti chiavi: :values.', - 'integer' => ':Attribute deve essere un numero intero.', - 'ip' => ':Attribute deve essere un indirizzo IP valido.', - 'ipv4' => ':Attribute deve essere un indirizzo IPv4 valido.', - 'ipv6' => ':Attribute deve essere un indirizzo IPv6 valido.', - 'json' => ':Attribute deve essere una stringa JSON valida.', - 'list' => 'Il campo :attribute deve essere un elenco.', - 'lowercase' => ':Attribute deve contenere solo caratteri minuscoli.', - 'lt' => [ - 'array' => ':Attribute deve contenere meno di :value elementi.', - 'file' => ':Attribute deve essere minore di :value kilobyte.', + 'hex_color' => 'Il campo :attribute deve essere un colore esadecimale valido.', + 'image' => ':Attribute deve essere un\'immagine.', + 'in' => ':Attribute selezionato non è valido.', + 'in_array' => 'Il valore del campo :attribute non esiste in :other.', + 'in_array_keys' => 'Il campo :attribute deve contenere almeno una delle seguenti chiavi: :values.', + 'integer' => ':Attribute deve essere un numero intero.', + 'ip' => ':Attribute deve essere un indirizzo IP valido.', + 'ipv4' => ':Attribute deve essere un indirizzo IPv4 valido.', + 'ipv6' => ':Attribute deve essere un indirizzo IPv6 valido.', + 'json' => ':Attribute deve essere una stringa JSON valida.', + 'list' => 'Il campo :attribute deve essere un elenco.', + 'lowercase' => ':Attribute deve contenere solo caratteri minuscoli.', + 'lt' => [ + 'array' => ':Attribute deve contenere meno di :value elementi.', + 'file' => ':Attribute deve essere minore di :value kilobyte.', 'numeric' => ':Attribute deve essere minore di :value.', - 'string' => ':Attribute deve contenere meno di :value caratteri.', + 'string' => ':Attribute deve contenere meno di :value caratteri.', ], - 'lte' => [ - 'array' => ':Attribute deve contenere un numero di elementi minore o uguale a :value.', - 'file' => ':Attribute deve essere minore o uguale a :value kilobyte.', + 'lte' => [ + 'array' => ':Attribute deve contenere un numero di elementi minore o uguale a :value.', + 'file' => ':Attribute deve essere minore o uguale a :value kilobyte.', 'numeric' => ':Attribute deve essere minore o uguale a :value.', - 'string' => ':Attribute deve contenere un numero di caratteri minore o uguale a :value.', + 'string' => ':Attribute deve contenere un numero di caratteri minore o uguale a :value.', ], - 'mac_address' => 'Il campo :attribute deve essere un indirizzo MAC valido .', - 'max' => [ - 'array' => ':Attribute non può avere più di :max elementi.', - 'file' => ':Attribute non può essere superiore a :max kilobyte.', + 'mac_address' => 'Il campo :attribute deve essere un indirizzo MAC valido .', + 'max' => [ + 'array' => ':Attribute non può avere più di :max elementi.', + 'file' => ':Attribute non può essere superiore a :max kilobyte.', 'numeric' => ':Attribute non può essere superiore a :max.', - 'string' => ':Attribute non può contenere più di :max caratteri.', + 'string' => ':Attribute non può contenere più di :max caratteri.', ], - 'max_digits' => ':Attribute non può contenere più di :max cifre.', - 'mimes' => ':Attribute deve essere del tipo: :values.', - 'mimetypes' => ':Attribute deve essere del tipo: :values.', - 'min' => [ - 'array' => ':Attribute deve avere almeno :min elementi.', - 'file' => ':Attribute deve essere almeno di :min kilobyte.', + 'max_digits' => ':Attribute non può contenere più di :max cifre.', + 'mimes' => ':Attribute deve essere del tipo: :values.', + 'mimetypes' => ':Attribute deve essere del tipo: :values.', + 'min' => [ + 'array' => ':Attribute deve avere almeno :min elementi.', + 'file' => ':Attribute deve essere almeno di :min kilobyte.', 'numeric' => ':Attribute deve essere almeno :min.', - 'string' => ':Attribute deve contenere almeno :min caratteri.', + 'string' => ':Attribute deve contenere almeno :min caratteri.', ], - 'min_digits' => ':Attribute deve contenere almeno :min cifre.', - 'missing' => 'Il campo :attribute deve mancare.', - 'missing_if' => 'Il campo :attribute deve mancare quando :other è :value.', - 'missing_unless' => 'Il campo :attribute deve mancare a meno che :other non sia :value.', - 'missing_with' => 'Il campo :attribute deve mancare quando è presente :values.', - 'missing_with_all' => 'Il campo :attribute deve mancare quando sono presenti :values.', - 'multiple_of' => ':Attribute deve essere un multiplo di :value', - 'not_in' => 'Il valore selezionato per :attribute non è valido.', - 'not_regex' => 'Il formato di :attribute non è valido.', - 'numeric' => ':Attribute deve essere un numero.', - 'password' => [ - 'letters' => ':Attribute deve contenere almeno un carattere.', - 'mixed' => ':Attribute deve contenere almeno un carattere maiuscolo ed un carattere minuscolo.', - 'numbers' => ':Attribute deve contenere almeno un numero.', - 'symbols' => ':Attribute deve contenere almeno un simbolo.', + 'min_digits' => ':Attribute deve contenere almeno :min cifre.', + 'missing' => 'Il campo :attribute deve mancare.', + 'missing_if' => 'Il campo :attribute deve mancare quando :other è :value.', + 'missing_unless' => 'Il campo :attribute deve mancare a meno che :other non sia :value.', + 'missing_with' => 'Il campo :attribute deve mancare quando è presente :values.', + 'missing_with_all' => 'Il campo :attribute deve mancare quando sono presenti :values.', + 'multiple_of' => ':Attribute deve essere un multiplo di :value', + 'not_in' => 'Il valore selezionato per :attribute non è valido.', + 'not_regex' => 'Il formato di :attribute non è valido.', + 'numeric' => ':Attribute deve essere un numero.', + 'password' => [ + 'letters' => ':Attribute deve contenere almeno un carattere.', + 'mixed' => ':Attribute deve contenere almeno un carattere maiuscolo ed un carattere minuscolo.', + 'numbers' => ':Attribute deve contenere almeno un numero.', + 'symbols' => ':Attribute deve contenere almeno un simbolo.', 'uncompromised' => ':Attribute è presente negli archivi dei dati trafugati. Per piacere scegli un valore differente per :attribute.', ], - 'present' => 'Il campo :attribute deve essere presente.', - 'present_if' => 'Il campo :attribute deve essere presente quando :other è :value.', - 'present_unless' => 'Il campo :attribute deve essere presente a meno che :other non sia :value.', - 'present_with' => 'Il campo :attribute deve essere presente quando è presente :values.', - 'present_with_all' => 'Il campo :attribute deve essere presente quando sono presenti :values.', - 'prohibited' => ':Attribute non consentito.', - 'prohibited_if' => ':Attribute non consentito quando :other è :value.', + 'present' => 'Il campo :attribute deve essere presente.', + 'present_if' => 'Il campo :attribute deve essere presente quando :other è :value.', + 'present_unless' => 'Il campo :attribute deve essere presente a meno che :other non sia :value.', + 'present_with' => 'Il campo :attribute deve essere presente quando è presente :values.', + 'present_with_all' => 'Il campo :attribute deve essere presente quando sono presenti :values.', + 'prohibited' => ':Attribute non consentito.', + 'prohibited_if' => ':Attribute non consentito quando :other è :value.', 'prohibited_if_accepted' => 'Il campo :attribute è vietato quando :other è accettato.', 'prohibited_if_declined' => 'Il campo :attribute è vietato quando :other è rifiutato.', - 'prohibited_unless' => ':Attribute non consentito a meno che :other sia contenuto in :values.', - 'prohibits' => ':Attribute impedisce a :other di essere presente.', - 'regex' => 'Il formato del campo :attribute non è valido.', - 'required' => 'Il campo :attribute è richiesto.', - 'required_array_keys' => 'Il campo :attribute deve contenere voci per: :values.', - 'required_if' => 'Il campo :attribute è richiesto quando :other è :value.', - 'required_if_accepted' => ':Attribute è richiesto quando :other è accettato.', - 'required_if_declined' => 'Il campo :attribute è richiesto quando :other è rifiutato.', - '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 di :values è presente.', - 'same' => ':Attribute e :other devono coincidere.', - 'size' => [ - 'array' => ':Attribute deve contenere :size elementi.', - 'file' => ':Attribute deve essere :size kilobyte.', + 'prohibited_unless' => ':Attribute non consentito a meno che :other sia contenuto in :values.', + 'prohibits' => ':Attribute impedisce a :other di essere presente.', + 'regex' => 'Il formato del campo :attribute non è valido.', + 'required' => 'Il campo :attribute è richiesto.', + 'required_array_keys' => 'Il campo :attribute deve contenere voci per: :values.', + 'required_if' => 'Il campo :attribute è richiesto quando :other è :value.', + 'required_if_accepted' => ':Attribute è richiesto quando :other è accettato.', + 'required_if_declined' => 'Il campo :attribute è richiesto quando :other è rifiutato.', + '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 di :values è presente.', + 'same' => ':Attribute e :other devono coincidere.', + 'size' => [ + 'array' => ':Attribute deve contenere :size elementi.', + 'file' => ':Attribute deve essere :size kilobyte.', 'numeric' => ':Attribute deve essere :size.', - 'string' => ':Attribute deve contenere :size caratteri.', + 'string' => ':Attribute deve contenere :size caratteri.', ], - 'starts_with' => ':Attribute deve iniziare con uno dei seguenti: :values', - 'string' => ':Attribute deve essere una stringa.', - 'timezone' => ':Attribute deve essere una zona valida.', - 'ulid' => ':Attribute deve essere un ULID valido.', - 'unique' => ':Attribute è stato già utilizzato.', - 'uploaded' => ':Attribute non è stato caricato.', - 'uppercase' => ':Attribute deve contenere solo caratteri maiuscoli.', - 'url' => 'Il formato del campo :attribute non è valido.', - 'uuid' => ':Attribute deve essere un UUID valido.', - 'attributes' => [ - 'address' => 'indirizzo', - 'affiliate_url' => 'URL di affiliazione', - 'age' => 'età', - 'amount' => 'Quantità', - 'announcement' => 'annuncio', - 'area' => 'la zona', - 'audience_prize' => 'premio del pubblico', - 'audience_winner' => 'audience winner', - 'available' => 'disponibile', - 'birthday' => 'compleanno', - 'body' => 'corpo', - 'city' => 'città', - 'color' => 'color', - 'company' => 'company', - 'compilation' => 'compilazione', - 'concept' => 'concetto', - 'conditions' => 'condizioni', - 'content' => 'contenuto', - 'contest' => 'contest', - 'country' => 'paese', - 'cover' => 'copertina', - 'created_at' => 'creato il', - 'creator' => 'Creatore', - 'currency' => 'valuta', - 'current_password' => 'password attuale', - 'customer' => 'cliente', - 'date' => 'data', - 'date_of_birth' => 'data di nascita', - 'dates' => 'date', - 'day' => 'giorno', - 'deleted_at' => 'cancellato il', - 'description' => 'descrizione', - 'display_type' => 'tipo di visualizzazione', - 'district' => 'quartiere', - 'duration' => 'durata', - 'email' => 'e-mail', - 'excerpt' => 'estratto', - 'filter' => 'filtro', - 'finished_at' => 'finito alle', - 'first_name' => 'nome', - 'gender' => 'genere', - 'grand_prize' => 'grand prize', - 'group' => 'gruppo', - 'hour' => 'ora', - 'image' => 'Immagine', - 'image_desktop' => 'immagine del desktop', - 'image_main' => 'immagine principale', - 'image_mobile' => 'immagine mobile', - 'images' => 'immagini', - 'is_audience_winner' => 'è il vincitore del pubblico', - 'is_hidden' => 'è nascosto', - 'is_subscribed' => 'è iscritto', - 'is_visible' => 'è visibile', - 'is_winner' => 'è vincitore', - 'items' => 'elementi', - 'key' => 'chiave', - 'last_name' => 'cognome', - 'lesson' => 'lezione', - 'line_address_1' => 'indirizzo di linea 1', - 'line_address_2' => 'indirizzo di linea 2', - 'login' => 'login', - 'message' => 'Messaggio', - 'middle_name' => 'secondo nome', - 'minute' => 'minuto', - 'mobile' => 'cellulare', - 'month' => 'mese', - 'name' => 'nome', - 'national_code' => 'codice nazionale', - 'number' => 'numero', - 'password' => 'password', - 'password_confirmation' => 'conferma password', - 'phone' => 'telefono', - 'photo' => 'foto', - 'portfolio' => 'portafoglio', - 'postal_code' => 'Codice Postale', - 'preview' => 'anteprima', - 'price' => 'prezzo', - 'product_id' => 'Codice prodotto', - 'product_uid' => 'ID del prodotto', - 'product_uuid' => 'UUID del prodotto', - 'promo_code' => 'codice promozionale', - 'province' => 'Provincia', - 'quantity' => 'quantità', - 'reason' => 'motivo', + 'starts_with' => ':Attribute deve iniziare con uno dei seguenti: :values', + 'string' => ':Attribute deve essere una stringa.', + 'timezone' => ':Attribute deve essere una zona valida.', + 'ulid' => ':Attribute deve essere un ULID valido.', + 'unique' => ':Attribute è stato già utilizzato.', + 'uploaded' => ':Attribute non è stato caricato.', + 'uppercase' => ':Attribute deve contenere solo caratteri maiuscoli.', + 'url' => 'Il formato del campo :attribute non è valido.', + 'uuid' => ':Attribute deve essere un UUID valido.', + 'attributes' => [ + 'address' => 'indirizzo', + 'affiliate_url' => 'URL di affiliazione', + 'age' => 'età', + 'amount' => 'Quantità', + 'announcement' => 'annuncio', + 'area' => 'la zona', + 'audience_prize' => 'premio del pubblico', + 'audience_winner' => 'audience winner', + 'available' => 'disponibile', + 'birthday' => 'compleanno', + 'body' => 'corpo', + 'city' => 'città', + 'color' => 'color', + 'company' => 'company', + 'compilation' => 'compilazione', + 'concept' => 'concetto', + 'conditions' => 'condizioni', + 'content' => 'contenuto', + 'contest' => 'contest', + 'country' => 'paese', + 'cover' => 'copertina', + 'created_at' => 'creato il', + 'creator' => 'Creatore', + 'currency' => 'valuta', + 'current_password' => 'password attuale', + 'customer' => 'cliente', + 'date' => 'data', + 'date_of_birth' => 'data di nascita', + 'dates' => 'date', + 'day' => 'giorno', + 'deleted_at' => 'cancellato il', + 'description' => 'descrizione', + 'display_type' => 'tipo di visualizzazione', + 'district' => 'quartiere', + 'duration' => 'durata', + 'email' => 'e-mail', + 'excerpt' => 'estratto', + 'filter' => 'filtro', + 'finished_at' => 'finito alle', + 'first_name' => 'nome', + 'gender' => 'genere', + 'grand_prize' => 'grand prize', + 'group' => 'gruppo', + 'hour' => 'ora', + 'image' => 'Immagine', + 'image_desktop' => 'immagine del desktop', + 'image_main' => 'immagine principale', + 'image_mobile' => 'immagine mobile', + 'images' => 'immagini', + 'is_audience_winner' => 'è il vincitore del pubblico', + 'is_hidden' => 'è nascosto', + 'is_subscribed' => 'è iscritto', + 'is_visible' => 'è visibile', + 'is_winner' => 'è vincitore', + 'items' => 'elementi', + 'key' => 'chiave', + 'last_name' => 'cognome', + 'lesson' => 'lezione', + 'line_address_1' => 'indirizzo di linea 1', + 'line_address_2' => 'indirizzo di linea 2', + 'login' => 'login', + 'message' => 'Messaggio', + 'middle_name' => 'secondo nome', + 'minute' => 'minuto', + 'mobile' => 'cellulare', + 'month' => 'mese', + 'name' => 'nome', + 'national_code' => 'codice nazionale', + 'number' => 'numero', + 'password' => 'password', + 'password_confirmation' => 'conferma password', + 'phone' => 'telefono', + 'photo' => 'foto', + 'portfolio' => 'portafoglio', + 'postal_code' => 'Codice Postale', + 'preview' => 'anteprima', + 'price' => 'prezzo', + 'product_id' => 'Codice prodotto', + 'product_uid' => 'ID del prodotto', + 'product_uuid' => 'UUID del prodotto', + 'promo_code' => 'codice promozionale', + 'province' => 'Provincia', + 'quantity' => 'quantità', + 'reason' => 'motivo', 'recaptcha_response_field' => 'campo di risposta recaptcha', - 'referee' => 'arbitro', - 'referees' => 'arbitri', - 'region' => 'region', - 'reject_reason' => 'rifiutare la ragione', - 'remember' => 'ricordare', - 'restored_at' => 'ripristinato il', - 'result_text_under_image' => 'testo del risultato sotto l\'immagine', - 'role' => 'ruolo', - 'rule' => 'regola', - 'rules' => 'regole', - 'second' => 'secondo', - 'sex' => 'sesso', - 'shipment' => 'spedizione', - 'short_text' => 'testo breve', - 'size' => 'dimensione', - 'skills' => 'competenze', - 'slug' => 'lumaca', - 'specialization' => 'specializzazione', - 'started_at' => 'iniziato alle', - 'state' => 'stato', - 'status' => 'stato', - 'street' => 'strada', - 'student' => 'alunno', - 'subject' => 'argomento', - 'tag' => 'etichetta', - 'tags' => 'tag', - 'teacher' => 'insegnante', - 'terms' => 'termini', - 'test_description' => 'descrizione del testo', - 'test_locale' => 'locale di prova', - 'test_name' => 'nome di prova', - 'text' => 'testo', - 'time' => 'ora', - 'title' => 'titolo', - 'type' => 'tipo', - 'updated_at' => 'aggiornato il', - 'user' => 'utente', - 'username' => 'nome utente', - 'value' => 'valore', - 'winner' => 'winner', - 'work' => 'work', - 'year' => 'anno', + 'referee' => 'arbitro', + 'referees' => 'arbitri', + 'region' => 'region', + 'reject_reason' => 'rifiutare la ragione', + 'remember' => 'ricordare', + 'restored_at' => 'ripristinato il', + 'result_text_under_image' => 'testo del risultato sotto l\'immagine', + 'role' => 'ruolo', + 'rule' => 'regola', + 'rules' => 'regole', + 'second' => 'secondo', + 'sex' => 'sesso', + 'shipment' => 'spedizione', + 'short_text' => 'testo breve', + 'size' => 'dimensione', + 'skills' => 'competenze', + 'slug' => 'lumaca', + 'specialization' => 'specializzazione', + 'started_at' => 'iniziato alle', + 'state' => 'stato', + 'status' => 'stato', + 'street' => 'strada', + 'student' => 'alunno', + 'subject' => 'argomento', + 'tag' => 'etichetta', + 'tags' => 'tag', + 'teacher' => 'insegnante', + 'terms' => 'termini', + 'test_description' => 'descrizione del testo', + 'test_locale' => 'locale di prova', + 'test_name' => 'nome di prova', + 'text' => 'testo', + 'time' => 'ora', + 'title' => 'titolo', + 'type' => 'tipo', + 'updated_at' => 'aggiornato il', + 'user' => 'utente', + 'username' => 'nome utente', + 'value' => 'valore', + 'winner' => 'winner', + 'work' => 'work', + 'year' => 'anno', ], ]; diff --git a/lang/nl/actions.php b/lang/nl/actions.php index 21e9c01f..bf57fd84 100644 --- a/lang/nl/actions.php +++ b/lang/nl/actions.php @@ -3,117 +3,117 @@ declare(strict_types=1); return [ - 'accept' => 'Aanvaarden', - 'action' => 'Actie', - 'actions' => 'Acties', - 'add' => 'Toevoegen', - 'admin' => 'Beheerder', - 'agree' => 'Akkoord', - 'archive' => 'Archiveren', - 'assign' => 'Toewijzen', - 'associate' => 'Associëren', - 'attach' => 'Bijvoegen', - 'browse' => 'Bladeren', - 'cancel' => 'Annuleren', - 'choose' => 'Kiezen', - 'choose_file' => 'Bestand kiezen', - 'choose_image' => 'Afbeelding kiezen', - 'click_to_copy' => 'Klik om te kopiëren', - 'close' => 'Sluiten', - 'collapse' => 'Inklappen', - 'collapse_all' => 'Alles inklappen', - 'comment' => 'Reageren', - 'confirm' => 'Bevestigen', - 'connect' => 'Verbinden', - 'create' => 'Aanmaken', - 'delete' => 'Verwijderen', - 'detach' => 'Loskoppelen', - 'details' => 'Details', - 'disable' => 'Uitschakelen', - 'discard' => 'Verwerpen', - 'done' => 'Voltooien', - 'down' => 'Omlaag', - 'duplicate' => 'Dupliceren', - 'edit' => 'Bewerken', - 'enable' => 'Inschakelen', - 'expand' => 'Uitklappen', - 'expand_all' => 'Alles uitklappen', - 'explanation' => 'Uitleg', - 'export' => 'Exporteren', - 'file' => 'Bestand', - 'files' => 'Bestanden', - 'go_home' => 'Naar startpagina', - 'hide' => 'Verbergen', - 'home' => 'Startpagina', - 'image' => 'Afbeelding', - 'impersonate' => 'Imiteren', - 'impersonation' => 'Imitatie', - 'import' => 'Importeren', - 'introduction' => 'Introductie', - 'like' => 'Leuk vinden', - 'load' => 'Laden', - 'localize' => 'Lokaliseren', - 'log_in' => 'Inloggen', - 'log_out' => 'Uitloggen', - 'named' => [ - 'add' => ':Name toevoegen', - 'choose' => ':Name kiezen', - 'create' => ':Name aanmaken', - 'delete' => ':Name verwijderen', + 'accept' => 'Aanvaarden', + 'action' => 'Actie', + 'actions' => 'Acties', + 'add' => 'Toevoegen', + 'admin' => 'Beheerder', + 'agree' => 'Akkoord', + 'archive' => 'Archiveren', + 'assign' => 'Toewijzen', + 'associate' => 'Associëren', + 'attach' => 'Bijvoegen', + 'browse' => 'Bladeren', + 'cancel' => 'Annuleren', + 'choose' => 'Kiezen', + 'choose_file' => 'Bestand kiezen', + 'choose_image' => 'Afbeelding kiezen', + 'click_to_copy' => 'Klik om te kopiëren', + 'close' => 'Sluiten', + 'collapse' => 'Inklappen', + 'collapse_all' => 'Alles inklappen', + 'comment' => 'Reageren', + 'confirm' => 'Bevestigen', + 'connect' => 'Verbinden', + 'create' => 'Aanmaken', + 'delete' => 'Verwijderen', + 'detach' => 'Loskoppelen', + 'details' => 'Details', + 'disable' => 'Uitschakelen', + 'discard' => 'Verwerpen', + 'done' => 'Voltooien', + 'down' => 'Omlaag', + 'duplicate' => 'Dupliceren', + 'edit' => 'Bewerken', + 'enable' => 'Inschakelen', + 'expand' => 'Uitklappen', + 'expand_all' => 'Alles uitklappen', + 'explanation' => 'Uitleg', + 'export' => 'Exporteren', + 'file' => 'Bestand', + 'files' => 'Bestanden', + 'go_home' => 'Naar startpagina', + 'hide' => 'Verbergen', + 'home' => 'Startpagina', + 'image' => 'Afbeelding', + 'impersonate' => 'Imiteren', + 'impersonation' => 'Imitatie', + 'import' => 'Importeren', + 'introduction' => 'Introductie', + 'like' => 'Leuk vinden', + 'load' => 'Laden', + 'localize' => 'Lokaliseren', + 'log_in' => 'Inloggen', + 'log_out' => 'Uitloggen', + 'named' => [ + 'add' => ':Name toevoegen', + 'choose' => ':Name kiezen', + 'create' => ':Name aanmaken', + 'delete' => ':Name verwijderen', 'duplicate' => ':Name dupliceren', - 'edit' => ':Name bewerken', - 'export' => ':Name exporteren', - 'hide' => ':Name verbergen', - 'import' => ':Name importeren', - 'new' => 'Nieuwe :name', - 'restore' => ':Name herstellen', - 'save' => ':Name opslaan', - 'search' => ':Name zoeken', - 'show' => ':Name tonen', - 'update' => ':Name bijwerken', - 'view' => ':Name bekijken', + 'edit' => ':Name bewerken', + 'export' => ':Name exporteren', + 'hide' => ':Name verbergen', + 'import' => ':Name importeren', + 'new' => 'Nieuwe :name', + 'restore' => ':Name herstellen', + 'save' => ':Name opslaan', + 'search' => ':Name zoeken', + 'show' => ':Name tonen', + 'update' => ':Name bijwerken', + 'view' => ':Name bekijken', ], - 'new' => 'Nieuw', - 'no' => 'Nee', - 'open' => 'Openen', - 'open_website' => 'Website openen', - 'preview' => 'Voorbeeld', - 'price' => 'Prijs', - 'record' => 'Opnemen', - 'restore' => 'Herstellen', - 'save' => 'Opslaan', - 'save_and_close' => 'Opslaan en sluiten', + 'new' => 'Nieuw', + 'no' => 'Nee', + 'open' => 'Openen', + 'open_website' => 'Website openen', + 'preview' => 'Voorbeeld', + 'price' => 'Prijs', + 'record' => 'Opnemen', + 'restore' => 'Herstellen', + 'save' => 'Opslaan', + 'save_and_close' => 'Opslaan en sluiten', 'save_and_return' => 'Opslaan en teruggaan', - 'search' => 'Zoeken', - 'select' => 'Selecteren', - 'select_all' => 'Alles selecteren', - 'send' => 'Versturen', - 'settings' => 'Instellingen', - 'show' => 'Tonen', - 'show_all' => 'Alles tonen', - 'sign_in' => 'Aanmelden', - 'solve' => 'Oplossen', - 'start' => 'Starten', - 'stop' => 'Stoppen', - 'submit' => 'Indienen', - 'subscribe' => 'Abonneren', - 'switch' => 'Wisselen', - 'switch_to_role' => 'Wisselen naar rol', - 'tag' => 'Label', - 'tags' => 'Labels', - 'target_link' => [ - 'blank' => 'Openen in nieuw venster', + 'search' => 'Zoeken', + 'select' => 'Selecteren', + 'select_all' => 'Alles selecteren', + 'send' => 'Versturen', + 'settings' => 'Instellingen', + 'show' => 'Tonen', + 'show_all' => 'Alles tonen', + 'sign_in' => 'Aanmelden', + 'solve' => 'Oplossen', + 'start' => 'Starten', + 'stop' => 'Stoppen', + 'submit' => 'Indienen', + 'subscribe' => 'Abonneren', + 'switch' => 'Wisselen', + 'switch_to_role' => 'Wisselen naar rol', + 'tag' => 'Label', + 'tags' => 'Labels', + 'target_link' => [ + 'blank' => 'Openen in nieuw venster', 'parent' => 'Openen in bovenliggend frame', - 'self' => 'Openen in huidig venster', - 'top' => 'Openen in bovenste frame', + 'self' => 'Openen in huidig venster', + 'top' => 'Openen in bovenste frame', ], - 'translate' => 'Vertalen', - 'translate_it' => 'Vertalen', - 'unpack' => 'Uitpakken', - 'unsubscribe' => 'Uitschrijven', - 'up' => 'Omhoog', - 'update' => 'Bijwerken', - 'user' => 'Gebruiker', - 'view' => 'Bekijken', - 'yes' => 'Ja', + 'translate' => 'Vertalen', + 'translate_it' => 'Vertalen', + 'unpack' => 'Uitpakken', + 'unsubscribe' => 'Uitschrijven', + 'up' => 'Omhoog', + 'update' => 'Bijwerken', + 'user' => 'Gebruiker', + 'view' => 'Bekijken', + 'yes' => 'Ja', ]; diff --git a/lang/nl/auth.php b/lang/nl/auth.php index c6af1632..c10d9347 100644 --- a/lang/nl/auth.php +++ b/lang/nl/auth.php @@ -3,7 +3,7 @@ declare(strict_types=1); return [ - 'failed' => 'Deze combinatie van e-mailadres en wachtwoord is niet geldig.', + 'failed' => 'Deze combinatie van e-mailadres en wachtwoord is niet geldig.', 'password' => 'Wachtwoord is onjuist.', 'throttle' => 'Te veel mislukte aanmeldpogingen. Probeer het nog eens over :seconds seconden.', ]; diff --git a/lang/nl/http-statuses.php b/lang/nl/http-statuses.php index d989e31a..95013350 100644 --- a/lang/nl/http-statuses.php +++ b/lang/nl/http-statuses.php @@ -3,82 +3,82 @@ declare(strict_types=1); return [ - '0' => 'Onbekende foutmelding', - '100' => 'Doorgaan', - '101' => 'Protocolwissel', - '102' => 'Verwerken', - '200' => 'Oké', - '201' => 'Aangemaakt', - '202' => 'Aanvaard', - '203' => 'Niet-gemachtigde informatie', - '204' => 'Geen inhoud', - '205' => 'Inhoud opnieuw instellen', - '206' => 'Gedeeltelijke inhoud', - '207' => 'Meerdere statussen', - '208' => 'Al gemeld', - '226' => 'Ik ben gebruikt', - '300' => 'Meerkeuze', - '301' => 'Definitief verplaatst', - '302' => 'Gevonden', - '303' => 'Zie andere', - '304' => 'Niet gewijzigd', - '305' => 'Gebruik Proxy', - '307' => 'Tijdelijke omleiding', - '308' => 'Definitieve omleiding', - '400' => 'Foute aanvraag', - '401' => 'Niet geautoriseerd', - '402' => 'Betaalde toegang', - '403' => 'Verboden toegang', - '404' => 'Niet gevonden', - '405' => 'Methode niet toegestaan', - '406' => 'Niet aanvaardbaar', - '407' => 'Authenticatie op de proxyserver verplicht', - '408' => 'Aanvraagtijd verstreken', - '409' => 'Conflict', - '410' => 'Verdwenen', - '411' => 'Lengte vereist', - '412' => 'Niet voldaan aan de vooraf gestelde voorwaarde', - '413' => 'Aanvraag te groot', - '414' => 'Aanvraag-URL te lang', - '415' => 'Media-type niet ondersteund', - '416' => 'Bereik niet bevredigend', - '417' => 'Niet voldaan aan verwachting', - '418' => 'Ik ben een theepot', - '419' => 'Pagina verlopen', - '421' => 'Verkeerd geadresseerd verzoek', - '422' => 'Aanvraag kan niet worden verwerkt', - '423' => 'Afgesloten', - '424' => 'Gefaalde afhankelijkheid', - '425' => 'Te vroeg', - '426' => 'Upgrade nodig', - '428' => 'Voorwaarde nodig', - '429' => 'Te veel requests', - '431' => 'Headers van de aanvraag te lang', - '444' => 'Verbinding gesloten zonder reactie', - '449' => 'Opnieuw proberen met', - '451' => 'Toegang geweigerd om juridische redenen', - '499' => 'Klant Gesloten Verzoek', - '500' => 'Interne serverfout', - '501' => 'Niet geïmplementeerd', - '502' => 'Slechte poort', - '503' => 'Dienst niet beschikbaar', - '504' => 'Gateway-time-out', - '505' => 'HTTP-versie wordt niet ondersteund', - '506' => 'Variant onderhandelt ook', - '507' => 'Onvoldoende opslag', - '508' => 'Loop gedetecteerd', - '509' => 'Bandbreedte overschreden', - '510' => 'Niet verlengd', - '511' => 'Netwerkauthenticatie vereist', - '520' => 'Onbekende foutmelding', - '521' => 'Webserver is onbereikbaar', - '522' => 'Connectie duurt te lang', - '523' => 'Herkomst is onbereikbaar', - '524' => 'Time-out opgetreden', - '525' => 'SSL-handshake mislukt', - '526' => 'Ongeldig SSL-certificaat', - '527' => 'Railgun foutmelding', - '598' => 'Time-outfout netwerk lezen', - '599' => 'Fout bij time-out netwerkverbinding', + '0' => 'Onbekende foutmelding', + '100' => 'Doorgaan', + '101' => 'Protocolwissel', + '102' => 'Verwerken', + '200' => 'Oké', + '201' => 'Aangemaakt', + '202' => 'Aanvaard', + '203' => 'Niet-gemachtigde informatie', + '204' => 'Geen inhoud', + '205' => 'Inhoud opnieuw instellen', + '206' => 'Gedeeltelijke inhoud', + '207' => 'Meerdere statussen', + '208' => 'Al gemeld', + '226' => 'Ik ben gebruikt', + '300' => 'Meerkeuze', + '301' => 'Definitief verplaatst', + '302' => 'Gevonden', + '303' => 'Zie andere', + '304' => 'Niet gewijzigd', + '305' => 'Gebruik Proxy', + '307' => 'Tijdelijke omleiding', + '308' => 'Definitieve omleiding', + '400' => 'Foute aanvraag', + '401' => 'Niet geautoriseerd', + '402' => 'Betaalde toegang', + '403' => 'Verboden toegang', + '404' => 'Niet gevonden', + '405' => 'Methode niet toegestaan', + '406' => 'Niet aanvaardbaar', + '407' => 'Authenticatie op de proxyserver verplicht', + '408' => 'Aanvraagtijd verstreken', + '409' => 'Conflict', + '410' => 'Verdwenen', + '411' => 'Lengte vereist', + '412' => 'Niet voldaan aan de vooraf gestelde voorwaarde', + '413' => 'Aanvraag te groot', + '414' => 'Aanvraag-URL te lang', + '415' => 'Media-type niet ondersteund', + '416' => 'Bereik niet bevredigend', + '417' => 'Niet voldaan aan verwachting', + '418' => 'Ik ben een theepot', + '419' => 'Pagina verlopen', + '421' => 'Verkeerd geadresseerd verzoek', + '422' => 'Aanvraag kan niet worden verwerkt', + '423' => 'Afgesloten', + '424' => 'Gefaalde afhankelijkheid', + '425' => 'Te vroeg', + '426' => 'Upgrade nodig', + '428' => 'Voorwaarde nodig', + '429' => 'Te veel requests', + '431' => 'Headers van de aanvraag te lang', + '444' => 'Verbinding gesloten zonder reactie', + '449' => 'Opnieuw proberen met', + '451' => 'Toegang geweigerd om juridische redenen', + '499' => 'Klant Gesloten Verzoek', + '500' => 'Interne serverfout', + '501' => 'Niet geïmplementeerd', + '502' => 'Slechte poort', + '503' => 'Dienst niet beschikbaar', + '504' => 'Gateway-time-out', + '505' => 'HTTP-versie wordt niet ondersteund', + '506' => 'Variant onderhandelt ook', + '507' => 'Onvoldoende opslag', + '508' => 'Loop gedetecteerd', + '509' => 'Bandbreedte overschreden', + '510' => 'Niet verlengd', + '511' => 'Netwerkauthenticatie vereist', + '520' => 'Onbekende foutmelding', + '521' => 'Webserver is onbereikbaar', + '522' => 'Connectie duurt te lang', + '523' => 'Herkomst is onbereikbaar', + '524' => 'Time-out opgetreden', + '525' => 'SSL-handshake mislukt', + '526' => 'Ongeldig SSL-certificaat', + '527' => 'Railgun foutmelding', + '598' => 'Time-outfout netwerk lezen', + '599' => 'Fout bij time-out netwerkverbinding', 'unknownError' => 'Onbekende foutmelding', ]; diff --git a/lang/nl/pagination.php b/lang/nl/pagination.php index 1a6d6335..09a7b80b 100644 --- a/lang/nl/pagination.php +++ b/lang/nl/pagination.php @@ -3,6 +3,6 @@ declare(strict_types=1); return [ - 'next' => 'Volgende »', + 'next' => 'Volgende »', 'previous' => '« Vorige', ]; diff --git a/lang/nl/passwords.php b/lang/nl/passwords.php index 16f4174f..19eacb56 100644 --- a/lang/nl/passwords.php +++ b/lang/nl/passwords.php @@ -3,9 +3,9 @@ declare(strict_types=1); return [ - 'reset' => 'Het wachtwoord van uw account is gewijzigd.', - 'sent' => 'We hebben een e-mail verstuurd met instructies om een nieuw wachtwoord in te stellen.', + 'reset' => 'Het wachtwoord van uw account is gewijzigd.', + 'sent' => 'We hebben een e-mail verstuurd met instructies om een nieuw wachtwoord in te stellen.', 'throttled' => 'Gelieve even te wachten en het dan opnieuw te proberen.', - 'token' => 'Dit wachtwoordhersteltoken is niet geldig.', - 'user' => 'Geen gebruiker bekend met dit e-mailadres.', + 'token' => 'Dit wachtwoordhersteltoken is niet geldig.', + 'user' => 'Geen gebruiker bekend met dit e-mailadres.', ]; diff --git a/lang/nl/validation.php b/lang/nl/validation.php index 1989ddda..7dd0d70e 100644 --- a/lang/nl/validation.php +++ b/lang/nl/validation.php @@ -3,286 +3,286 @@ declare(strict_types=1); return [ - 'accepted' => ':Attribute moet worden geaccepteerd.', - 'accepted_if' => ':Attribute moet worden geaccepteerd als :other :value is.', - 'active_url' => ':Attribute is geen geldige URL.', - 'after' => ':Attribute moet een datum na :date zijn.', - 'after_or_equal' => ':Attribute moet een datum na of gelijk aan :date zijn.', - 'alpha' => ':Attribute mag alleen letters bevatten.', - 'alpha_dash' => ':Attribute mag alleen letters, nummers, underscores (_) en streepjes (-) bevatten.', - 'alpha_num' => ':Attribute mag alleen letters en nummers bevatten.', - 'any_of' => 'Het veld :attribute is ongeldig.', - 'array' => ':Attribute moet geselecteerde elementen bevatten.', - 'ascii' => 'De :attribute mag alleen alfanumerieke tekens en symbolen van één byte bevatten.', - 'before' => ':Attribute moet een datum vóór :date zijn.', - 'before_or_equal' => ':Attribute moet een datum vóór of gelijk aan :date zijn.', - 'between' => [ - 'array' => ':Attribute moet tussen :min en :max waardes bevatten.', - 'file' => ':Attribute moet tussen :min en :max kilobytes zijn.', + 'accepted' => ':Attribute moet worden geaccepteerd.', + 'accepted_if' => ':Attribute moet worden geaccepteerd als :other :value is.', + 'active_url' => ':Attribute is geen geldige URL.', + 'after' => ':Attribute moet een datum na :date zijn.', + 'after_or_equal' => ':Attribute moet een datum na of gelijk aan :date zijn.', + 'alpha' => ':Attribute mag alleen letters bevatten.', + 'alpha_dash' => ':Attribute mag alleen letters, nummers, underscores (_) en streepjes (-) bevatten.', + 'alpha_num' => ':Attribute mag alleen letters en nummers bevatten.', + 'any_of' => 'Het veld :attribute is ongeldig.', + 'array' => ':Attribute moet geselecteerde elementen bevatten.', + 'ascii' => 'De :attribute mag alleen alfanumerieke tekens en symbolen van één byte bevatten.', + 'before' => ':Attribute moet een datum vóór :date zijn.', + 'before_or_equal' => ':Attribute moet een datum vóór of gelijk aan :date zijn.', + 'between' => [ + 'array' => ':Attribute moet tussen :min en :max waardes bevatten.', + 'file' => ':Attribute moet tussen :min en :max kilobytes zijn.', 'numeric' => ':Attribute moet tussen :min en :max zijn.', - 'string' => ':Attribute moet tussen :min en :max karakters zijn.', + 'string' => ':Attribute moet tussen :min en :max karakters zijn.', ], - 'boolean' => ':Attribute moet ja of nee zijn.', - 'can' => ':Attribute bevat een waarde waar je niet bevoegd voor bent.', - 'confirmed' => 'Bevestiging van :attribute komt niet overeen.', - 'contains' => ':Attribute mist een vereiste waarde.', - 'current_password' => 'Huidig wachtwoord is onjuist.', - 'date' => ':Attribute moet een datum bevatten.', - 'date_equals' => ':Attribute moet een datum gelijk aan :date zijn.', - 'date_format' => ':Attribute voldoet niet aan het formaat :format.', - 'decimal' => 'De :attribute moet :decimal decimalen hebben.', - 'declined' => ':Attribute moet afgewezen worden.', - 'declined_if' => ':Attribute moet afgewezen worden wanneer :other gelijk is aan :value.', - 'different' => ':Attribute en :other moeten verschillend zijn.', - 'digits' => ':Attribute moet bestaan uit :digits cijfers.', - 'digits_between' => ':Attribute moet bestaan uit minimaal :min en maximaal :max cijfers.', - 'dimensions' => ':Attribute heeft geen geldige afmetingen.', - 'distinct' => ':Attribute heeft een dubbele waarde.', - 'doesnt_contain' => 'Het veld :attribute mag geen van de volgende bevatten: :values.', - 'doesnt_end_with' => ':Attribute mag niet eindigen met één van de volgende waarden: :values.', - 'doesnt_start_with' => ':Attribute mag niet beginnen met één van de volgende waarden: :values.', - 'email' => ':Attribute is geen geldig e-mailadres.', - 'encoding' => 'The :attribute field must be encoded in :encoding.', - 'ends_with' => ':Attribute moet met één van de volgende waarden eindigen: :values.', - 'enum' => 'Gekozen :attribute is ongeldig.', - 'exists' => ':Attribute bestaat niet.', - 'extensions' => ':Attribute moet een van de volgende bestandsextensies hebben: :values.', - 'file' => ':Attribute moet een bestand zijn.', - 'filled' => ':Attribute is verplicht.', - 'gt' => [ - 'array' => ':Attribute moet meer dan :value waardes bevatten.', - 'file' => ':Attribute moet groter zijn dan :value kilobytes.', + 'boolean' => ':Attribute moet ja of nee zijn.', + 'can' => ':Attribute bevat een waarde waar je niet bevoegd voor bent.', + 'confirmed' => 'Bevestiging van :attribute komt niet overeen.', + 'contains' => ':Attribute mist een vereiste waarde.', + 'current_password' => 'Huidig wachtwoord is onjuist.', + 'date' => ':Attribute moet een datum bevatten.', + 'date_equals' => ':Attribute moet een datum gelijk aan :date zijn.', + 'date_format' => ':Attribute voldoet niet aan het formaat :format.', + 'decimal' => 'De :attribute moet :decimal decimalen hebben.', + 'declined' => ':Attribute moet afgewezen worden.', + 'declined_if' => ':Attribute moet afgewezen worden wanneer :other gelijk is aan :value.', + 'different' => ':Attribute en :other moeten verschillend zijn.', + 'digits' => ':Attribute moet bestaan uit :digits cijfers.', + 'digits_between' => ':Attribute moet bestaan uit minimaal :min en maximaal :max cijfers.', + 'dimensions' => ':Attribute heeft geen geldige afmetingen.', + 'distinct' => ':Attribute heeft een dubbele waarde.', + 'doesnt_contain' => 'Het veld :attribute mag geen van de volgende bevatten: :values.', + 'doesnt_end_with' => ':Attribute mag niet eindigen met één van de volgende waarden: :values.', + 'doesnt_start_with' => ':Attribute mag niet beginnen met één van de volgende waarden: :values.', + 'email' => ':Attribute is geen geldig e-mailadres.', + 'encoding' => 'The :attribute field must be encoded in :encoding.', + 'ends_with' => ':Attribute moet met één van de volgende waarden eindigen: :values.', + 'enum' => 'Gekozen :attribute is ongeldig.', + 'exists' => ':Attribute bestaat niet.', + 'extensions' => ':Attribute moet een van de volgende bestandsextensies hebben: :values.', + 'file' => ':Attribute moet een bestand zijn.', + 'filled' => ':Attribute is verplicht.', + 'gt' => [ + 'array' => ':Attribute moet meer dan :value waardes bevatten.', + 'file' => ':Attribute moet groter zijn dan :value kilobytes.', 'numeric' => ':Attribute moet groter zijn dan :value.', - 'string' => ':Attribute moet meer dan :value tekens bevatten.', + 'string' => ':Attribute moet meer dan :value tekens bevatten.', ], - 'gte' => [ - 'array' => ':Attribute moet :value of meer waardes bevatten.', - 'file' => ':Attribute moet groter of gelijk zijn aan :value kilobytes.', + 'gte' => [ + 'array' => ':Attribute moet :value of meer waardes bevatten.', + 'file' => ':Attribute moet groter of gelijk zijn aan :value kilobytes.', 'numeric' => ':Attribute moet groter of gelijk zijn aan :value.', - 'string' => ':Attribute moet minimaal :value tekens bevatten.', + 'string' => ':Attribute moet minimaal :value tekens bevatten.', ], - 'hex_color' => ':Attribute moet een geldige hexadecimale kleurcode zijn.', - 'image' => ':Attribute moet een afbeelding zijn.', - 'in' => ':Attribute is ongeldig.', - 'in_array' => ':Attribute bestaat niet in :other.', - 'in_array_keys' => 'Het veld :attribute moet minstens één van de volgende sleutels bevatten: :values.', - 'integer' => ':Attribute moet een 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.', - 'list' => 'Het veld :attribute moet een lijst zijn.', - 'lowercase' => ':Attribute mag alleen kleine letters bevatten.', - 'lt' => [ - 'array' => ':Attribute moet minder dan :value waardes bevatten.', - 'file' => ':Attribute moet kleiner zijn dan :value kilobytes.', + 'hex_color' => ':Attribute moet een geldige hexadecimale kleurcode zijn.', + 'image' => ':Attribute moet een afbeelding zijn.', + 'in' => ':Attribute is ongeldig.', + 'in_array' => ':Attribute bestaat niet in :other.', + 'in_array_keys' => 'Het veld :attribute moet minstens één van de volgende sleutels bevatten: :values.', + 'integer' => ':Attribute moet een 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.', + 'list' => 'Het veld :attribute moet een lijst zijn.', + 'lowercase' => ':Attribute mag alleen kleine letters bevatten.', + 'lt' => [ + 'array' => ':Attribute moet minder dan :value waardes bevatten.', + 'file' => ':Attribute moet kleiner zijn dan :value kilobytes.', 'numeric' => ':Attribute moet kleiner zijn dan :value.', - 'string' => ':Attribute moet minder dan :value tekens bevatten.', + 'string' => ':Attribute moet minder dan :value tekens bevatten.', ], - 'lte' => [ - 'array' => ':Attribute moet :value of minder waardes bevatten.', - 'file' => ':Attribute moet kleiner of gelijk zijn aan :value kilobytes.', + 'lte' => [ + 'array' => ':Attribute moet :value of minder waardes bevatten.', + 'file' => ':Attribute moet kleiner of gelijk zijn aan :value kilobytes.', 'numeric' => ':Attribute moet kleiner of gelijk zijn aan :value.', - 'string' => ':Attribute moet maximaal :value tekens bevatten.', + 'string' => ':Attribute moet maximaal :value tekens bevatten.', ], - 'mac_address' => ':Attribute moet een geldig MAC-adres zijn.', - 'max' => [ - 'array' => ':Attribute mag niet meer dan :max waardes bevatten.', - 'file' => ':Attribute mag niet meer dan :max kilobytes zijn.', + 'mac_address' => ':Attribute moet een geldig MAC-adres zijn.', + 'max' => [ + 'array' => ':Attribute mag niet meer dan :max waardes bevatten.', + 'file' => ':Attribute mag niet meer dan :max kilobytes zijn.', 'numeric' => ':Attribute mag niet hoger dan :max zijn.', - 'string' => ':Attribute mag niet uit meer dan :max tekens bestaan.', + 'string' => ':Attribute mag niet uit meer dan :max tekens bestaan.', ], - 'max_digits' => ':Attribute mag niet uit meer dan :max cijfers bestaan.', - 'mimes' => ':Attribute moet een bestand zijn van het bestandstype :values.', - 'mimetypes' => ':Attribute moet een bestand zijn van het bestandstype :values.', - 'min' => [ - 'array' => ':Attribute moet minimaal :min waardes bevatten.', - 'file' => ':Attribute moet minimaal :min kilobytes zijn.', + 'max_digits' => ':Attribute mag niet uit meer dan :max cijfers bestaan.', + 'mimes' => ':Attribute moet een bestand zijn van het bestandstype :values.', + 'mimetypes' => ':Attribute moet een bestand zijn van het bestandstype :values.', + 'min' => [ + 'array' => ':Attribute moet minimaal :min waardes bevatten.', + 'file' => ':Attribute moet minimaal :min kilobytes zijn.', 'numeric' => ':Attribute moet minimaal :min zijn.', - 'string' => ':Attribute moet minimaal :min tekens zijn.', + 'string' => ':Attribute moet minimaal :min tekens zijn.', ], - 'min_digits' => ':Attribute moet minimaal uit :min cijfers bestaan.', - 'missing' => 'Het veld :attribute moet ontbreken.', - 'missing_if' => 'Het veld :attribute moet ontbreken als :other :value is.', - 'missing_unless' => 'Het veld :attribute moet ontbreken, tenzij :other :value is.', - 'missing_with' => 'Het veld :attribute moet ontbreken wanneer :values aanwezig is.', - 'missing_with_all' => 'Het veld :attribute moet ontbreken wanneer er :values aanwezig zijn.', - 'multiple_of' => ':Attribute moet een veelvoud van :value zijn.', - 'not_in' => ':Attribute is ongeldig.', - 'not_regex' => 'Het formaat van :attribute is ongeldig.', - 'numeric' => ':Attribute moet een getal zijn.', - 'password' => [ - 'letters' => ':Attribute moet minimaal één letter bevatten.', - 'mixed' => ':Attribute moet minimaal één kleine letter en één hoofdletter bevatten.', - 'numbers' => ':Attribute moet minimaal één cijfer bevatten.', - 'symbols' => ':Attribute moet minimaal één vreemd teken bevatten.', + 'min_digits' => ':Attribute moet minimaal uit :min cijfers bestaan.', + 'missing' => 'Het veld :attribute moet ontbreken.', + 'missing_if' => 'Het veld :attribute moet ontbreken als :other :value is.', + 'missing_unless' => 'Het veld :attribute moet ontbreken, tenzij :other :value is.', + 'missing_with' => 'Het veld :attribute moet ontbreken wanneer :values aanwezig is.', + 'missing_with_all' => 'Het veld :attribute moet ontbreken wanneer er :values aanwezig zijn.', + 'multiple_of' => ':Attribute moet een veelvoud van :value zijn.', + 'not_in' => ':Attribute is ongeldig.', + 'not_regex' => 'Het formaat van :attribute is ongeldig.', + 'numeric' => ':Attribute moet een getal zijn.', + 'password' => [ + 'letters' => ':Attribute moet minimaal één letter bevatten.', + 'mixed' => ':Attribute moet minimaal één kleine letter en één hoofdletter bevatten.', + 'numbers' => ':Attribute moet minimaal één cijfer bevatten.', + 'symbols' => ':Attribute moet minimaal één vreemd teken bevatten.', 'uncompromised' => 'Het opgegeven :attribute komt voor in een datalek. Kies een ander :attribute.', ], - 'present' => ':Attribute moet aanwezig zijn.', - 'present_if' => ':Attribute moet aanwezig zijn als :other :value is.', - 'present_unless' => ':Attribute moet aanwezig zijn tenzij :other :value is.', - 'present_with' => ':Attribute moet aanwezig zijn als :values aanwezig is.', - 'present_with_all' => ':Attribute moet aanwezig zijn als :values aanwezig zijn.', - 'prohibited' => ':Attribute is niet toegestaan.', - 'prohibited_if' => ':Attribute is niet toegestaan indien :other gelijk is aan :value.', + 'present' => ':Attribute moet aanwezig zijn.', + 'present_if' => ':Attribute moet aanwezig zijn als :other :value is.', + 'present_unless' => ':Attribute moet aanwezig zijn tenzij :other :value is.', + 'present_with' => ':Attribute moet aanwezig zijn als :values aanwezig is.', + 'present_with_all' => ':Attribute moet aanwezig zijn als :values aanwezig zijn.', + 'prohibited' => ':Attribute is niet toegestaan.', + 'prohibited_if' => ':Attribute is niet toegestaan indien :other gelijk is aan :value.', 'prohibited_if_accepted' => 'Het veld :attribute is niet toegestaan wanneer :other is geaccepteerd.', 'prohibited_if_declined' => 'Het veld :attribute is niet toegestaan wanneer :other is afgewezen.', - 'prohibited_unless' => ':Attribute is niet toegestaan tenzij :other gelijk is aan :values.', - 'prohibits' => ':Attribute is niet toegestaan in combinatie met :other.', - 'regex' => 'Het formaat van :attribute is ongeldig.', - 'required' => ':Attribute is verplicht.', - 'required_array_keys' => ':Attribute moet waardes bevatten voor :values.', - 'required_if' => ':Attribute is verplicht indien :other gelijk is aan :value.', - 'required_if_accepted' => ':Attribute is verplicht indien :other is geaccepteerd.', - 'required_if_declined' => ':Attribute is verplicht indien :other is geweigerd.', - 'required_unless' => ':Attribute is verplicht tenzij :other gelijk is aan :values.', - 'required_with' => ':Attribute is verplicht in combinatie met :values.', - 'required_with_all' => ':Attribute is verplicht in combinatie met :values.', - 'required_without' => ':Attribute is verplicht als :values niet ingevuld is.', - 'required_without_all' => ':Attribute is verplicht als :values niet ingevuld zijn.', - 'same' => ':Attribute en :other moeten overeenkomen.', - 'size' => [ - 'array' => ':Attribute moet :size waardes bevatten.', - 'file' => ':Attribute moet :size kilobytes groot zijn.', + 'prohibited_unless' => ':Attribute is niet toegestaan tenzij :other gelijk is aan :values.', + 'prohibits' => ':Attribute is niet toegestaan in combinatie met :other.', + 'regex' => 'Het formaat van :attribute is ongeldig.', + 'required' => ':Attribute is verplicht.', + 'required_array_keys' => ':Attribute moet waardes bevatten voor :values.', + 'required_if' => ':Attribute is verplicht indien :other gelijk is aan :value.', + 'required_if_accepted' => ':Attribute is verplicht indien :other is geaccepteerd.', + 'required_if_declined' => ':Attribute is verplicht indien :other is geweigerd.', + 'required_unless' => ':Attribute is verplicht tenzij :other gelijk is aan :values.', + 'required_with' => ':Attribute is verplicht in combinatie met :values.', + 'required_with_all' => ':Attribute is verplicht in combinatie met :values.', + 'required_without' => ':Attribute is verplicht als :values niet ingevuld is.', + 'required_without_all' => ':Attribute is verplicht als :values niet ingevuld zijn.', + 'same' => ':Attribute en :other moeten overeenkomen.', + 'size' => [ + 'array' => ':Attribute moet :size waardes bevatten.', + 'file' => ':Attribute moet :size kilobytes groot zijn.', 'numeric' => ':Attribute moet :size zijn.', - 'string' => ':Attribute moet :size tekens zijn.', + 'string' => ':Attribute moet :size tekens zijn.', ], - 'starts_with' => ':Attribute moet beginnen met een van de volgende: :values.', - 'string' => ':Attribute moet een tekst zijn.', - 'timezone' => ':Attribute moet een geldige tijdzone zijn.', - 'ulid' => 'De :attribute moet een geldige ULID zijn.', - 'unique' => ':Attribute is al in gebruik.', - 'uploaded' => 'Het uploaden van :attribute is mislukt.', - 'uppercase' => ':Attribute mag alleen hoofdletters bevatten.', - 'url' => ':Attribute moet een geldige URL zijn.', - 'uuid' => ':Attribute moet een geldige UUID zijn.', - 'attributes' => [ - 'address' => 'adres', - 'affiliate_url' => 'partner-URL', - 'age' => 'leeftijd', - 'amount' => 'bedrag', - 'announcement' => 'aankondiging', - 'area' => 'gebied', - 'audience_prize' => 'publieksprijs', - 'audience_winner' => 'publiekswinnaar', - 'available' => 'beschikbaar', - 'birthday' => 'verjaardag', - 'body' => 'inhoud', - 'city' => 'stad', - 'color' => 'kleur', - 'company' => 'bedrijf', - 'compilation' => 'compilatie', - 'concept' => 'concept', - 'conditions' => 'voorwaarden', - 'content' => 'inhoud', - 'contest' => 'wedstrijd', - 'country' => 'land', - 'cover' => 'omslag', - 'created_at' => 'aangemaakt op', - 'creator' => 'maker', - 'currency' => 'valuta', - 'current_password' => 'huidig wachtwoord', - 'customer' => 'klant', - 'date' => 'datum', - 'date_of_birth' => 'geboortedatum', - 'dates' => 'datums', - 'day' => 'dag', - 'deleted_at' => 'verwijderd op', - 'description' => 'omschrijving', - 'display_type' => 'weergavetype', - 'district' => 'wijk', - 'duration' => 'tijdsduur', - 'email' => 'e-mailadres', - 'excerpt' => 'uittreksel', - 'filter' => 'filter', - 'finished_at' => 'klaar om', - 'first_name' => 'voornaam', - 'gender' => 'geslacht', - 'grand_prize' => 'grote prijs', - 'group' => 'groep', - 'hour' => 'uur', - 'image' => 'afbeelding', - 'image_desktop' => 'bureaubladafbeelding', - 'image_main' => 'hoofdafbeelding', - 'image_mobile' => 'mobiele afbeelding', - 'images' => 'afbeeldingen', - 'is_audience_winner' => 'is publiekswinnaar', - 'is_hidden' => 'is verborgen', - 'is_subscribed' => 'is geabonneerd', - 'is_visible' => 'is zichtbaar', - 'is_winner' => 'is winnaar', - 'items' => 'artikels', - 'key' => 'sleutel', - 'last_name' => 'achternaam', - 'lesson' => 'les', - 'line_address_1' => 'adresregel 1', - 'line_address_2' => 'adresregel 2', - 'login' => 'login', - 'message' => 'bericht', - 'middle_name' => 'tweede naam', - 'minute' => 'minuut', - 'mobile' => 'mobiel', - 'month' => 'maand', - 'name' => 'naam', - 'national_code' => 'landcode', - 'number' => 'nummer', - 'password' => 'wachtwoord', - 'password_confirmation' => 'wachtwoordbevestiging', - 'phone' => 'telefoonnummer', - 'photo' => 'foto', - 'portfolio' => 'portfolio', - 'postal_code' => 'postcode', - 'preview' => 'voorbeeld', - 'price' => 'prijs', - 'product_id' => 'product-ID', - 'product_uid' => 'product-UID', - 'product_uuid' => 'product-UUID', - 'promo_code' => 'promo-code', - 'province' => 'provincie', - 'quantity' => 'hoeveelheid', - 'reason' => 'reden', + 'starts_with' => ':Attribute moet beginnen met een van de volgende: :values.', + 'string' => ':Attribute moet een tekst zijn.', + 'timezone' => ':Attribute moet een geldige tijdzone zijn.', + 'ulid' => 'De :attribute moet een geldige ULID zijn.', + 'unique' => ':Attribute is al in gebruik.', + 'uploaded' => 'Het uploaden van :attribute is mislukt.', + 'uppercase' => ':Attribute mag alleen hoofdletters bevatten.', + 'url' => ':Attribute moet een geldige URL zijn.', + 'uuid' => ':Attribute moet een geldige UUID zijn.', + 'attributes' => [ + 'address' => 'adres', + 'affiliate_url' => 'partner-URL', + 'age' => 'leeftijd', + 'amount' => 'bedrag', + 'announcement' => 'aankondiging', + 'area' => 'gebied', + 'audience_prize' => 'publieksprijs', + 'audience_winner' => 'publiekswinnaar', + 'available' => 'beschikbaar', + 'birthday' => 'verjaardag', + 'body' => 'inhoud', + 'city' => 'stad', + 'color' => 'kleur', + 'company' => 'bedrijf', + 'compilation' => 'compilatie', + 'concept' => 'concept', + 'conditions' => 'voorwaarden', + 'content' => 'inhoud', + 'contest' => 'wedstrijd', + 'country' => 'land', + 'cover' => 'omslag', + 'created_at' => 'aangemaakt op', + 'creator' => 'maker', + 'currency' => 'valuta', + 'current_password' => 'huidig wachtwoord', + 'customer' => 'klant', + 'date' => 'datum', + 'date_of_birth' => 'geboortedatum', + 'dates' => 'datums', + 'day' => 'dag', + 'deleted_at' => 'verwijderd op', + 'description' => 'omschrijving', + 'display_type' => 'weergavetype', + 'district' => 'wijk', + 'duration' => 'tijdsduur', + 'email' => 'e-mailadres', + 'excerpt' => 'uittreksel', + 'filter' => 'filter', + 'finished_at' => 'klaar om', + 'first_name' => 'voornaam', + 'gender' => 'geslacht', + 'grand_prize' => 'grote prijs', + 'group' => 'groep', + 'hour' => 'uur', + 'image' => 'afbeelding', + 'image_desktop' => 'bureaubladafbeelding', + 'image_main' => 'hoofdafbeelding', + 'image_mobile' => 'mobiele afbeelding', + 'images' => 'afbeeldingen', + 'is_audience_winner' => 'is publiekswinnaar', + 'is_hidden' => 'is verborgen', + 'is_subscribed' => 'is geabonneerd', + 'is_visible' => 'is zichtbaar', + 'is_winner' => 'is winnaar', + 'items' => 'artikels', + 'key' => 'sleutel', + 'last_name' => 'achternaam', + 'lesson' => 'les', + 'line_address_1' => 'adresregel 1', + 'line_address_2' => 'adresregel 2', + 'login' => 'login', + 'message' => 'bericht', + 'middle_name' => 'tweede naam', + 'minute' => 'minuut', + 'mobile' => 'mobiel', + 'month' => 'maand', + 'name' => 'naam', + 'national_code' => 'landcode', + 'number' => 'nummer', + 'password' => 'wachtwoord', + 'password_confirmation' => 'wachtwoordbevestiging', + 'phone' => 'telefoonnummer', + 'photo' => 'foto', + 'portfolio' => 'portfolio', + 'postal_code' => 'postcode', + 'preview' => 'voorbeeld', + 'price' => 'prijs', + 'product_id' => 'product-ID', + 'product_uid' => 'product-UID', + 'product_uuid' => 'product-UUID', + 'promo_code' => 'promo-code', + 'province' => 'provincie', + 'quantity' => 'hoeveelheid', + 'reason' => 'reden', 'recaptcha_response_field' => 'recaptcha-antwoordveld', - 'referee' => 'scheidsrechter', - 'referees' => 'scheidsrechters', - 'region' => 'regio', - 'reject_reason' => 'afwijsreden', - 'remember' => 'onthouden', - 'restored_at' => 'hersteld op', - 'result_text_under_image' => 'antwoord tekst onder afbeelding', - 'role' => 'rol', - 'rule' => 'regel', - 'rules' => 'regels', - 'second' => 'seconde', - 'sex' => 'geslacht', - 'shipment' => 'verzending', - 'short_text' => 'korte tekst', - 'size' => 'grootte', - 'skills' => 'vaardigheden', - 'slug' => 'slug', - 'specialization' => 'specialisatie', - 'started_at' => 'gestart op', - 'state' => 'staat', - 'status' => 'status', - 'street' => 'straat', - 'student' => 'leerling', - 'subject' => 'onderwerp', - 'tag' => 'label', - 'tags' => 'labels', - 'teacher' => 'docent', - 'terms' => 'voorwaarden', - 'test_description' => 'testomschrijving', - 'test_locale' => 'testlandinstelling', - 'test_name' => 'testnaam', - 'text' => 'tekst', - 'time' => 'tijd', - 'title' => 'titel', - 'type' => 'type', - 'updated_at' => 'bijgewerkt op', - 'user' => 'gebruiker', - 'username' => 'gebruikersnaam', - 'value' => 'waarde', - 'winner' => 'winnaar', - 'work' => 'werk', - 'year' => 'jaar', + 'referee' => 'scheidsrechter', + 'referees' => 'scheidsrechters', + 'region' => 'regio', + 'reject_reason' => 'afwijsreden', + 'remember' => 'onthouden', + 'restored_at' => 'hersteld op', + 'result_text_under_image' => 'antwoord tekst onder afbeelding', + 'role' => 'rol', + 'rule' => 'regel', + 'rules' => 'regels', + 'second' => 'seconde', + 'sex' => 'geslacht', + 'shipment' => 'verzending', + 'short_text' => 'korte tekst', + 'size' => 'grootte', + 'skills' => 'vaardigheden', + 'slug' => 'slug', + 'specialization' => 'specialisatie', + 'started_at' => 'gestart op', + 'state' => 'staat', + 'status' => 'status', + 'street' => 'straat', + 'student' => 'leerling', + 'subject' => 'onderwerp', + 'tag' => 'label', + 'tags' => 'labels', + 'teacher' => 'docent', + 'terms' => 'voorwaarden', + 'test_description' => 'testomschrijving', + 'test_locale' => 'testlandinstelling', + 'test_name' => 'testnaam', + 'text' => 'tekst', + 'time' => 'tijd', + 'title' => 'titel', + 'type' => 'type', + 'updated_at' => 'bijgewerkt op', + 'user' => 'gebruiker', + 'username' => 'gebruikersnaam', + 'value' => 'waarde', + 'winner' => 'winnaar', + 'work' => 'werk', + 'year' => 'jaar', ], ]; diff --git a/routes/tenant.php b/routes/tenant.php index 59d61ac8..5780855c 100644 --- a/routes/tenant.php +++ b/routes/tenant.php @@ -24,6 +24,6 @@ Route::middleware([ PreventAccessFromCentralDomains::class, ])->group(function () { Route::get('/', function () { - return 'This is your multi-tenant application. The id of the current tenant is ' . tenant('id'); + return 'This is your multi-tenant application. The id of the current tenant is '.tenant('id'); }); }); diff --git a/tests/Browser/Concerns/InteractsWithWmsData.php b/tests/Browser/Concerns/InteractsWithWmsData.php index f0e5460a..24faf80c 100644 --- a/tests/Browser/Concerns/InteractsWithWmsData.php +++ b/tests/Browser/Concerns/InteractsWithWmsData.php @@ -84,10 +84,10 @@ trait InteractsWithWmsData protected function seedPlatformPrices(): void { foreach ([ - ['basic', 'Basic', 'Starter WMS access', 'Core warehouse management for small teams.', 4900, 49000, 10, false, true, ['2 warehouses', '10 users', 'Standard support']], - ['advanced', 'Advanced', 'Growing WMS operations', 'More users, warehouses and automation controls.', 14900, 149000, 20, true, true, ['5 warehouses', '100 users', 'Advanced support']], - ['pro', 'Pro', 'Professional WMS command centre', 'Full operational visibility for larger teams.', 29900, 299000, 30, false, true, ['15 warehouses', '1000 users', 'Priority support']], - ] as [$code, $name, $strapline, $description, $monthly, $annual, $sortOrder, $featured, $active, $features]) { + ['basic', 'Basic', 'Starter WMS access', 'Core warehouse management for small teams.', 4900, 49000, 10, false, true, ['2 warehouses', '10 users', 'Standard support']], + ['advanced', 'Advanced', 'Growing WMS operations', 'More users, warehouses and automation controls.', 14900, 149000, 20, true, true, ['5 warehouses', '100 users', 'Advanced support']], + ['pro', 'Pro', 'Professional WMS command centre', 'Full operational visibility for larger teams.', 29900, 299000, 30, false, true, ['15 warehouses', '1000 users', 'Priority support']], + ] as [$code, $name, $strapline, $description, $monthly, $annual, $sortOrder, $featured, $active, $features]) { PlatformPrice::query()->updateOrCreate( ['code' => $code], [ diff --git a/tests/Browser/PlatformAdministrationBrowserTest.php b/tests/Browser/PlatformAdministrationBrowserTest.php index ad2d296a..9e5cf4ee 100644 --- a/tests/Browser/PlatformAdministrationBrowserTest.php +++ b/tests/Browser/PlatformAdministrationBrowserTest.php @@ -4,9 +4,6 @@ namespace Tests\Browser; use Illuminate\Foundation\Testing\DatabaseMigrations; use Laravel\Dusk\Browser; -use Modules\Platform\app\Models\Company; -use Modules\Platform\app\Models\LicenseKey; -use Modules\Platform\app\Models\Payment; use Tests\Browser\Concerns\InteractsWithWmsBrowser; use Tests\Browser\Concerns\InteractsWithWmsData; use Tests\DuskTestCase; diff --git a/tests/Browser/PlatformPricingBrowserTest.php b/tests/Browser/PlatformPricingBrowserTest.php index 012c53bd..f43068ea 100644 --- a/tests/Browser/PlatformPricingBrowserTest.php +++ b/tests/Browser/PlatformPricingBrowserTest.php @@ -63,7 +63,7 @@ class PlatformPricingBrowserTest extends DuskTestCase $this->assertSingleProfessionalHeader($browser, ''); $browser->assertPresent('input[name="name"]') ->assertPresent('input[name="monthly_amount"]') - ->visit('/admin/prices/' . $price->id . '/edit'); + ->visit('/admin/prices/'.$price->id.'/edit'); $this->assertSingleProfessionalHeaderExists($browser); $browser->assertPresent('input[name="name"]') diff --git a/tests/Feature/InternalApi/InternalApiCoverageTest.php b/tests/Feature/InternalApi/InternalApiCoverageTest.php index e7822063..df60244e 100644 --- a/tests/Feature/InternalApi/InternalApiCoverageTest.php +++ b/tests/Feature/InternalApi/InternalApiCoverageTest.php @@ -46,7 +46,7 @@ class InternalApiCoverageTest extends TestCase { config(['platform.internal_api_key' => 'testing-secret']); $timestamp = now()->subMinutes(10)->toIso8601String(); - $signature = hash_hmac('sha256', $timestamp . '.', 'testing-secret'); + $signature = hash_hmac('sha256', $timestamp.'.', 'testing-secret'); $this->withHeaders([ 'X-WMS-Timestamp' => $timestamp, @@ -64,7 +64,7 @@ class InternalApiCoverageTest extends TestCase $this->withHeaders([ 'X-WMS-Timestamp' => $timestamp, - 'X-WMS-Signature' => hash_hmac('sha256', $timestamp . '.', 'wrong-secret'), + 'X-WMS-Signature' => hash_hmac('sha256', $timestamp.'.', 'wrong-secret'), ])->getJson('/api/internal/companies')->assertUnauthorized(); } @@ -81,7 +81,7 @@ class InternalApiCoverageTest extends TestCase Warehouse::create(['company_id' => $company->id, 'code' => 'SUM', 'name' => 'Summary Warehouse']); $timestamp = now()->toIso8601String(); - $signature = hash_hmac('sha256', $timestamp . '.', 'testing-secret'); + $signature = hash_hmac('sha256', $timestamp.'.', 'testing-secret'); $this->withHeaders([ 'X-WMS-Timestamp' => $timestamp, diff --git a/tests/Feature/Platform/PlatformAdministrationTest.php b/tests/Feature/Platform/PlatformAdministrationTest.php index 7ee17ce0..6578c372 100644 --- a/tests/Feature/Platform/PlatformAdministrationTest.php +++ b/tests/Feature/Platform/PlatformAdministrationTest.php @@ -241,7 +241,7 @@ class PlatformAdministrationTest extends TestCase } /** - * @param array $overrides + * @param array $overrides * @return array */ private function pricePayload(array $overrides = []): array @@ -266,7 +266,7 @@ class PlatformAdministrationTest extends TestCase /** * Return payload with a valid test CSRF token. * - * @param array $payload + * @param array $payload * @return array */ private function csrfPayload(array $payload = []): array diff --git a/tests/Feature/Platform/PlatformPriceCrudTest.php b/tests/Feature/Platform/PlatformPriceCrudTest.php index b446ced2..62de20e5 100644 --- a/tests/Feature/Platform/PlatformPriceCrudTest.php +++ b/tests/Feature/Platform/PlatformPriceCrudTest.php @@ -4,7 +4,6 @@ namespace Tests\Feature\Platform; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; -use Modules\Platform\app\Models\Company; use Modules\Platform\app\Models\PlatformPrice; use PHPUnit\Framework\Attributes\DataProvider; use Tests\TestCase; @@ -256,7 +255,7 @@ class PlatformPriceCrudTest extends TestCase } /** - * @param array $overrides + * @param array $overrides * @return array */ private function pricePayload(array $overrides = []): array @@ -302,7 +301,7 @@ class PlatformPriceCrudTest extends TestCase /** * Return payload with a valid test CSRF token. * - * @param array $payload + * @param array $payload * @return array */ private function csrfPayload(array $payload = []): array diff --git a/tests/Feature/Warehouse/WarehouseCrudTest.php b/tests/Feature/Warehouse/WarehouseCrudTest.php index 5c1f4668..5f1ef809 100644 --- a/tests/Feature/Warehouse/WarehouseCrudTest.php +++ b/tests/Feature/Warehouse/WarehouseCrudTest.php @@ -205,7 +205,7 @@ class WarehouseCrudTest extends TestCase /** * Return payload with a valid test CSRF token. * - * @param array $payload + * @param array $payload * @return array */ private function csrfPayload(array $payload = []): array diff --git a/tests/TestCase.php b/tests/TestCase.php index 78677242..aa885f98 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -4,6 +4,7 @@ namespace Tests; use Illuminate\Foundation\Http\Middleware\ValidateCsrfToken; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; +use Illuminate\Testing\TestResponse; use Laravel\Fortify\Features; abstract class TestCase extends BaseTestCase @@ -25,9 +26,9 @@ abstract class TestCase extends BaseTestCase /** * POST with a real CSRF token for Fortify/web form tests. * - * @param array $data + * @param array $data */ - protected function csrfPost(string $uri, array $data = []): \Illuminate\Testing\TestResponse + protected function csrfPost(string $uri, array $data = []): TestResponse { $token = 'test-csrf-token';