Inicio » Blog »

12 junio, 2025

Multi Idiomas en Laravel

#Laravel #PHP

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

Multi Idiomas en Laravel

Suscríbete a nuestro canal en Youtube

Suscríbirse

En 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

  1. Laravel 12 instalado.
  2. Conocimientos básicos de rutas, middleware y Blade.
  3. 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

  1. Middleware no funciona

    • Verifica que el middleware esté registrado en el grupo web
    • Ejecuta php artisan config:cache para limpiar caché.
  2. El idioma no persiste

    • Asegúrate de que session(['lang' => $lang]) se ejecute antes de redirigir
  3. Traducciones no cargan

    • Confirma que los archivos en lang/ tengan claves válidas y estén en UTF-8.

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.

Compartir link del tutorial con tus amigos


Laravel Página Web Administrable

USD 37.00

Descarga del código fuente

Laravel Página Web Administrable

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú