Implementar la traducción de la API de Google Cloud AI frente a Google Translate para Laravel

dispositivos electrónicos, blanco y negro
Tabla de contenido

Para aquellos de ustedes que poseen Laravel , proporcionar contenido de traducción preciso y natural es muy importante para traducir su sitio web y ofrecer una buena experiencia de usuario.

Afortunadamente, existen varios servicios de traducción automática para ayudar a los desarrolladores a superar este desafío, como Google Cloud AI API Translation y Google Translate. Ambos servicios ofrecen funciones de traducción mediante tecnología automática.

En este artículo, exploraremos las principales diferencias entre implementar Google Cloud AI Translation y Google Translate para Laravel y recomendaremos los mejores servicios de traducción para su Laravel .

¿Qué son la API de traducción de Google Cloud AI y Google Translate?

Antes de entrar en la discusión, analizaremos los significados respectivos de las traducciones de Google Cloud AI API y Google Translate.

Traducción de la API de inteligencia artificial de Google Cloud

Servidor y almacenamiento en la nube de Google Cloud

Google Cloud AI API Translation es un servicio avanzado de traducción automática proporcionado por Google Cloud Platform. Este servicio aprovecha las últimas tecnologías de inteligencia artificial (IA) y aprendizaje automático para ofrecer traducciones precisas y naturales de texto, voz y documentos.

La API de Traducción de Google Cloud AI utiliza modelos de traducción neuronal basados ​​en aprendizaje profundo, lo que le permite captar mejor los matices y el contexto del idioma, ofreciendo traducciones más idiomáticas que se ajustan al uso real del mismo. Además, usar la API de Traducción de Google Cloud AI para hasta 500.000 caracteres es gratuito, mientras que los siguientes 75.000 caracteres tendrán un coste de 20 $ por millón de caracteres. 

Traductor de google

Interfaz de configuración de traducción. Opciones de configuración de idioma.

Por otro lado, Google Translate es un servicio de traducción automática de textos de larga trayectoria y ampliamente conocido. Utiliza un enfoque de traducción estadística más tradicional, que genera traducciones basadas en patrones y probabilidades aprendidos de grandes conjuntos de datos de entrenamiento.

Si bien no es tan avanzado como Google Cloud AI API Translation en términos de precisión y manejo de matices del lenguaje, Google Translate sigue siendo una opción popular debido a su facilidad de uso y disponibilidad gratuita para uso no comercial.

Implementar la traducción de la API de Google Cloud AI en Laravel

Varios servicios de traducción, incluido Linguise , utilizan de traducción en la nube de IA para traducir sitios web.

El servicio de traducción de idiomas utiliza la API de IA en la nube como una de sus tecnologías de traducción. A continuación, se detallan los pasos de implementación en el Laravel . Suponemos que ya tiene listo el Laravel .

Crear una cuenta Linguise

Para usar Linguise , primero debes crear una cuenta . Puedes hacerlo gratis o suscribirte por un mes o un año. Solo necesitas proporcionar información como tu correo electrónico, nombre de usuario y contraseña.

Agregar información del sitio web Laravel

Después de eso, agregue información sobre el sitio web que utilizará, ingrese la información de su cuenta Linguise y la URL web, seleccione la plataforma Laravel y agregue el idioma predeterminado y el idioma que desea agregar al sitio web.

 

Animación de carga

Luego descargue el script PHP mediante el siguiente botón y guárdelo en su computadora local.

Subir y configurar el script PHP

Después de descargar el script, descomprímelo y súbelo a la carpeta raíz donde está instalado Laravel . Asegúrate de que esté en la raíz de tu instalación Laravel (normalmente donde se encuentran los archivos de tu CMS). Asegúrate de que la carpeta se llame "linguise" (el nombre predeterminado al descomprimirla).

Menú de navegación del sistema de archivos de la computadora

Luego, copia la clave API Linguise en el archivo …/linguise/Configuration.php que subiste a tu servidor. Edita el archivo y pega tu clave API entre comillas, reemplazando el texto REPLACE_BY_YOUR_TOKEN.

Captura de pantalla de la configuración del código

Insertar script del selector de idioma

A continuación, inserte el script de cambio de idioma que obtuvo del Linguise .

Selector de lenguaje de script: Implementa la traducción de la API de inteligencia artificial de Google Cloud frente a Google Translate para Laravel

Insertado en el archivo front.blade.php, en el directorio recursos/vistas/diseños/. Aquí se muestra una vista previa del script insertado.

Ventana de terminal con salida de código

Configurar .htaccess

Por último, las URL basadas en idioma deben configurarse en el archivo .htaccess. Si su archivo incluye "RewriteBase /", simplemente copie y pegue el siguiente código después de esa línea.

				
					<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-cn|zh-tw|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu|zz-zz)(?:$|/)(.*)$ linguise/linguise.php?linguise_language=$1&original_url=$2 [L,QSA]
</IfModule>
				
			

Listo. En este punto, has implementado correctamente la traducción de la API de IA en la nube en el Linguise . Ahora puedes consultar el Laravel . Aparecerá un selector de idioma predeterminado, que puedes personalizar para Laravel desde el panel de control.

