Volver a la página principal
domingo 7 julio 2024
10

Cómo gestionar las traducciones en Laravel

1. Configuración Inicial

Laravel viene con soporte de localización listo para usar. Para comenzar, asegúrate de tener un proyecto Laravel configurado. Si no lo tienes, puedes crear uno nuevo utilizando Composer:

composer create-project --prefer-dist laravel/laravel nombre-proyecto

Configuración del Idioma Predeterminado

Abre el archivo config/app.php y establece el valor de locale al idioma predeterminado de tu aplicación:

'locale' => 'es', // Configura el idioma predeterminado, por ejemplo, español

2. Estructura de Archivos de Traducción

Las traducciones en Laravel se gestionan a través de archivos ubicados en el directorio resources/lang. Por defecto, Laravel viene con un directorio en para inglés. Puedes crear directorios adicionales para otros idiomas, como es para español.

Crear Archivos de Traducción

Cada idioma tiene su propio directorio que contiene archivos de traducción. Por ejemplo, para español (es), crea un directorio resources/lang/es y dentro de él, crea archivos de traducción como messages.php:

<?php

return [
    'welcome' => 'Bienvenido a nuestra aplicación',
    'goodbye' => 'Adiós y gracias por visitarnos',
];

3. Usar las Traducciones en las Vistas

Puedes utilizar las traducciones en tus vistas utilizando la función __ (doble guión bajo). Por ejemplo, en una vista Blade:

<!DOCTYPE html>
<html>
<head>
    <title>@lang('messages.welcome')</title>
</head>
<body>
    <h1>{{ __('messages.welcome') }}</h1>
    <p>{{ __('messages.goodbye') }}</p>
</body>
</html>

4. Traducciones de Plurales

Laravel también soporta la traducción de plurales. Puedes definir traducciones plurales en tus archivos de traducción usando la sintaxis | para separar las formas singular y plural:

<?php

return [
    'apples' => '{0} No hay manzanas|{1} Hay una manzana|[2,*] Hay :count manzanas',
];

Para utilizar estas traducciones en tus vistas o controladores, usa la función trans_choice:

{{ trans_choice('messages.apples', 0) }}
{{ trans_choice('messages.apples', 1) }}
{{ trans_choice('messages.apples', 10, ['count' => 10]) }}

5. Cambio Dinámico de Idioma

Puedes cambiar el idioma de tu aplicación dinámicamente utilizando el método App::setLocale:

use Illuminate\Support\Facades\App;

Route::get('set-locale/{locale}', function ($locale) {
    App::setLocale($locale);

    return redirect()->back();
});

Este enfoque es útil para crear enlaces o botones que permitan a los usuarios cambiar el idioma de la aplicación.

6. Validaciones Personalizadas

Laravel permite personalizar los mensajes de validación por idioma. Crea un archivo validation.php dentro del directorio de idioma (por ejemplo, resources/lang/es/validation.php) y define tus mensajes de validación personalizados:

<?php

return [
    'required' => 'El campo :attribute es obligatorio.',
    'email' => 'El campo :attribute debe ser una dirección de correo válida.',
    // Otros mensajes de validación...
];

7. Traducción de las Rutas

Laravel 9 introdujo la capacidad de traducir rutas. Puedes definir rutas traducibles en tus archivos de rutas:

Route::get(Lang::get('routes.welcome'), function () {
    return view('welcome');
});

Y en tu archivo de traducción (por ejemplo, resources/lang/es/routes.php):

<?php

return [
    'welcome' => 'bienvenida',
];

8. Testing de Traducciones

Para asegurar que todas las traducciones están correctamente configuradas, puedes crear pruebas automatizadas. Laravel facilita la creación de pruebas con PHPUnit o Pest.

Ejemplo de prueba con PHPUnit:

public function test_spanish_translations()
{
    App::setLocale('es');

    $this->get('/welcome')
         ->assertSee('Bienvenido a nuestra aplicación');
}

Conclusión

Laravel facilita enormemente la gestión de traducciones y localización en tu aplicación. Desde configuraciones básicas hasta traducciones plurales y validaciones personalizadas, el framework proporciona todas las herramientas necesarias para crear una experiencia multilingüe robusta. Siguiendo los pasos descritos en este artículo, podrás configurar y gestionar eficientemente las traducciones en tu proyecto Laravel.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer