A continuación, añade un archivo resources/lang/fr.json.
Como puedes observar, estamos haciendo referencia de forma consistente al mensaje predeterminado del archivo welcome.blade.php ({{ __(‘¡Bienvenido al sitio web de Linguise !’) }}). No es necesario crear un archivo en.json, ya que Laravel reconoce automáticamente que los mensajes predeterminados están en inglés.
Configurar el selector de idioma en una aplicación multilingüe de Laravel
Además, Laravel aún no está configurado para sobrescribir el idioma local, así que por ahora, gestionaremos la traducción directamente dentro de la ruta. Modifica la ruta de bienvenida predeterminada dentro del archivo routes/web.php así.
En este caso, capturamos un parámetro GET de configuración regional opcional y establecemos la configuración regional actual en función de él (si la configuración regional solicitada es compatible).
Ahora puedes visitar tu sitio web e incluir cualquiera de los idiomas compatibles como primer segmento de la URL. Por ejemplo, al navegar a localhost/it o localhost/fr se mostrará el contenido localizado. Si no especificas una configuración regional o eliges una que no sea compatible, Laravel usará el inglés (en) de forma predeterminada.
Middleware de localización para Laravel
Incluir el idioma en cada URL podría no ser lo ideal y podría afectar el atractivo visual del sitio. Para solucionarlo, configuraremos un selector de idioma y utilizaremos la sesión del usuario para mostrar el contenido traducido. Puedes crear un nuevo middleware en el archivo app/Http/Middleware/Localization.php, o generarlo ejecutando el comando artisan make:middleware Localization.
Luego, añade el siguiente código dentro.
Este middleware indicará a Laravel que use la ubicación seleccionada por el usuario si esta opción está presente en la sesión.
Dado que necesitamos que la operación se ejecute en cada solicitud, agrégala a la pila de middleware predeterminada en app/Http/Kernel.php para el grupo de middleware web.
Modificar las rutas
A continuación, define una ruta para cambiar el idioma en el archivo routes/web.php. Aquí usamos una ruta de cierre, pero puedes colocar el mismo código dentro de un controlador si lo prefieres.
Además, elimina el cambio de idioma que se había añadido previamente a la ruta de bienvenida predeterminada. Tu ruta raíz ahora debería verse así.
Una vez hecho esto, el usuario solo puede cambiar el idioma activo visitando localhost/language/{locale}. La configuración regional seleccionada se guardará en la sesión y los usuarios serán redirigidos de vuelta a su página anterior (según lo gestiona el middleware de Localization).
Para probarlo, ve a localhost/language/it (suponiendo que la cookie de sesión esté activa en tu navegador) y deberías ver el contenido traducido. Puedes navegar por el sitio o actualizar la página, y el idioma elegido permanecerá activo.
Implementación del selector de idioma
Ahora, debemos proporcionar al usuario una opción en la que pueda hacer clic para cambiar el conmutador de idioma Laravel web en lugar de exigirle que introduzca manualmente los códigos de configuración regional en la URL. Para lograrlo, crea un conmutador de idioma sencillo. Añade un archivo nuevo en resources/views/partials/language_switcher.blade.php e inserta el siguiente código.
Para incluir el conmutador de idioma recién creado en la vista «welcome», simplemente añade la siguiente línea a tu archivo welcome.blade.php donde quieras que aparezca el conmutador.
Abra el archivo app/Providers/AppServiceProvider.php y añada el siguiente código en el método boot() para compartir la configuración regional actual con todas las vistas cuando se utilice el selector de idioma
Funciones de traducción avanzadas en Laravel PHP
En este análisis, abordaremos otros componentes de localización, concretamente la fecha, el número y la moneda. Estos son los pasos.
Fechas localizadas en Laravel