Localizaciones y Traducciones en Laravel (español e ingles)

Con las funciones que ofrece Laravel de manera nativa para el manejo de la localización, es decir, el lugar donde está siendo consumida la aplicación y con esto, poder ofrecer otro servicio, como lo es el de la traducción de textos de manera automática en base a la localización o por selección del usuario. En este apartado, veremos implementar ambos temas.

Cadenas de textos para la traducción

Laravel proporciona dos formas de gestionar cadenas de traducción que son las empleadas para mostrar los textos traducidos de nuestra aplicación en diferentes idiomas; en ambos casos, debemos de crear una carpeta para almacenar los mismos:

/lang

En donde creamos nuestro archivos de traducción ya sean PHP:

/lang
    /en
        messages.php
    /es
        messages.php

O en JSONs:

/lang
    en.json
    es.json

En el libro, usaremos el formato de los archivos en PHP; puedes crear tantos como quieras y modularizar los mensajes según nuestras preferencias. 

Finalmente, somos nosotros los que debemos de definir las cadenas traducidas y personalizar las mismas cambiando el texto predefinido por la aplicación y creando las propias; mediante la pareja de clave/valor, de indica la clave y la traducción; por ejemplo:

return [
    'welcome' => 'Welcome to our application!',
];

Publicar los archivos de idioma

De forma predeterminada, al momento de crear un proyecto en Laravel no incluye la carpeta de lang; para generarla, tenemos el siguiente comando de artisan:

$ php artisan lang:publish 

El comando lang:publish creará el directorio lang en su aplicación y publicará el conjunto predeterminado de archivos de idioma utilizados por Laravel:

 

Carpeta para las traducciones

Crear las cadenas de traducción

Las cadenas de texto para las traducciones se almacenan en archivos en la carpeta de lang, en estos archivos, se almacenan textos que son internos a Laravel y provistos por nosotros:

/lang
    /en
        messages.php
    /es
        messages.php

Creemos los siguientes:

lang/en/messages.php

<?php
 
return [
    'welcome' => 'Welcome to our application!',
];

lang/es/messages.php

<?php
 
return [
    'welcome' => 'Bienvenido a nuestra aplicación!',
];

Y los empleamos a lo largo de la aplicación:

echo __('messages.welcome')

Como puedes apreciar, debemos de colocar el nombre del archivo y la clave como clave para la función de __() la cual devuelve el texto traducido; este esquema, lo podemos emplear tanto en el controlador y similar como en la vista.

- Andrés Cruz

In english

Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos Curso y libro Laravel 11 con Tailwind Vue 3, introducción a Jetstream Livewire e Inerta desde cero - 2024.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.