Laravel la localización es una herramienta poderosa que permite a los desarrolladores crear sitios web multilingües. Al implementar localización web en sus proyectos Laravel, puede proporcionar una experiencia de usuario personalizada para visitantes de diferentes orígenes lingüísticos, lo que en última instancia amplía su alcance y mejora la interacción del usuario.
Le guiaremos a través de la implementación de la localización en su aplicación Laravel y le presentaremos una herramienta que puede simplificar y mejorar sus esfuerzos de localización
¿Por qué debería localizar el sitio web Laravel ?

Aquí hay algunas razones importantes por las que debe localizar su sitio web Laravel .
- Alcance una audiencia global: Al localizar su sitio web de Laravel, puede ampliar el alcance de su aplicación a una audiencia internacional. Esto permite a los usuarios de diferentes países y orígenes lingüísticos comprender e interactuar con su contenido.
- Mejora la experiencia del usuario:
- Ventaja competitiva: En un mercado global competitivo, ofrecer aplicaciones en varios idiomas puede proporcionar una ventaja significativa sobre los competidores. Muestra su compromiso con los mercados internacionales y puede ayudarlo a ingresar a nuevos mercados de manera más efectiva.
- Mejora el SEO: Los sitios web bien localizados tienden a posicionarse mejor en los motores de búsqueda para búsquedas en un idioma en particular. Esto puede aumentar el tráfico de su blog y la visibilidad en línea en varios mercados con traducción multilingüe.
Requisitos para una localización multilingüe Laravel

Hay algunos requisitos y pasos a considerar al implementar la localización multilingüe en Laravel.
- Para obtener las últimas características de localización, asegúrese de estar utilizando la última versión de Laravel (por ejemplo, versión 10.x).
- Un conocimiento básico de PHP y el framework Laravel será útil en el proceso de implementación.
- Configure un entorno de desarrollo local o un servidor que admita Laravel, incluido un servidor web y una base de datos.
- Determine los idiomas que su aplicación soportará desde el principio.
Traducciones simples de Laravel