Un hombre con antecedentes oscuros y atmósfera misteriosa

Implementar Google Translate en Laravel

Ahora intentaremos implementar el Traductor de Google en Laravel. Suponemos que has creado correctamente un proyecto Laravel y solo necesitas añadir el Traductor de Google.

También puedes encontrar los siguientes pasos de instalación en el oficial Laravel .

Instalar el paquete de Google Translator

Para instalar el paquete de Google Translator, abra el símbolo del sistema del proyecto e introduzca el siguiente comando. Este paquete le permitirá utilizar las funciones de Google Translator Language.

				
					composer require stichoza/google-translate-php
				
			

Configuración del paquete Google Translator

Debemos configurar el paquete del traductor de Google dentro de la aplicación. Abra el archivo app.php en la carpeta /config, busque la sección "aliases" y agregue la siguiente línea de código.

Una terminal de computadora con texto codificado en pantalla. La pantalla muestra varias líneas de código.
				
					/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/

'aliases' => Facade::defaultAliases()->merge([
    // 'Example' => App\Facades\Example::class,
    'GoogleTranslate' => Stichoza\GoogleTranslate\GoogleTranslate::class,
])->toArray(),

				
			

Controlador de idioma de configuración

Necesita crear un archivo de controlador de idioma como el siguiente

				
					php artisan make:controller LangController
				
			

Creará el archivo LangController.php dentro de la carpeta /app/Http/Controllers.

pantalla de computadora que muestra líneas de código
				
					<?php

namespace App\Http\Controllers;

use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;

class LangController extends Controller
{
    public function index(): View
    {
        return view('lang');
    }

    public function change(Request $request)
    {
        App::setLocale($request->lang);
        
        session()->put('locale', $request->lang);

        return redirect()->back();
    }
}


				
			

Crear archivo de plantilla de hoja

Vaya a la carpeta /resources/views y cree un archivo llamado lang.blade.php. Ábralo e inserte el siguiente código.

