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!
Aquí hay algunas razones importantes por las que debería localizar su sitio web Laravel .
Hay algunos requisitos y pasos a considerar al implementar la localización multilingüe en 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.
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.
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.
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 .
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.
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.
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).
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 ],
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.
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')); }); }
En esta discusión, manejaremos otros componentes de localización, a saber, fecha, número y moneda. Aquí están los pasos.
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 }}
Los diferentes países tienen distintas formas de formatear los números. Por ejemplo.
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 ($).
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.
Los pasos para instalar Linguise en los sitios web Laravel también se pueden realizar fácilmente. He aquí una breve explicación.
¿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.
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 !
¡Recibe noticias sobre traducción automática de sitios web, SEO internacional y más!
¡No te vayas sin compartir tu correo electrónico!
No podemos garantizar que gane la lotería, pero podemos prometerle algunas noticias informativas interesantes sobre la traducción y descuentos ocasionales.