12 junio, 2025
Multi Idiomas en Laravel
crear una aplicación multilingüe en Laravel 12 usando middleware. Configura traducciones, gestiona sesiones y evita errores comunes con este tutorial práctico. ✅

Suscríbete a nuestro canal en Youtube
SuscríbirseEn aplicaciones globales, ofrecer soporte para múltiples idiomas es clave para mejorar la experiencia del usuario. En Laravel 12, esto se logra eficientemente con middleware personalizado , permitiendo cambiar el idioma dinámicamente y mantener la coherencia entre solicitudes. En este tutorial, te guiaré paso a paso para implementar un sistema multi-idioma usando middleware, rutas y archivos de traducción
Requisitos Previos
- Laravel 12 instalado.
- Conocimientos básicos de rutas, middleware y Blade.
- Xampp
Implementación Paso a Paso
Crear el Middleware
Genera un middleware para manejar el idioma:
bash
php artisan make:middleware SetLocale
Código del Middleware (app/Http/Middleware/SetLocale.php
):
php
public function handle($request, Closure $next)
{
if (session('lang')) {
App::setLocale(session('lang')); // Aplicar idioma de sesión [[4]]
}
return $next($request);
}
Registrar el Middleware en Laravel 12
En Laravel 12, los middleware se registran en bootstrap/app.php
usando grupos:
php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withMiddleware(function (Middleware $middleware) {
$middleware->group('web', [
\App\Http\Middleware\SetLocale::class, // Añadir al grupo 'web' [[4]]
]);
})
->create();
Crear Archivos de Traducción
Organiza traducciones en resources/lang/
:
Copiar
resources/lang/
├── en/
│ └── messages.php
└── es/
└── messages.php
Ejemplo (es/messages.php
):
php
return [
'welcome' => '¡Bienvenido!',
'menu' => 'Menú',
];
Definir Rutas para Cambiar Idioma
En routes/web.php
:
php
Route::get('lang/{lang}', function ($lang) {
session(['lang' => $lang]); // Guardar idioma en sesión [[6]]
return redirect()->back();
})->name('change-language');
Usar Traducciones en Vistas Blade
Muestra texto según el idioma:
blade
<h1>{{ __('messages.welcome') }}</h1>
<a href="{{ route('change-language', ['lang' => 'en']) }}">English</a>
<a href="{{ route('change-language', ['lang' => 'es']) }}">Español</a>
Errores Comunes y Soluciones
-
Middleware no funciona
- Verifica que el middleware esté registrado en el grupo
web
- Ejecuta
php artisan config:cache
para limpiar caché.
- Verifica que el middleware esté registrado en el grupo
-
El idioma no persiste
- Asegúrate de que
session(['lang' => $lang])
se ejecute antes de redirigir
- Asegúrate de que
-
Traducciones no cargan
- Confirma que los archivos en
lang/
tengan claves válidas y estén en UTF-8.
- Confirma que los archivos en
Con este sistema, tu aplicación Laravel 12 podrá soportar múltiples idiomas de forma eficiente. El middleware garantiza que el idioma seleccionado persista en todas las solicitudes, mientras las traducciones mantienen el código organizado.
Leido 1434 veces | 0 usuarios
Código fuente no disponible.