Sistema multilingüe EN/ES: middleware SetLocale, LanguageSwitcher, campo locale en users, traducciones en dashboard/mapa/proyectos/gestores

This commit is contained in:
2026-05-09 23:14:48 +02:00
parent 7bf5a90a24
commit 3e8b6f1eb3
22 changed files with 798 additions and 131 deletions
@@ -1,8 +1,8 @@
<div class="flex flex-col h-screen">
{{-- Cabecera fija --}}
<div class="flex justify-between items-center mb-4 px-4 pt-4 flex-shrink-0">
<h1 class="text-2xl font-bold">Gestión de elementos - {{ $phase->name }}</h1>
<a href="{{ route('projects.map', $project) }}" class="btn btn-outline btn-sm"> Volver al mapa</a>
<h1 class="text-2xl font-bold">{{ __("Manage Layers") }} - {{ $phase->name }}</h1>
<a href="{{ route('projects.map', $project) }}" class="btn btn-outline btn-sm"> {{ __("Back") }}</a>
</div>
<div class="flex-1 overflow-hidden px-4 pb-4">
@@ -11,10 +11,10 @@
<div class="space-y-4 overflow-y-auto h-full pr-2">
<div class="card bg-base-100 shadow-xl">
<div class="card-body">
<h2 class="card-title">Importar archivo</h2>
<h2 class="card-title">{{ __("Import file") }}</h2>
<form wire:submit.prevent="importFile">
<div class="form-control">
<label class="label">Nombre de capa</label>
<label class="label">{{ __("Layer name") }}</label>
<input type="text" wire:model="layerName" class="input input-bordered" required>
</div>
<div class="form-control">
@@ -26,15 +26,15 @@
<input type="file" wire:model="uploadFile" class="file-input file-input-bordered">
@error('uploadFile') <span class="text-error">{{ $message }}</span> @enderror
</div>
<button type="submit" class="btn btn-primary w-full mt-2">Subir y convertir</button>
<button type="submit" class="btn btn-primary w-full mt-2">{{ __("Upload") }}</button>
</form>
<div class="divider"></div>
<button wire:click="createEmptyLayer" class="btn btn-secondary w-full">Crear capa vacía</button>
<button wire:click="createEmptyLayer" class="btn btn-secondary w-full">{{ __("Create empty layer") }}</button>
</div>
</div>
<div class="card bg-base-100 shadow-xl">
<div class="card-body">
<h2 class="card-title">Capas existentes</h2>
<h2 class="card-title">{{ __("Layers") }}</h2>
<div class="space-y-2 max-h-96 overflow-y-auto">
@foreach($layers as $layer)
<div wire:key="layer-{{ $layer->id }}" class="flex justify-between items-center p-2 border rounded">
@@ -50,12 +50,12 @@
</div>
<div>
<button wire:click="selectLayer({{ $layer->id }})" class="btn btn-xs btn-info">✏️ Editar</button>
<button wire:click="deleteLayer({{ $layer->id }})" class="btn btn-xs btn-error" onclick="return confirm('¿Eliminar capa?')">🗑️</button>
<button wire:click="deleteLayer({{ $layer->id }})" class="btn btn-xs btn-error" onclick="return confirm('¿{{ __("Delete layer") }}?')">🗑️</button>
</div>
</div>
@endforeach
@if($layers->isEmpty())
<p class="text-center">Sin capas. Crea una o importa.</p>
<p class="text-center">{{ __("No results") }}. Crea una o importa.</p>
@endif
</div>
</div>
@@ -66,7 +66,7 @@
<div class="lg:col-span-2 flex flex-col h-full">
<div class="card bg-base-100 shadow-xl flex-1 flex flex-col">
<div class="card-body flex-1 flex flex-col p-2">
<h2 class="card-title">Editor gráfico</h2>
<h2 class="card-title">{{ __("Edit") }}</h2>
@if($selectedLayer)
<div class="mt-3 flex gap-2">
<button id="saveDrawingBtn" class="btn btn-primary">💾 Guardar cambios</button>