Después de entender qué requisitos deben cumplirse antes de traducir una aplicación o web Laravel , proporcionaremos algunos pasos para traducir Laravel de manera sencilla.
Para hacer esto, abra el archivo de vista que desea localizar, por ejemplo, resources/views/welcome.blade.php. Luego, reemplace la etiqueta body con el siguiente código.
Welcome to Linguise website!
Como puede ver, el texto anterior está escrito 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 de forma predeterminada y buscará la traducción si el usuario selecciona un idioma distinto del inglés. En este caso, el inglés se utilizará como idioma predeterminado de la aplicación.
Configuración de locales en una web multilingüe 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. Abra este archivo y busque las siguientes dos claves.
/*
|--------------------------------------------------------------------------
| 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 debe ser clara. En resumen, la clave de configuración regional contiene la configuración regional predeterminada para su aplicación (si no se especifica otra configuración regional en el código). La configuración regional de respaldo se activa si se solicita una configuración regional inexistente en su aplicación.
Ahora, agreguemos 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 intentado que la web Laravel sea compatible con tres idiomas, a saber, inglés, italiano y francés.
Laravel Visión general de los archivos de traducción

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 archivos en la siguiente estructura: resources/lang/{en,fr,it}/{myfile.php}. El método más nuevo utiliza archivos JSON, como resources/lang/{fr.json, it.json}. Este artículo se centrará en el método más nuevo, aunque los principios son similares para el método anterior, aparte de las diferencias en cómo se nombran y acceden las claves de traducción.
Para idiomas con variaciones regionales, debe nombrar los directorios o archivos de idioma según la norma ISO 15897. Por ejemplo, el inglés británico se llamaría en_GB en lugar de en-gb.
Información general
En Laravel, como con muchos frameworks, las traducciones para diferentes idiomas se almacenan en archivos separados. Hay dos métodos principales para organizar los archivos de traducción de Laravel .
- El enfoque heredado implica almacenar archivos bajo la ruta: resources/lang/{en,fr,it}/{myfile.php}.
- El enfoque moderno utiliza archivos resources/lang/{fr.json, it.json}.
Este artículo se concentrará en el segundo método, aunque los principios son aplicables a ambos (con variaciones en cómo se nombran y acceden 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 las normas ISO 15897. Por ejemplo, el inglés británico se denotaría como en_GB en lugar de en-gb.
Creación de archivos de traducción de Laravel
Habiendo configurado las configuraciones regionales para nuestra aplicación, podemos proceder a traducir nuestro mensaje de bienvenida predeterminado.
Comencemos creando nuevos archivos de localización en formato JSON dentro del directorio resources/lang. Primero, crearemos un archivo resources/lang/it.json y lo poblaremos con las traducciones adecuadas.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
A continuación, agregue un archivo resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Como puede observar, estamos haciendo referencia constantemente al mensaje predeterminado del archivo welcome.blade.php ({{ __(‘Bienvenido al sitio web de Linguise !’) }}). No hay necesidad de crear un archivo en.json, ya que Laravel reconoce automáticamente que los mensajes predeterminados están en inglés.
Configuración del selector de idioma en una aplicación multilingüe Laravel

Además, Laravel aún no está configurado para anular el idioma local, por lo que por ahora, manejaremos la traducción directamente dentro de la ruta. Modifique la ruta de bienvenida predeterminada dentro del archivo routes/web.php como se muestra aquí.
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, estamos capturando un parámetro GET de configuración regional opcional y estableciendo la configuración regional actual en función de él (si la configuración regional solicitada es compatible).
Ahora, puede visitar su sitio web e incluir cualquiera de los idiomas compatibles como el primer segmento en la URL. Por ejemplo, navegar a localhost/it o localhost/fr mostrará el contenido localizado. Si no especifica una configuración regional o elige una que no sea compatible, Laravel utilizará el inglés (en) por defecto.
Middleware de localización para Laravel
Incluir el idioma en cada URL puede no ser ideal y podría alterar el atractivo visual del sitio. Para abordar esto, configuraremos un conmutador de idioma y utilizaremos la sesión del usuario para mostrar el contenido traducido. Puede crear un nuevo middleware en el archivo app/Http/Middleware/Localization.php, o generarlo ejecutando el comando artisan make:middleware Localization.
Luego, agregue el siguiente código dentro.
Este middleware dirigirá a Laravel para usar 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
],
Modificando rutas
A continuación, defina una ruta para cambiar la configuración regional en el archivo routes/web.php. Estamos utilizando una ruta de cierre aquí, pero puede colocar el mismo código dentro de un controlador si lo prefiere.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Además, elimine el cambio de configuración regional que se agregó previamente a la ruta de bienvenida predeterminada. Su 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}. El idioma seleccionado se guardará en la sesión y los usuarios serán redirigidos de vuelta a su página anterior (como lo maneja el middleware de Localización).
Para probarlo, vaya a localhost/language/it (asumiendo que la cookie de sesión está activa en su navegador), y debería ver el contenido traducido. Puede navegar por el sitio o actualizar la página, y el idioma elegido permanecerá en efecto.
Implementación del conmutador de idioma
Ahora, debemos proporcionar al usuario una opción en la que pueda hacer clic para cambiar el selector de idioma Laravel web en lugar de exigirles que ingresen códigos de configuración regional en la URL manualmente. Para lograr esto, cree un selector de idioma simple. Agregue un nuevo archivo en resources/views/partials/language_switcher.blade.php e inserte 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 selector de idioma recién creado en la vista “welcome”, simplemente agregue la siguiente línea a su archivo welcome.blade.php donde le gustaría que apareciera el selector.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Abra el archivo app/Providers/AppServiceProvider.php y agregue el siguiente código en el método boot() para compartir la configuración regional actual con todas las vistas cuando se utilice el conmutador 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 avanzadas de traducción en PHP de Laravel

En esta discusión, manejaremos otros componentes de localización, es decir, fecha, número y moneda. Aquí están los pasos.
Fechas localizadas en Laravel
Manejar fechas y horas es crucial en el proceso de localización. Laravel utiliza Carbon para gestionar fechas y horas. Aquí está cómo puede utilizar 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
]);
});
This code sets the Carbon locale based on the application’s current locale and formats the date accordingly.
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
Diferentes países tienen varias formas de dar formato a los números. Por ejemplo.
- Francia → 123 123,12
- Alemania → 123.123,12
- Japón → 123,123
Para acomodar estas variaciones en su aplicación Laravel , puede utilizar NumberFormatter.
También puedes deletrear números 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 de EE. UU. (`en_US`), se mostrará en dólares estadounidenses ($).
Solución alternativa de localización Laravel con Linguise

Después de comprender los pasos de la localización de Laravel 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 desean 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 sencillos pasos para implementarse.
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 de codificación en profundidad. Las características clave de Linguise incluyen.
- Fácil integración con Laravel
- Personalice el selector de idioma sin codificación
- 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í hay una breve explicación.
- Crea una cuenta Linguise (utiliza el período de prueba gratuito de 30 días de forma gratuita)
- Registra tu dominio web Laravel e ingresa alguna información. Obtendrás una clave API.
- Carga y conecta el script de traducción Linguise a la carpeta Laravel que obtuviste.
- Configurar las URL de idioma en el archivo htaccess.
- Inserte el script del selector de idioma en la cabecera de su HTML.
- Personalice el selector de idioma según sea necesario
- El selector de idioma aparecerá en la web Laravel , y el contenido se puede traducir automáticamente.
¿Cómo? Con Linguise, solo necesita registrarse y activar, y el selector de idioma aparecerá. Después de eso, puede localizar libremente, 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 poderosa 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 una buena comprensión del marco. Puede ser un desafío para los principiantes o aquellos que buscan una solución más rápida.
Herramientas como Linguise ofrecen una alternativa innovadora para aquellos que buscan un enfoque más optimizado. Estas soluciones ofrecen capacidades de traducción rápida, integración sencilla y características fáciles de usar, como conmutadores 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