Imagen de código en la pantalla de una computadora. Texto de programación.
				
					<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Laravel 10 Create Multi Language Website Tutorial</title> <script type="litespeed/javascript" data-src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script type="application/ld+json" class="gnpub-schema-markup-output">{"@context":"https:\/\/schema.org\/","@type":"NewsArticle","@id":"https:\/\/www.linguise.com\/blog\/guide\/implement-google-cloud-ai-api-translation-vs-google-translate-for-laravel\/#newsarticle","url":"https:\/\/www.linguise.com\/blog\/guide\/implement-google-cloud-ai-api-translation-vs-google-translate-for-laravel\/","image":{"@type":"ImageObject","url":"https:\/\/www.linguise.com\/wp-content\/uploads\/2024\/05\/Implement-Google-Cloud-AI-API-translation-vs-Google-Translate-for-Laravel-150x150.png","width":150,"height":150},"headline":"Implement Google Cloud AI API translation vs Google Translate for Laravel","mainEntityOfPage":"https:\/\/www.linguise.com\/blog\/guide\/implement-google-cloud-ai-api-translation-vs-google-translate-for-laravel\/","datePublished":"2024-05-31T07:32:47+00:00","dateModified":"2024-08-26T19:19:15+00:00","description":"For those of you who own Laravel-based websites, providing accurate and natural translation content is very important to translate your website and offer a good","articleSection":"Guide","articleBody":"For those of you who own Laravel-based websites, providing accurate and natural translation content is very important to translate your website and offer a good user experience.\nFortunately, several automatic translation services are available to help developers overcome this challenge, including Google Cloud AI API Translation and Google Translate. Both services offer translation capabilities using machine technology.\nIn this article, we will explore the main differences between implementing Google Cloud AI Translation and Google Translate for Laravel applications and recommend the best translation services for your Laravel website.&nbsp;\t\t\n\t\t\tWhat are Google Cloud AI API translation &amp; Google Translate?\n\t\t\n\t\tBefore entering into the discussion, we will discuss the respective meanings of Google Cloud AI API and Google Translate translations.\t\t\n\t\t\tGoogle Cloud AI API translation\n\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\tGoogle Cloud AI API Translation is an advanced automatic translation service provided by Google Cloud Platform. This service leverages the latest artificial intelligence (AI) and machine learning technologies to deliver accurate and natural translations of text, voice, and documents.Google Cloud AI API Translation uses neural translation models based on deep learning, which allows it to capture language nuances and context better, providing more idiomatic translations that align with actual language usage. Additionally, using Google Cloud AI Translation for up to 500,000 characters is free of charge, while the next 75,000 characters will incur a cost of $20 per million characters.\u00a0\t\t\n\t\t\tGoogle Translate\n\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\tMeanwhile, Google Translate is a long-standing and widely known automatic text translation service. It uses a more traditional statistical translation approach, which generates translations based on patterns and probabilities learned from large training datasets.Although it is not as advanced as Google Cloud AI API Translation in terms of accuracy and handling language nuances, Google Translate remains a popular choice due to its ease of use and free availability for non-commercial use.\t\t\n\t\t\tImplement Google Cloud AI API translation on Laravel\n\t\t\n\t\tSeveral translation services, including Linguise, use AI Translation cloud technology to translate websites.The language translation service uses cloud AI API as one of its translation technologies. The following are the implementation steps on the Laravel website. We assume here that you already have a ready Laravel project website.\t\t\n\t\t\tCreate Linguise account\n\t\t\n\t\tTo use Linguise, you must register an account first. You can do this for free or subscribe for one month or a year. You only need to provide information such as your email, username, and password.\t\t\n\t\t\tAdd Laravel website info\n\t\t\n\t\tAfter that, add information about the website you will use, enter your Linguise account info and web URL, select the Laravel platform, and add the default language and the language you want to add to the website.\u00a0\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\tThen download the PHP script via the following button and save it on your local computer.\t\t\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tDOWNLOAD PHP-JS TRANSLATION SCRIPT\n\t\t\t\t\t\n\t\t\tUpload and configure the PHP script\n\t\t\n\t\tAfter downloading the script, unzip it and upload it to the root folder where Laravel is installed. Ensure it is located at the root of your Laravel installation (typically where your CMS files are). Ensure the folder is named \"linguise\" (the default name when the folder is unzipped).\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\tThen, the Linguise API key must be copied into the \u2026\/linguise\/Configuration.php file you uploaded to your server. Edit the file and paste your API key between the quotes, replacing the text REPLACE_BY_YOUR_TOKEN.\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\tInsert script of language switcher\t\t\n\t\tNext, insert the language switch script that you got from the Linguise dashboard.\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\tInserted into the front.blade.php file in the resources\/views\/layouts\/ directory. Here is a preview of the inserted script.\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\tConfigure .htaccess\n\t\t\n\t\tLastly, language-based URLs need to be configured in the .htaccess file. If your file includes \"RewriteBase \/,\" simply copy and paste the following code after that line.\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n  RewriteEngine On\n  RewriteRule ^(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-cn|zh-tw|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu|zz-zz)(?:$|\/)(.*)$ linguise\/linguise.php?linguise_language=$1&original_url=$2 [L,QSA]\n\n\t\t\t\t\n\t\t\t\n\t\tDone. At this point, you have successfully implemented cloud AI API Translation on the Linguise service. Now, you can check the Laravel website. A default language switcher will appear, and you can customize the Language switcher for Laravel via the dashboard.\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\tImplement Google Translate on Laravel\t\t\n\t\tNow we will try to implement Google Translate in Laravel. Here we assume that you have successfully created a Laravel project and just need to add Google Translate.You can also find the following installation steps on the official Laravel website.\t\t\n\t\t\tInstall Google Translator Package\n\t\t\n\t\tTo install the Google Translator Package, open the project prompt and input the following command. This package will enable you to utilize the working functions of the google-translator-language.\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tcomposer require stichoza\/google-translate-php\n\t\t\t\t\n\t\t\t\n\t\t\tSetting of Google Translator Package\n\t\t\n\t\tWe must set up the \"google translator package\" within the the application. Open the app.php file in the \/config folder, find the \"aliases\" section, and add the following line of code.\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\/*\n|--------------------------------------------------------------------------\n| Class Aliases\n|--------------------------------------------------------------------------\n|\n| This array of class aliases will be registered when this application\n| is started. However, feel free to register as many as you wish as\n| the aliases are \"lazy\" loaded so they don't hinder performance.\n|\n*\/\n'aliases' => Facade::defaultAliases()->merge([\n    \/\/ 'Example' => AppFacadesExample::class,\n    'GoogleTranslate' => StichozaGoogleTranslateGoogleTranslate::class,\n])->toArray(),\n\n\t\t\t\t\n\t\t\t\n\t\t\tSetup Language Controller\n\t\t\n\t\tYou need to create a language controller file like the following\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tphp artisan make:controller LangController\n\t\t\t\t\n\t\t\t\n\t\tIt will create LangController.php file inside \/app\/Http\/Controllers folder.","keywords":"","name":"Implement Google Cloud AI API translation vs Google Translate for Laravel","thumbnailUrl":"https:\/\/www.linguise.com\/wp-content\/uploads\/2024\/05\/Implement-Google-Cloud-AI-API-translation-vs-Google-Translate-for-Laravel-150x150.png","wordCount":809,"timeRequired":"PT3M35S","mainEntity":{"@type":"WebPage","@id":"https:\/\/www.linguise.com\/blog\/guide\/implement-google-cloud-ai-api-translation-vs-google-translate-for-laravel\/"},"author":{"@type":"Person","name":"Tristan","url":"https:\/\/www.linguise.com\/author\/tristan\/","sameAs":[],"image":{"@type":"ImageObject","url":"https:\/\/secure.gravatar.com\/avatar\/50d7238660b192d8d54ebf6367be5e97bb41c24dbd190daae062d931efd351ae?s=96&d=mm&r=g","height":96,"width":96}},"editor":{"@type":"Person","name":"Tristan","url":"https:\/\/www.linguise.com\/author\/tristan\/","sameAs":[],"image":{"@type":"ImageObject","url":"https:\/\/secure.gravatar.com\/avatar\/50d7238660b192d8d54ebf6367be5e97bb41c24dbd190daae062d931efd351ae?s=96&d=mm&r=g","height":96,"width":96}}}</script> </head>

