Laravel es una potente herramienta que permite a los desarrolladores crear sitios web multilingües. Al implementar la localización web en tus proyectos de Laravel , puedes ofrecer una experiencia de usuario personalizada a visitantes de diferentes orígenes lingüísticos, ampliando así tu alcance y mejorando la participación de los usuarios.
¡Te guiaremos a través de la implementación de la localización en tu aplicación Laravel y te presentaremos una herramienta que puede simplificar y mejorar tus esfuerzos de localización!
¿Por qué deberías localizar el sitio web de Laravel ?

Aquí tienes algunas razones importantes por las que deberías localizar tu sitio web Laravel .
- Llega a una audiencia global: Al localizar tu sitio web Laravel , puedes ampliar el alcance de tu aplicación a una audiencia internacional. Esto permite que usuarios de diferentes países y orígenes lingüísticos comprendan e interactúen con tu contenido.
- Mejora la experiencia del usuario: La localización permite a los usuarios interactuar con la aplicación en su idioma nativo, lo que mejora significativamente la experiencia del usuario. Esto puede aumentar las tasas de interacción, reducir las tasas de rebote y aumentar las conversiones.
- Ventaja competitiva: En un mercado global competitivo, ofrecer aplicaciones en varios idiomas puede proporcionar una ventaja significativa sobre los competidores. Demuestra su compromiso con los mercados internacionales y puede ayudarle a entrar en nuevos mercados de forma más eficaz.
- Mejora el SEO: Los sitios web bien localizados tienden a posicionarse mejor en los motores de búsqueda para búsquedas en un idioma concreto. Esto puede aumentar el tráfico de tu blog y la visibilidad online en diversos mercados con traducción multilingüe.
Requisitos para una localización multilingüe de Laravel

Hay algunos requisitos y pasos a tener en cuenta al implementar la localización multilingüe en Laravel.
- Para obtener las últimas funciones de localización, asegúrate de usar la última versión de Laravel (por ejemplo, la versión 10.x).
- Un conocimiento básico de PHP y del framework Laravel será útil en el proceso de implementación.
- Configura un entorno de desarrollo local o un servidor que sea compatible con Laravel, incluido un servidor web y una base de datos.
- Determina los idiomas que tu aplicación admitirá desde el principio.
Traducciones sencillas de Laravel

Después de comprender qué requisitos deben cumplirse antes de traducir una aplicación o web Laravel , proporcionaremos algunos pasos para traducir Laravel de forma sencilla.
Para hacer esto, abre el archivo de vista que deseas localizar, por ejemplo, resources/views/welcome.blade.php. Luego, reemplaza la etiqueta body con el siguiente código.
Welcome to Linguise website!
Como puedes ver, el texto anterior está escrito actualmente directamente en el código. Esto es menos eficiente y dificulta traducir sitios web a diferentes idiomas (internacionalización).
Vamos a hacer que el texto anterior sea más flexible para que pueda adaptarse fácilmente a diferentes idiomas. Laravel proporciona una característica muy útil para esto: el sistema de localización. Como primer paso, reemplace el texto existente con el siguiente código.
{{ __('Welcome to Linguise website!') }}
Laravel mostrará el texto anterior por defecto y buscará la traducción si el usuario selecciona un idioma distinto del inglés. En ese caso, el inglés se utilizará como idioma predeterminado de la aplicación.
Configurar locales en una web multilingüe de Laravel

Pero, ¿cómo determina Laravel el idioma actual o sabe qué idiomas están disponibles en la aplicación? Comprueba la configuración regional en el archivo config/app.php. Abre este archivo y busca las dos claves siguientes.
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
La explicación anterior a las claves debería ser clara. En resumen, la clave locale contiene la configuración regional predeterminada de tu aplicación (si no se especifica otra configuración regional en el código). La fallback_locale se activa si se solicita una configuración regional inexistente en tu aplicación.
Ahora, añadamos una nueva clave a este archivo para proporcionar una lista de todos los idiomas admitidos.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
En este punto, hemos probado Laravel web para admitir tres idiomas, a saber, inglés, italiano y francés.
Descripción general de los archivos de traducción de Laravel

