En este videotutorial aprenderemos a traducir los mensajes de error incluidos en el sistema de validación de Laravel, además veremos otra forma de mostrar los mensajes de error en nuestras vistas de Blade.

Mira el código en GitHub: actual, resultado, comparación.

Publicar los mensajes en Laravel 10 o superior

Para publicar los mensajes de error debemos ejecutar el siguiente comando en la terminal:

php artisan lang:publish

Este comando creará el directorio lang dentro de nuestra aplicación.

Versiones anteriores del framework Laravel incluyen esta carpeta por defecto dentro del directorio resources

Agregar las traducciones al español en Laravel 10

Para crear una traducción de los mensajes de error simplemente debemos crear un directorio «es» (para español en nuestro caso) dentro del directorio lang

Cada una de las llaves dentro de los archivos de idioma corresponden al nombre de una regla de validación y cada valor es el mensaje de error que se va a mostrar:

<?php

return [

    'accepted' => 'El campo :attribute debe ser aceptado.'

    // Otras reglas de validación y valores aqui debajo.

];

El valor de :attribute será reemplazado por el nombre del campo cuando ocurra un error.

Puedes usar el siguiente enlace para ver y descargar todos los mensajes y traducciones al español que usé en esta lección.

También existen componentes como Laravel-Lang que te permiten traducir los errores de validación.

Para indicarle a Laravel que queremos que el idioma de nuestra aplicación sea español debemos dirigirnos a config/app.php y cambiar el valor de la propiedad locale:

<?php

return [
    // Otros valores de configuración aqui

    'locale' => 'es'

    // Otros valores de configuración aqui
];

Para indicar que también queremos traducir los nombres de los campos debemos agregar estos al arreglo attributes dentro de nuestro archivo de idioma (lang/es/validation.php):

<?php

return [
    // Otras llaves y valores aqui

    'attributes' => [
        'title' => 'título',
        'content' => 'contenido'
    ],
];

Mostras mensajes traducidos en Blade

Para usar estas traducciones directamente en las plantilla de Blade debemos hacer uso de la directiva @lang:

<label for="title" class="field-label">@lang('validation.attributes.title')</label>

Mostrar mensajes de validación en nuestra vista con la variable $errors

Para validar si tenemos un error en nuestra vista podemos llamar al método any():

@if ($errors->any())
    <h4>El formulario contiene errores</h4>
@endif

Podemos iterar todos los errores de validación llamando al método all():

<ul>
    @foreach ($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
</ul>

La variable $errors siempre está presente en la vista.

Esta variable es una instancia de la clase Illuminate\Support\MessageBag.

También podemos usar:  $errors->has('campo') para ver si un campo tiene errores de validación o $errors->first('campo') para obtener el primer mensaje de error de un campo, por ejemplo:

<!-- resources/views/add-note.blade.php -->

<input type="text" name="title" id="title" class="field-input {{ $errors->has('title') ? 'field-error' : '' }}">
@if ($errors->has('title'))
    <span class="error-message">{{ $errors->first('title') }}</span>
@endif
Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

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

Lección anterior Validación de datos con Laravel 10 o superior Lección siguiente Controladores en Laravel 10 o superior