<body>
    <div class="container mt-5">
        <div class="row">
            <div class="col-md-12">
                <div class="card w-75 m-auto">
                    <div class="card-header text-center bg-primary text-white">
                        <h4 style="font-size: 17px;">Laravel 10 Create Multi Language Website Tutorial</h4>
                    </div>
                    <div class="card-body">
                        <div class="row">
                            <div class="col-md-4">
                                <strong>Select Language: </strong>
                            </div>
                            <div class="col-md-4">
                                <select class="form-select changeLang">
                                    <option value="en" {{ session()->get('locale') == 'en' ? 'selected' : '' }}>
                                        English
                                    </option>
                                    <option value="fr" {{ session()->get('locale') == 'fr' ? 'selected' : '' }}>
                                        French
                                    </option>
                                    <option value="ar" {{ session()->get('locale') == 'ar' ? 'selected' : '' }}>
                                        Arabic
                                    </option>
                                    <option value="hi" {{ session()->get('locale') == 'hi' ? 'selected' : '' }}>
                                        Hindi
                                    </option>
                                </select>
                            </div>
                        </div>

                        <div style="margin-top: 20px;">
                            <p>{{ GoogleTranslate::trans('Welcome to Online Web Tutor', app()->getLocale()) }}</p>
                            <p>{{ GoogleTranslate::trans('It is a passionate and innovative Web Development Community dedicated to empowering aspiring web developers with the latest tools and techniques. Our platform offers a comprehensive range of web development courses, including PHP and its frameworks, Node.js, MySQL, Javascript and WordPress.', app()->getLocale()) }}
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

     <script data-no-optimize="1">window.lazyLoadOptions=Object.assign({},{threshold:300},window.lazyLoadOptions||{});!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).LazyLoad=e()}(this,function(){"use strict";function e(){return(e=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n,a=arguments[e];for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t}).apply(this,arguments)}function o(t){return e({},at,t)}function l(t,e){return t.getAttribute(gt+e)}function c(t){return l(t,vt)}function s(t,e){return function(t,e,n){e=gt+e;null!==n?t.setAttribute(e,n):t.removeAttribute(e)}(t,vt,e)}function i(t){return s(t,null),0}function r(t){return null===c(t)}function u(t){return c(t)===_t}function d(t,e,n,a){t&&(void 0===a?void 0===n?t(e):t(e,n):t(e,n,a))}function f(t,e){et?t.classList.add(e):t.className+=(t.className?" ":"")+e}function _(t,e){et?t.classList.remove(e):t.className=t.className.replace(new RegExp("(^|\\s+)"+e+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")}function g(t){return t.llTempImage}function v(t,e){!e||(e=e._observer)&&e.unobserve(t)}function b(t,e){t&&(t.loadingCount+=e)}function p(t,e){t&&(t.toLoadCount=e)}function n(t){for(var e,n=[],a=0;e=t.children[a];a+=1)"SOURCE"===e.tagName&&n.push(e);return n}function h(t,e){(t=t.parentNode)&&"PICTURE"===t.tagName&&n(t).forEach(e)}function a(t,e){n(t).forEach(e)}function m(t){return!!t[lt]}function E(t){return t[lt]}function I(t){return delete t[lt]}function y(e,t){var n;m(e)||(n={},t.forEach(function(t){n[t]=e.getAttribute(t)}),e[lt]=n)}function L(a,t){var o;m(a)&&(o=E(a),t.forEach(function(t){var e,n;e=a,(t=o[n=t])?e.setAttribute(n,t):e.removeAttribute(n)}))}function k(t,e,n){f(t,e.class_loading),s(t,st),n&&(b(n,1),d(e.callback_loading,t,n))}function A(t,e,n){n&&t.setAttribute(e,n)}function O(t,e){A(t,rt,l(t,e.data_sizes)),A(t,it,l(t,e.data_srcset)),A(t,ot,l(t,e.data_src))}function w(t,e,n){var a=l(t,e.data_bg_multi),o=l(t,e.data_bg_multi_hidpi);(a=nt&&o?o:a)&&(t.style.backgroundImage=a,n=n,f(t=t,(e=e).class_applied),s(t,dt),n&&(e.unobserve_completed&&v(t,e),d(e.callback_applied,t,n)))}function x(t,e){!e||0<e.loadingCount||0<e.toLoadCount||d(t.callback_finish,e)}function M(t,e,n){t.addEventListener(e,n),t.llEvLisnrs[e]=n}function N(t){return!!t.llEvLisnrs}function z(t){if(N(t)){var e,n,a=t.llEvLisnrs;for(e in a){var o=a[e];n=e,o=o,t.removeEventListener(n,o)}delete t.llEvLisnrs}}function C(t,e,n){var a;delete t.llTempImage,b(n,-1),(a=n)&&--a.toLoadCount,_(t,e.class_loading),e.unobserve_completed&&v(t,n)}function R(i,r,c){var l=g(i)||i;N(l)||function(t,e,n){N(t)||(t.llEvLisnrs={});var a="VIDEO"===t.tagName?"loadeddata":"load";M(t,a,e),M(t,"error",n)}(l,function(t){var e,n,a,o;n=r,a=c,o=u(e=i),C(e,n,a),f(e,n.class_loaded),s(e,ut),d(n.callback_loaded,e,a),o||x(n,a),z(l)},function(t){var e,n,a,o;n=r,a=c,o=u(e=i),C(e,n,a),f(e,n.class_error),s(e,ft),d(n.callback_error,e,a),o||x(n,a),z(l)})}function T(t,e,n){var a,o,i,r,c;t.llTempImage=document.createElement("IMG"),R(t,e,n),m(c=t)||(c[lt]={backgroundImage:c.style.backgroundImage}),i=n,r=l(a=t,(o=e).data_bg),c=l(a,o.data_bg_hidpi),(r=nt&&c?c:r)&&(a.style.backgroundImage='url("'.concat(r,'")'),g(a).setAttribute(ot,r),k(a,o,i)),w(t,e,n)}function G(t,e,n){var a;R(t,e,n),a=e,e=n,(t=Et[(n=t).tagName])&&(t(n,a),k(n,a,e))}function D(t,e,n){var a;a=t,(-1<It.indexOf(a.tagName)?G:T)(t,e,n)}function S(t,e,n){var a;t.setAttribute("loading","lazy"),R(t,e,n),a=e,(e=Et[(n=t).tagName])&&e(n,a),s(t,_t)}function V(t){t.removeAttribute(ot),t.removeAttribute(it),t.removeAttribute(rt)}function j(t){h(t,function(t){L(t,mt)}),L(t,mt)}function F(t){var e;(e=yt[t.tagName])?e(t):m(e=t)&&(t=E(e),e.style.backgroundImage=t.backgroundImage)}function P(t,e){var n;F(t),n=e,r(e=t)||u(e)||(_(e,n.class_entered),_(e,n.class_exited),_(e,n.class_applied),_(e,n.class_loading),_(e,n.class_loaded),_(e,n.class_error)),i(t),I(t)}function U(t,e,n,a){var o;n.cancel_on_exit&&(c(t)!==st||"IMG"===t.tagName&&(z(t),h(o=t,function(t){V(t)}),V(o),j(t),_(t,n.class_loading),b(a,-1),i(t),d(n.callback_cancel,t,e,a)))}function $(t,e,n,a){var o,i,r=(i=t,0<=bt.indexOf(c(i)));s(t,"entered"),f(t,n.class_entered),_(t,n.class_exited),o=t,i=a,n.unobserve_entered&&v(o,i),d(n.callback_enter,t,e,a),r||D(t,n,a)}function q(t){return t.use_native&&"loading"in HTMLImageElement.prototype}function H(t,o,i){t.forEach(function(t){return(a=t).isIntersecting||0<a.intersectionRatio?$(t.target,t,o,i):(e=t.target,n=t,a=o,t=i,void(r(e)||(f(e,a.class_exited),U(e,n,a,t),d(a.callback_exit,e,n,t))));var e,n,a})}function B(e,n){var t;tt&&!q(e)&&(n._observer=new IntersectionObserver(function(t){H(t,e,n)},{root:(t=e).container===document?null:t.container,rootMargin:t.thresholds||t.threshold+"px"}))}function J(t){return Array.prototype.slice.call(t)}function K(t){return t.container.querySelectorAll(t.elements_selector)}function Q(t){return c(t)===ft}function W(t,e){return e=t||K(e),J(e).filter(r)}function X(e,t){var n;(n=K(e),J(n).filter(Q)).forEach(function(t){_(t,e.class_error),i(t)}),t.update()}function t(t,e){var n,a,t=o(t);this._settings=t,this.loadingCount=0,B(t,this),n=t,a=this,Y&&window.addEventListener("online",function(){X(n,a)}),this.update(e)}var Y="undefined"!=typeof window,Z=Y&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),tt=Y&&"IntersectionObserver"in window,et=Y&&"classList"in document.createElement("p"),nt=Y&&1<window.devicePixelRatio,at={elements_selector:".lazy",container:Z||Y?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_poster:"poster",class_applied:"applied",class_loading:"litespeed-loading",class_loaded:"litespeed-loaded",class_error:"error",class_entered:"entered",class_exited:"exited",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1},ot="src",it="srcset",rt="sizes",ct="poster",lt="llOriginalAttrs",st="loading",ut="loaded",dt="applied",ft="error",_t="native",gt="data-",vt="ll-status",bt=[st,ut,dt,ft],pt=[ot],ht=[ot,ct],mt=[ot,it,rt],Et={IMG:function(t,e){h(t,function(t){y(t,mt),O(t,e)}),y(t,mt),O(t,e)},IFRAME:function(t,e){y(t,pt),A(t,ot,l(t,e.data_src))},VIDEO:function(t,e){a(t,function(t){y(t,pt),A(t,ot,l(t,e.data_src))}),y(t,ht),A(t,ct,l(t,e.data_poster)),A(t,ot,l(t,e.data_src)),t.load()}},It=["IMG","IFRAME","VIDEO"],yt={IMG:j,IFRAME:function(t){L(t,pt)},VIDEO:function(t){a(t,function(t){L(t,pt)}),L(t,ht),t.load()}},Lt=["IMG","IFRAME","VIDEO"];return t.prototype={update:function(t){var e,n,a,o=this._settings,i=W(t,o);{if(p(this,i.length),!Z&&tt)return q(o)?(e=o,n=this,i.forEach(function(t){-1!==Lt.indexOf(t.tagName)&&S(t,e,n)}),void p(n,0)):(t=this._observer,o=i,t.disconnect(),a=t,void o.forEach(function(t){a.observe(t)}));this.loadAll(i)}},destroy:function(){this._observer&&this._observer.disconnect(),K(this._settings).forEach(function(t){I(t)}),delete this._observer,delete this._settings,delete this.loadingCount,delete this.toLoadCount},loadAll:function(t){var e=this,n=this._settings;W(t,n).forEach(function(t){v(t,e),D(t,n,e)})},restoreAll:function(){var e=this._settings;K(e).forEach(function(t){P(t,e)})}},t.load=function(t,e){e=o(e);D(t,e)},t.resetStatus=function(t){i(t)},t}),function(t,e){"use strict";function n(){e.body.classList.add("litespeed_lazyloaded")}function a(){console.log("[LiteSpeed] Start Lazy Load"),o=new LazyLoad(Object.assign({},t.lazyLoadOptions||{},{elements_selector:"[data-lazyloaded]",callback_finish:n})),i=function(){o.update()},t.MutationObserver&&new MutationObserver(i).observe(e.documentElement,{childList:!0,subtree:!0,attributes:!0})}var o,i;t.addEventListener?t.addEventListener("load",a,!1):t.attachEvent("onload",a)}(window,document);</script><script data-no-optimize="1">window.litespeed_ui_events=window.litespeed_ui_events||["mouseover","click","keydown","wheel","touchmove","touchstart"];var urlCreator=window.URL||window.webkitURL;function litespeed_load_delayed_js_force(){console.log("[LiteSpeed] Start Load JS Delayed"),litespeed_ui_events.forEach(e=>{window.removeEventListener(e,litespeed_load_delayed_js_force,{passive:!0})}),document.querySelectorAll("iframe[data-litespeed-src]").forEach(e=>{e.setAttribute("src",e.getAttribute("data-litespeed-src"))}),"loading"==document.readyState?window.addEventListener("DOMContentLoaded",litespeed_load_delayed_js):litespeed_load_delayed_js()}litespeed_ui_events.forEach(e=>{window.addEventListener(e,litespeed_load_delayed_js_force,{passive:!0})});async function litespeed_load_delayed_js(){let t=[];for(var d in document.querySelectorAll('script[type="litespeed/javascript"]').forEach(e=>{t.push(e)}),t)await new Promise(e=>litespeed_load_one(t[d],e));document.dispatchEvent(new Event("DOMContentLiteSpeedLoaded")),window.dispatchEvent(new Event("DOMContentLiteSpeedLoaded"))}function litespeed_load_one(t,e){console.log("[LiteSpeed] Load ",t);var d=document.createElement("script");d.addEventListener("load",e),d.addEventListener("error",e),t.getAttributeNames().forEach(e=>{"type"!=e&&d.setAttribute("data-src"==e?"src":e,t.getAttribute(e))});let a=!(d.type="text/javascript");!d.src&&t.textContent&&(d.src=litespeed_inline2src(t.textContent),a=!0),t.after(d),t.remove(),a&&e()}function litespeed_inline2src(t){try{var d=urlCreator.createObjectURL(new Blob([t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1")],{type:"text/javascript"}))}catch(e){d="data:text/javascript;base64,"+btoa(t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1"))}return d}</script><script data-no-optimize="1">var litespeed_vary=document.cookie.replace(/(?:(?:^|.*;\s*)_lscache_vary\s*\=\s*([^;]*).*$)|^.*$/,"");litespeed_vary||fetch("/wp-content/plugins/litespeed-cache/guest.vary.php",{method:"POST",cache:"no-cache",redirect:"follow"}).then(e=>e.json()).then(e=>{console.log(e),e.hasOwnProperty("reload")&&"yes"==e.reload&&(sessionStorage.setItem("litespeed_docref",document.referrer),window.location.reload(!0))});</script><script data-optimized="1" type="litespeed/javascript" data-src="https://www.linguise.com/wp-content/litespeed/js/d67b785032398966caba440906f9d5db.js?ver=7271c"></script></body>

</html>

				
			

Configuración del middleware del lenguaje

Abra la terminal del proyecto y ejecute este comando,

				
					php artisan make:middleware LanguageManager


				
			

Creará un archivo LanguageManager.php dentro de la carpeta /app/Http/Middleware y lo pegará.

Una imagen pixelada en blanco y negro. Sin detalles nítidos visibles.
				
					<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\App;

class LanguageManager
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next): Response
    {
        if (session()->has('locale')) {

            App::setLocale(session()->get('locale'));
        }

        return $next($request);
    }
}

				
			