En Laravel, como en muchos otros frameworks, las traducciones para diferentes idiomas se almacenan en archivos separados. Se utilizan dos métodos para organizar estos archivos de traducción.
El método anterior almacena los archivos en la siguiente estructura: resources/lang/{en,fr,it}/{myfile.php}. El método más reciente utiliza archivos JSON, como resources/lang/{fr.json, it.json}. Este artículo se centrará en el método más reciente, aunque los principios son similares para el método anterior, salvo por las diferencias en cómo se nombran y se accede a las claves de traducción.
Para idiomas con variaciones regionales, debe nombrar los directorios o archivos de idioma según el estándar ISO 15897. Por ejemplo, el inglés británico se nombraría en_GB en lugar de en-gb.
información general
En Laravel, como ocurre con muchos frameworks, las traducciones para diferentes idiomas se almacenan en archivos separados. Existen dos métodos principales para organizar los archivos de traducción de Laravel .
- El enfoque heredado implica almacenar archivos en la ruta: resources/lang/{en,fr,it}/{myfile.php}.
- El enfoque moderno utiliza los archivos resources/lang/{fr.json, it.json}.
Este artículo se centrará en el segundo método, aunque los principios son aplicables a ambos (con variaciones en cómo se nombran y se accede a las claves de traducción).
Para los idiomas que varían según la región, se recomienda nombrar los directorios/archivos de idioma según los estándares ISO 15897. Por ejemplo, el inglés británico se denotaría como en_GB en lugar de en-gb.
Crear archivos de traducción de Laravel
Una vez configurados los locales para nuestra aplicación, podemos proceder a traducir nuestro mensaje de bienvenida predeterminado.
Empecemos creando nuevos archivos de localización en formato JSON dentro del directorio resources/lang. Primero, crearemos un archivo resources/lang/it.json y lo rellenaremos con las traducciones adecuadas.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
A continuación, añade un archivo resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Como puedes observar, estamos haciendo referencia de forma consistente al mensaje predeterminado del archivo welcome.blade.php ({{ __(‘¡Bienvenido al sitio web de Linguise !’) }}). No es necesario crear un archivo en.json, ya que Laravel reconoce automáticamente que los mensajes predeterminados están en inglés.
Configurar el selector de idioma en una aplicación multilingüe de Laravel

