17 Cómo Cambiar el Menú de Navegación por Idiomas en AdminLTE: Así Traduce tu Sidebar con Laravel

Duración: 15 min
Módulo: Sistema Web Internacional y Arquitectura Multiidioma Lección 3 de 3

Descripción

🔍 Lección 17: Middleware y Rutas Dinámicas para Alternar el Local con un Clic (MultiIdioma) 🚀🛠️

En este decimoséptimo capítulo le damos vida e interactividad total al selector de la barra de navegación que construimos en la lección anterior. Configurar un selector visual no basta; necesitamos que al hacer clic en una bandera, Laravel cambie de forma global el idioma de la aplicación. Para lograrlo, creamos una ruta dinámica de redirección, almacenamos la elección en la sesión del usuario y programamos un Middleware personalizado que intercepta cada petición HTTP para fijar el Locale correcto.

🎯 Lo realizado en este capítulo

  • 🛣️ Creación de la Ruta de Conmutación (change-locale): Registramos una nueva ruta de tipo GET en nuestro archivo routes/web.php que acepta un parámetro dinámico (el código del idioma): Route::get('locale/{locale}', [LocaleController::class, 'changeLocale'])->name('locale.change');.
  • 🎮 Desarrollo del LocaleController: Creamos un controlador dedicado exclusivamente a gestionar la internacionalización. En su método changeLocale($locale), validamos primero que el idioma solicitado esté dentro de los permitidos de nuestra lista (es, en, pt). Si es válido, inyectamos el código directamente en la sesión del servidor usando session(['locale' => $locale]); y retornamos al usuario a la página de origen con un return redirect()->back();.
  • 🛡️ Creación e Implementación del Middleware Multiidioma: Ejecutamos el comando php artisan make:middleware SetLocaleMiddleware para interceptar las peticiones del cliente. Dentro de su método handle(), estructuramos una condicional: si existe un idioma almacenado en la sesión (session()->has('locale')), el sistema altera el entorno de ejecución en caliente invocando al núcleo de Laravel mediante App::setLocale(session('locale'));.
  • ⚙️ Registro Global en el Kernel de Laravel: Para que este cambio afecte a todas las secciones de la plataforma de manera uniforme, registramos nuestro nuevo Middleware dentro del archivo de configuración del núcleo (bootstrap/app.php o Kernel.php dependiendo de tu versión exacta de Laravel 11/13), integrándolo específicamente dentro del grupo de rutas del Middleware web.
  • 🔗 Vinculación de Enlaces Interactivos en la Cabecera: Regresamos a nuestro selector del menú desplegable (dropdown) en AdminLTE. Modificamos los enlaces vacíos href="#" y los reemplazamos por la llamada dinámica de la ruta de Blade, pasándole como argumento la llave del arreglo asociativo: href="{{ route('locale.change', $key) }}".

🗄️ Próximo paso

Con el Middleware activo y las rutas enlazadas, el sistema ya es capaz de cambiar todo el entorno con un solo clic. En la próxima lección, pondremos a prueba este engranaje regresando a la vista del listado (index) y la vista de visualización (show) para implementar las directivas necesarias que forzarán a la tabla de DataTables a extraer de forma automática únicamente la sub-llave JSON del idioma seleccionado por el usuario. ¡Nos vemos en el próximo video! 🐾