Registrar middleware de lenguaje a través de Kernel.php

Abra el archivo Kernel.php, ubicado en el directorio /app/Http. Busque la matriz $middlewareGroups y navegue a la sección web.

Imagen borrosa de texto sobre fondo negro. El texto es ilegible.
				
					/**
 * The application's route middleware groups.
 *
 * @var array<string, array<int, class-string|string>>
 */
protected $middlewareGroups = [
    'web' => [
        
        //...

        \App\Http\Middleware\LanguageManager::class,
    ],

    'api' => [
        
        //...
    ],
];

				
			

Añadir ruta

Abra web.php desde la carpeta /routes y agregue estas rutas allí.

Web.php: Implementar la traducción de la API de Google Cloud AI frente a Google Translate para Laravel
				
					//...
use App\Http\Controllers\LangController;

//...

Route::get('lang/home', [LangController::class, 'index']);
Route::get('lang/change', [LangController::class, 'change'])->name('changeLang');


				
			

Sitio web de prueba

Ejecute este comando en la terminal del proyecto para iniciar el servidor de desarrollo.

				
					php artisan serve
				
			

A continuación se muestra una visualización del Laravel del sitio web onlinewebtutorblog.com que se ha creado, como puede ver en la siguiente visualización hay un menú desplegable de Google Translate.