Además, Laravel aún no está configurado para sobrescribir el idioma local, así que por ahora, gestionaremos la traducción directamente dentro de la ruta. Modifica la ruta de bienvenida predeterminada dentro del archivo routes/web.php así.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
En este caso, capturamos un parámetro GET de configuración regional opcional y establecemos la configuración regional actual en función de él (si la configuración regional solicitada es compatible).
Ahora puedes visitar tu sitio web e incluir cualquiera de los idiomas compatibles como primer segmento de la URL. Por ejemplo, al navegar a localhost/it o localhost/fr se mostrará el contenido localizado. Si no especificas una configuración regional o eliges una que no sea compatible, Laravel usará el inglés (en) de forma predeterminada.
Middleware de localización para Laravel
Incluir el idioma en cada URL podría no ser lo ideal y podría afectar el atractivo visual del sitio. Para solucionarlo, configuraremos un selector de idioma y utilizaremos la sesión del usuario para mostrar el contenido traducido. Puedes crear un nuevo middleware en el archivo app/Http/Middleware/Localization.php, o generarlo ejecutando el comando artisan make:middleware Localization.
Luego, añade el siguiente código dentro.
Este middleware indicará a Laravel que use la ubicación seleccionada por el usuario si esta opción está presente en la sesión.
Dado que necesitamos que la operación se ejecute en cada solicitud, agrégala a la pila de middleware predeterminada en app/Http/Kernel.php para el grupo de middleware web.
/**
* The application's route middleware groups.
*
* @var array>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, // <--- add this
],
Modificar las rutas
A continuación, define una ruta para cambiar el idioma en el archivo routes/web.php. Aquí usamos una ruta de cierre, pero puedes colocar el mismo código dentro de un controlador si lo prefieres.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Además, elimina el cambio de idioma que se había añadido previamente a la ruta de bienvenida predeterminada. Tu ruta raíz ahora debería verse así.
Route::get('/', function () {
return view('welcome');
});
Una vez hecho esto, el usuario solo puede cambiar el idioma activo visitando localhost/language/{locale}. La configuración regional seleccionada se guardará en la sesión y los usuarios serán redirigidos de vuelta a su página anterior (según lo gestiona el middleware de Localization).
Para probarlo, ve a localhost/language/it (suponiendo que la cookie de sesión esté activa en tu navegador) y deberías ver el contenido traducido. Puedes navegar por el sitio o actualizar la página, y el idioma elegido permanecerá activo.
Implementación del selector de idioma
Ahora, debemos proporcionar al usuario una opción en la que pueda hacer clic para cambiar el conmutador de idioma Laravel web en lugar de exigirle que introduzca manualmente los códigos de configuración regional en la URL. Para lograrlo, crea un conmutador de idioma sencillo. Añade un archivo nuevo en resources/views/partials/language_switcher.blade.php e inserta el siguiente código.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
Para incluir el conmutador de idioma recién creado en la vista «welcome», simplemente añade la siguiente línea a tu archivo welcome.blade.php donde quieras que aparezca el conmutador.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Abra el archivo app/Providers/AppServiceProvider.php y añada el siguiente código en el método boot() para compartir la configuración regional actual con todas las vistas cuando se utilice el selector de idioma
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
Funciones de traducción avanzadas en Laravel PHP

En este análisis, abordaremos otros componentes de localización, concretamente la fecha, el número y la moneda. Estos son los pasos.
Fechas localizadas en Laravel
El manejo de fechas y horas es crucial en el proceso de localización. Laravel utiliza Carbon para gestionar fechas y horas. Así es como puedes usar Carbon para mostrar una fecha localizada.
settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
Este código configura la configuración regional de Carbon en función de la configuración regional actual de la aplicación y formatea la fecha en consecuencia.
Para mostrar la fecha localizada en una vista:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
{{ $date_message }}
Formateo de números y monedas
Los distintos países tienen diversas formas de formatear los números. Por ejemplo.
- Francia → 123 123,12
- Alemania → 123.123,12
- Japón → 123.123
Para adaptarse a estas variaciones en su aplicación Laravel , puede utilizar NumberFormatter.
También puedes escribir los números con letras en un idioma específico.
Aquí están las monedas. Para la configuración regional francesa (`fr`), la moneda se mostrará en euros (€), mientras que para la configuración regional estadounidense (`en_US`), se mostrará en dólares estadounidenses ($).
Solución alternativa de localización de Laravel con Linguise

Después de comprender los pasos de la localización de Laravel tal como se describe en el artículo, este proceso implica muchos pasos que requieren que los usuarios comprendan el código del programa Laravel en profundidad.
Esto ciertamente puede dificultar a los usuarios novatos que quieren localizar sus aplicaciones. Por lo tanto, se necesita una solución más innovadora que sea capaz de traducir rápidamente, admita la localización y requiera solo unos pocos pasos simples para implementarla.
Una solución prometedora es Linguise. Linguise ofrece un enfoque más fácil y eficiente para la localización de Laravel sin necesidad de conocimientos profundos de programación. Las características clave de Linguise incluyen.
- Fácil integración con Laravel
- Personaliza el selector de idioma sin necesidad de programar
- Traducción de imágenes
- Editor en vivo para personalizar las traducciones al contexto local
- Traducción dinámica para contenido generado dinámicamente
- Optimización SEO para versiones multilingües
Los pasos para instalar Linguise en sitios web de Laravel también se pueden realizar fácilmente. Aquí tienes una breve explicación.
- Cree una cuenta Linguise (utilice la prueba gratuita de 30 días sin coste)
- Registre su dominio web Laravel e introduzca alguna información. Obtendrá una clave API.
- Sube y conecta el script de traducción Linguise a la carpeta Laravel que obtuviste.
- Configurar las URL de idioma en el archivo htaccess.
- Inserta el script del selector de idioma en el head de tu HTML.
- Personaliza el selector de idioma según sea necesario
- El selector de idioma aparecerá en la web Laravel y el contenido se podrá traducir automáticamente.
¿Cómo? Con Linguise, solo necesitas registrarte y activarlo, y el selector de idioma aparecerá. Después de eso, eres libre de localizar, por ejemplo, a través del editor en vivo, traducir medios, imágenes, etc.
Conclusión
La localización de Laravel es una característica potente que permite a los desarrolladores crear sitios web y aplicaciones multilingües. Como hemos visto, el proceso de localización integrado de Laravel implica múltiples pasos y requiere un buen conocimiento del framework. Puede resultar complicado para principiantes o para quienes buscan una solución más rápida.
Herramientas como Linguise ofrecen una alternativa innovadora para quienes buscan un enfoque más simplificado. Estas soluciones ofrecen capacidades de traducción rápida, integración sencilla y funciones fáciles de usar, como selectores de idioma personalizables y traducción de imágenes. Ahora, crea tu cuenta de Linguise y disfruta de nuestra función para localizar tu Laravel!



