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
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
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.
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',
];
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>
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]) }}
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.
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...
];
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',
];
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');
}
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.
Jorge García
Fullstack developer