Una imagen distorsionada de lo que parece ser una pantalla de computadora.

Así es como se ve cuando el sitio web Laravel se traduce al árabe.

Pantalla de computadora con fallos. Código y texto distorsionados.

¿Cuál es la diferencia entre implementar la traducción de Google Cloud AI y Google Translate en Laravel?

Después de comprender cada implementación de la traducción de Google Cloud AI y Google Translate en Laravel, analizaremos sus diferencias.

Proceso de instalación y configuración

Ilustración en blanco y negro. Personas de pie cerca de un objetivo grande.
  • Traducción de la API de Google Cloud AI: El proceso de instalación y configuración es más complejo, ya que debes crear un proyecto en Google Cloud Platform (GCP), habilitar la API de Cloud Translation, crear una cuenta de servicio, generar claves de API y configurar el cliente de API en tu Laravel . Esto implica varios pasos y requiere una cuenta de GCP válida.
  • Google Translate: La instalación y configuración son mucho más sencillas. Solo necesitas instalar un paquete o biblioteca de terceros mediante Composer, como stichoza/google-translate-php. Después, puedes configurar la clave API de Google Translate en el Laravel .

Precisión de la traducción

Grupo de personas reunidas alrededor de una computadora.
  • Traducción de la API de IA de Google Cloud: Gracias a sus capacidades de aprendizaje profundo, este servicio puede captar mejor los contextos y matices lingüísticos complejos. Esto permite una traducción más precisa de expresiones idiomáticas, frases figurativas y juegos de palabras difíciles de traducir literalmente.
  • Google Translate: a menudo tiene dificultades para captar el contexto y los matices más sutiles del lenguaje, lo que hace que los resultados suenen rígidos o menos naturales. Debido al enfoque estadístico, la traducción de expresiones idiomáticas o frases figurativas suele ser menos precisa.

