Curso Autenticacion

En esta lección del curso de Métodos de Autenticación con Laravel aprenderás cómo traducir los textos y mensajes de los módulos de registro, autenticación y recuperación de contraseñas al idioma español, además veremos un repaso de cómo funciona el componente de traducciones incluido en el framework Laravel.

Repositorio

Ver el código de esta lección en GitHub

Notas

Por Pastor Ramos

Utilizaremos el repositorioCaouecs/Laravel-langde GitHub, con la finalidad de traducir al idioma español los textos y mensajes que aparecen en los módulos de registro, autenticación y recuperación de contraseñas que vimos en la lección anterior.

Lo podemos obtener de varias formas: clonar el repositorio, descargar los archivos o utilizando Composer, éste último es el método que usaremos para esta lección.

Desde el directorio principal del proyecto styde-auth, ejecutamos el siguiente comando para descargar todos los archivos de los distintos idiomas a la carpeta vendor/caouecs/laravel-lang

composer require caouecs/laravel-lang:~3.0

Una vez finalizada la descarga, nos dirigimos al editor para copiar las carpetas de los idiomas que queramos, en el directorio resources/lang de nuestra aplicación de Laravel. Acá es importante copiar el archivo json/es.json y la carpeta completa src/es.

Para que Laravel tome los cambios en el navegador, debemos cambiar la configuración del idioma que se encuentra en el archivo config/app.php. Cambiamos la línea que indica el idioma de inglés por español del siguiente modo:

'locale' => 'es'

Ahora podemos recargar la página y navegar por todas las opciones de los módulos de registro, autenticación y recuperación de contraseñas para verificar cómo han cambiado el texto y los mensajes.

Para seguir el ejemplo para recuperación de contraseña de esta lección, en lugar del archivo log usaremos Mailtrap. Aprende cómo enviar emails de prueba con Mailtrap.io en Laravel.

¿Cómo colocar las traducciones?

Como has podido notar, Laravel tiene dos formas para colocar las traducciones: una es utilizando un archivo .json como por ejemplo resources/lang/es.json y la otra es una serie de archivos .php como los que se encuentran en la carpeta que copiamos resources/lang/es/.

Cambiando las etiquetas

Si por ejemplo nos vamos a la vista login.blade.php, podemos ver que la etiqueta Password se imprime de la siguiente manera:

{{ __('Password') }}

Los dos guiones bajos seguidos, realmente representan el nombre de una función que básicamente lo que hace es que retorna el llamado al método getFromJson del traductor de Laravel que se toma del contenedor de inyección de dependencias. Como argumento pasamos la llave que queremos traducir y si la traducción se encuentra en el archivo de .json del local que tengamos configurado, entonces devuelve el valor apropiado.

Observa el valor de la llave Password en el archivo es.json, que es la etiqueta del campo para introducir la contraseña que vemos en la pantalla de inicio de sesión.

"Password": "Contraseña"

Cambiando los mensajes de error

Si por ejemplo intentamos conectarnos con datos que no sean válidos, nuestra aplicación debe regresar un mensaje de error apropiado. Pero ahora el mensaje de error se encuentra en la serie de archivos .php, en este caso en lang/es/auth.php.

Cambiando los nombres de los campos en los mensajes de error

Los nombres de atributos que se usan en los mensajes de error no están dentro del archivo .json sino que están en el archivo lang/es/validation.php en la sección final:

 'attributes' => [
        'name'                  => 'nombre',
        'username'              => 'usuario',
        'email'                 => 'correo electrónico',
        'first_name'            => 'nombre',
 ]

Hemos tomado sólo un pequeño extracto donde aparece el campo email. Así que si quieres que el mensaje de error diga «El e-mail ya ha sido registrado.», entonces debes cambiar el valor de la llave apropiada. Por ejemplo:

 'email' => 'e-mail'

Directiva para imprimir las traducciones

La directiva @lang también permite trabajar con estas traducciones. Así que podemos reemplazar {{ __('E-mail Address') }} como aparece en la siguiente instrucción:

@lang('E-Mail Address')

Las traducciones soportan otras características como el paso de parámetros dinámicos, pluralización y más como explicamos en Traducciones basadas en JSON en Laravel 5.4.

Material Relacionado

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Registro, autenticación y recuperación de contraseñas en 5 minutos con Laravel Lección siguiente Desactivar y personalizar la URL de registro en Laravel