Laravel – Manejar varios idiomas

En este post te mostraré cómo puedes mostrar tus sitios, aplicaciones o sistemas en Laravel en distintos idiomas usando lo que ya ofrece el propio Framework. Es decir, mostrar tu aplicación web de Laravel en inglés y español, por ejemplo.

Varios idiomas en aplicación de Laravel con PHP

Te voy a mostrar un ejemplo simple.

Ubicación de los archivos de traducción

Laravel propone una estructura de directorios muy eficiente. Hay que colocar un directorio cuyo nombre sea la clave del idioma dentro de resources/lang.

Si por ejemplo quisieras agregar el idioma español, crearías un directorio llamado es.

Ahora, dentro de cada directorio puedes tener varios archivos que a su vez deben tener un arreglo dentro, con las traducciones. En el ejemplo se apreciará de mejor manera.

Definiendo un archivo de mensajes en inglés

Vamos a suponer que el idioma por defecto será inglés. Dentro de resources/lang/en he creado un archivo llamado messages.php cuyo contenido es:

Cuando el idioma sea inglés, estos mensajes serán mostrados. Fíjate en que es un arreglo en donde se coloca la clave (cómo invocamos al mensaje) y el valor, que será el mensaje mostrado al usuario.

Traducción a español

Ahora, dentro del directorio resources/lang/es, agregué el mismo archivo pero traducido. Queda así:

Fíjate en que las claves del arreglo siguen siendo las mismas, solo cambia el valor que ya es la traducción al español.

Mostrando mensajes traducidos

Dentro de nuestras vistas o plantillas podemos mostrar el mensaje que automáticamente será traducido dependiendo del idioma seleccionado. Para ello recomiendo usar la función __ (sí, dos guiones bajos) que recibe la clave del mensaje que se quiere mostrar.

Nota: en este caso, mi archivo de traducciones se llama messages.php (por eso accedo a messages) y después al nombre de la clave.

Si, por ejemplo, mi archivo se llamara titulos.php entonces accedería con __("titulos.categories")

Esto también funciona dentro de los controladores. Por ejemplo:

En este caso voy a redireccionar con un mensaje de las traducciones. No confundir la clave “message” del método with que tiene que ver con establecer un mensaje dentro de la sesión para mostrarlo después.

Básicamente __ devuelve un string traducido que puedes o enviar o mostrar en blade.

Cambiando idioma de la aplicación

Para cambiar el idioma de la app de Laravel podemos hacer varias cosas. La primera de ella es ir a config/app.php, buscar la línea que indica locale y cambiarla al idioma preferido.

Otra opción es cambiar el idioma de la aplicación en Laravel en tiempo de ejecución. Para ello podemos invocar a App::setLocale() pasándole la clave del idioma. Por ejemplo, dentro de web.php (en las rutas) podríamos hacer lo siguiente:

Esto del cambio ya queda a tu criterio. Puedes hacerlo con una acción del usuario, detectarlo automáticamente, tomarlo de la base de datos, etcétera.

Conclusión

Lo que te he mostrado es apenas una sencilla introducción, si quieres profundizar, te recomiendo visitar la documentación de Laravel.

A partir de esto puedes crear tus aplicaciones y mostrar los mensajes traducidos para que, si es necesario agregar otro idioma más tarde, solo agregues las traducciones y no tengas que cambiar toda tu aplicación de Laravel.

En mi blog tengo más contenido sobre Laravel.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario