Laravel es una poderosa herramienta que permite a los desarrolladores crear sitios web multilingües. Al implementar la localización web en sus Laravel , puede brindar una experiencia de usuario personalizada para visitantes de diferentes orígenes lingüísticos, lo que en última instancia ampliará su alcance y mejorará la participación del usuario.
¡Lo 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 debería localizar su sitio web Laravel .
- Llegue a una audiencia global: al localizar su 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: 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 participació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 la competencia. Muestra su compromiso con los mercados internacionales y puede ayudarle a ingresar a nuevos mercados de manera más efectiva.
- Mejora el SEO: los sitios web bien localizados tienden a tener una mejor clasificación 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 funciones de localización, asegúrese de estar utilizando la última versión de Laravel (por ejemplo, la versión 10.x).
- Un conocimiento básico de PHP y el marco Laravel será útil en el proceso de implementación.
- Configure un entorno o servidor de desarrollo local que admita Laravel , incluido un servidor web y una base de datos.
- Determine los idiomas que admitirá su aplicación desde el principio.
Traducciones simples Laravel
Después de comprender qué requisitos se deben cumplir antes de traducir una aplicación o web Laravel , le proporcionaremos algunos pasos para traducir Laravel de forma sencilla.
Para hacer esto, abra el archivo de vista que desea localizar, por ejemplo, resources/views/welcome.blade.php. Luego, reemplace la etiqueta del cuerpo con el siguiente código.
Welcome to Linguise website!
Como puede ver, el texto anterior actualmente está escrito directamente en el código. Esto es menos eficiente y dificulta la traducción de sitios web a diferentes idiomas (internacionalización).
Vamos a flexibilizar el texto anterior 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 que no sea el inglés. En este caso, se utilizará el inglés como idioma predeterminado de la aplicación.
Configurar 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 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 sobre 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 ninguna otra configuración regional en el código). Fallback_locale 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 todas las configuraciones regionales admitidas.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
En este punto, hemos probado la web Laravel para admitir tres idiomas, a saber, inglés, italiano y francés.
Descripción general de los archivos de traducción 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 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 se accede a las claves de traducción.
Para idiomas con variaciones regionales, debe nombrar los directorios o archivos de idiomas de acuerdo con el estándar ISO 15897. Por ejemplo, el inglés británico se denominaría en_GB en lugar de en-gb.
información general
En Laravel , como ocurre con muchos marcos, las traducciones para diferentes idiomas se almacenan en archivos separados. Existen dos métodos principales para organizar archivos de traducción Laravel .
- El enfoque heredado implica almacenar archivos en 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 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 idiomas de acuerdo con los estándares ISO 15897. Por ejemplo, el inglés británico se indicaría como en_GB en lugar de en-gb.
Creando archivos de traducción 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 rellenaremos con las traducciones apropiadas.
{
"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, constantemente hacemos referencia al mensaje predeterminado del archivo bienvenido.blade.php ({{ __('¡Bienvenido al sitio web Linguise !') }}). No es necesario 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 idiomas 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 route/web.php de esta manera.
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, capturaremos un parámetro GET de configuración regional opcional y configuraremos 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 admitidos como primer segmento de la URL. Por ejemplo, al navegar a localhost/it o localhost/fr se mostrará el contenido localizado. Si no especifica una configuración regional o elige una que no sea compatible, Laravel utilizará de forma predeterminada el inglés (en).
Middleware de localización para Laravel
Incluir la configuración regional en cada URL puede no ser lo ideal y podría alterar el atractivo visual del sitio. Para solucionar esto, configuraremos un selector de idiomas 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 artesanal make:middleware Localization.
Luego, agregue el siguiente código dentro.
Este middleware le indicará 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éguela 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 route/web.php. Estamos usando una ruta de cierre aquí, 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, 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}. La configuración regional seleccionada se guardará en la sesión y los usuarios serán redirigidos a su página anterior (según lo maneja el middleware de localización).
Para probarlo, vaya a localhost/language/it (suponiendo 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á vigente.
Implementación del conmutador de idiomas
Ahora, debemos brindarle al usuario una opción en la que se puede hacer clic para cambiar el selector de idioma Laravel web en lugar de exigirle que ingrese códigos locales 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 de "bienvenida", simplemente agregue la siguiente línea a su archivo bienvenido.blade.php donde desea que aparezca 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 utiliza 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 esta discusión, manejaremos otros componentes de localización, a saber, fecha, número y moneda. Aquí están los pasos.
Fechas localizadas en Laravel
El manejo de fechas y horas es crucial en el proceso de localización. Laravel usa 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 establece la configuración regional de Carbon según 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 }}
Formatear números y monedas
Los diferentes países tienen distintas formas de formatear 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 usar 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 estadounidense (`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 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.
Sin duda, esto puede dificultar la tarea de 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 pocos pasos simples para implementarse.
Una solución prometedora es Linguise . Linguise ofrece un enfoque más fácil y eficiente para la localización Laravel sin la necesidad de conocimientos profundos de codificación. Las características clave de Linguise incluyen.
- Fácil integración con Laravel
- Personaliza el selector de idiomas sin codificar
- 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 los sitios web Laravel también se pueden realizar fácilmente. He aquí una breve explicación.
- Cree una cuenta Linguise (use la prueba gratuita de 30 días)
- Registre su dominio web Laravel e ingrese cierta información. Obtendrá una clave API.
- Cargue y conecte el script de traducción Linguise a la carpeta Laravel que obtuvo.
- Configure las URL del idioma en el archivo htaccess.
- Inserte el script de cambio de idioma en el encabezado de su HTML.
- Personalice el selector de idiomas según sea necesario
- El selector de idiomas aparecerá en la web Laravel y el contenido se podrá traducir automáticamente.
¿Cómo? Con Linguise , sólo necesitas registrarte y activarlo, y aparecerá el selector de idiomas. Después de eso, podrá localizar, por ejemplo, a través del editor en vivo, traducir medios, imágenes, etc.
Conclusión
La localización 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 Laravel implica múltiples pasos y requiere una buena comprensión del marco. Puede resultar un desafío para los 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 ágil. Estas soluciones ofrecen capacidades de traducción rápida, fácil integración y funciones fáciles de usar, como conmutadores de idiomas personalizables y traducción de imágenes. ¡Ahora crea tu cuenta Linguise y disfruta de nuestra función para localizar tu Laravel !