Velocidad de respuesta

Un cohete despegando desde una computadora portátil y un teléfono móvil.
  • Traducción de la API de IA de Google Cloud: Generalmente, responde con mayor rapidez a las solicitudes de traducción, ya que utiliza de traducción automática neuronal alojados en la robusta infraestructura en la nube de Google. Esto proporciona tiempos de respuesta más rápidos, especialmente para textos más largos o grandes volúmenes de traducción.
  • Google Translate: Puede ser un poco más lento al responder a las solicitudes de traducción, especialmente para documentos o textos más largos. Esto se debe a que utiliza una combinación más tradicional de enfoques de traducción estadística y neuronal, que podrían no ser tan eficientes como los modelos neuronales que utiliza la API de traducción de Google Cloud AI.

Capacidades de personalización y control

Una pantalla de computadora distorsionada con efectos de fallas. La imagen parece estar corrupta.
  • Traducción de la API de IA de Google Cloud: Ofrece más opciones para personalizar y controlar el proceso de traducción, como configurar preferencias de traducción, subir glosarios personalizados y acceder a la de traducción del editor en vivo para editar manualmente los resultados. Esto permite a los usuarios mejorar la precisión de la traducción según sus necesidades.
  • Google Translate: Tiene opciones de personalización y control más limitadas. Los usuarios deben confiar en los resultados de traducción automática sin mucha posibilidad de editarlos o personalizarlos directamente.

Funciones avanzadas

Pantalla de computadora con funciones de accesibilidad y taza de café
  • Traducción de la API de IA de Google Cloud: La tecnología de traducción de IA de Google Cloud cuenta con varias funciones avanzadas, como glosario, selección de modelos y modelos AutoML. Además, en el contexto de la traducción de IA en la nube con Linguise , también incluye funciones avanzadas como la exclusión de la traducción de palabras específicas, como términos técnicos, marcas, etc., según líneas, páginas o URL.
  • Traductor de Google: El Traductor de Google instalado en Laravel no puede traducir documentos de audio ni otros. Solo puede traducir el texto del sitio web a otro idioma, sin poder editar los resultados de la traducción.
Rompe las barreras del idioma
¡Diga adiós a las barreras del idioma y hola al crecimiento ilimitado! Pruebe nuestro servicio de traducción automática hoy.

Factores que debes considerar al elegir un servicio de traducción para tu sitio web Laravel

A continuación se presentan algunas consideraciones a tener en cuenta para elegir el mejor servicio de traducción para su sitio web Laravel .

  • Alta precisión de traducción: uno de los factores más importantes es la precisión de la traducción. Si su sitio web requiere traducciones de alta precisión, especialmente para contenido complejo y lenguaje con matices, Google Cloud AI API Translation podría ser una mejor opción que Google Translate.
  • Facilidad de integración y configuración: considere instalar y configurar el servicio de traducción con su Laravel . Google Translate suele ser más fácil de integrar porque está disponible como paquete o biblioteca PHP. Por otro lado, Google Cloud AI API Translation requiere una configuración más compleja en Google Cloud Platform.
  • Funciones y opciones de personalización: si necesita funciones adicionales, como un glosario o traducción de terminología especializada, de traducción del editor u otras opciones de personalización, Google Cloud AI API Translation ofrece más opciones que Google Translate.
  • Velocidad y tiempo de respuesta: para aplicaciones con grandes volúmenes de traducción o que necesitan una respuesta rápida, Google Cloud AI API Translation generalmente responde a las solicitudes de traducción más rápido que Google Translate.
  • Costo y presupuesto: Google Translate es gratuito para uso no comercial, mientras que Google Cloud AI API Translation utiliza un modelo de facturación de pago basado en el uso. Considere su presupuesto y el volumen de traducción estimado para elegir el servicio más rentable.
  • Soporte y documentación: Además, tenga en cuenta el soporte técnico y la documentación disponibles para cada servicio. Google Cloud AI API Translation podría ofrecer documentación y soporte más completos de Google.

Linguise, el mejor servicio de traducción de IA en la nube para sitios web Laravel

Servicios profesionales de diseño y desarrollo de sitios web, optimización SEO

Hasta este punto, ya conoces las consideraciones para elegir un servicio de traducción para Laravel; casi todos los factores mencionados anteriormente están presentes en el servicio de traducción Linguise .

Linguise es un servicio de traducción de sitios web que utiliza tecnología de traducción de IA en la nube para traducir contenido. Este servicio puede ser la mejor solución para traducir un Laravel . ¿Por qué? Porque Linguise aborda las consideraciones mencionadas anteriormente.

  • Linguise ofrece una calidad de traducción impecable. Si bien esta precisión varía según el par de idiomas, Linguise presume de una precisión cercana al 97 %, similar a la de la traducción humana.
  • Linguise también está integrado con más de 40 CMS y creadores web, así como con sitios web basados ​​en PHP como Laravel .
  • Aunque traduce automáticamente, Linguise cuenta con un editor en vivo que permite editar los resultados de la traducción. De esta forma, la traducción se puede ajustar a las preferencias de la empresa.
  • El tiempo de carga de las páginas multilingües es solo un 5% más largo que el de las páginas en el idioma original.
  • Nuestro servicio está disponible en tres paquetes que van desde $15 hasta $45 al mes. Aunque es de pago, también ofrecemos un periodo de prueba gratuito de 30 días con un límite de 600,000 palabras traducidas.
  • Por último, Linguise admite todas las formas de asistencia al cliente, incluidos artículos de guía, documentación, novedades sobre productos, tutoriales en vídeo de YouTube y chat de soporte 24 horas, los 7 días de la semana.

A partir de los puntos anteriores, Linguise puede ser una solución de tecnología de traducción de IA en la nube para Laravel.

¿Listo para explorar nuevos mercados? Pruebe nuestro servicio de traducción automática gratis con nuestra prueba de 1 mes sin riesgos. ¡No se necesita tarjeta de crédito!

Conclusión

En este artículo, hemos explorado las principales diferencias entre la implementación de Google Cloud AI API Translation y Google Translate para aplicaciones web Laravel .

La API de traducción de Google Cloud AI destaca por su precisión y la necesidad de traducciones de alta precisión. Sin embargo, este servicio requiere una configuración más compleja y es más caro que el Traductor de Google. Por otro lado, el Traductor de Google ofrece una fácil integración, pero tiene limitaciones en cuanto a precisión y opciones de personalización.

Linguise surge como un servicio de traducción alternativo basado en IA en la nube, compatible con sitios web Laravel . Con niveles de precisión casi comparables a los de las traducciones humanas, opciones de edición de traducción, tiempos de carga rápidos y un servicio de atención al cliente integral, Linguise se convierte en una excelente solución de traducción para su sitio web Laravel .

Si quieres probar Linguise , puedes crear una cuenta gratuita y disfrutar de un periodo de prueba de 30 días con un límite de 600.000 palabras traducidas. Visita linguise para más información.

También te puede interesar leer

¡No te lo pierdas!
Suscríbete a nuestro boletín

¡Recibe noticias sobre traducción automática de sitios web, SEO internacional y más!

Invalid email address
Pruébalo. Una vez al mes y puedes darte de baja cuando quieras.

¡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.

¡No te lo pierdas!
Invalid email address