Aprende a crear tu propio traductor en tu proyecto Symfony.

Cómo traducir texto en diferentes idiomas usando Google Translate gratis en Symfony 3

Importante

Este tutorial no utiliza la API de Google Translate de pago, sino la alternativa gratuita que rastrea el sitio web de Google Translate.

Este paquete está desarrollado solo con fines educativos y es útil para uso personal (sus propios proyectos locos). No dependa de este paquete, ya que puede romperse en cualquier momento, ya que se basa en el rastreo del sitio web de Google Translate. Considere comprar la API oficial de Google Translate para otros tipos de uso. Además, Google podría prohibir la IP de su servidor o requerir resolver CAPTCHA si envía tráfico inusual (gran cantidad de datos / solicitudes).

Hoy en día, muchas personas dependen en gran medida de la traducción automática, especialmente en Google Translate. La traducción de Google es notablemente buena, al menos si la comparas con la traducción que generan otros servicios. Sin embargo, todo el mundo sabe que Google Translate no es en absoluto un servicio de traducción perfecto, pero sí muy aceptable.

Si está buscando crear algún tipo de módulo o servicio de traducción personal para su aplicación personal que no cueste dinero (no la traducción de elementos en su interfaz de usuario), entonces ha llegado al sitio web correcto. En este artículo aprenderá a traducir texto con PHP usando el paquete PHP de Google Translate en su proyecto Symfony.

1. Instale el paquete PHP de Google Translate

Para traducir texto a todos los idiomas que permite el sitio web de Google, usaremos el paquete PHP de Google Translate. Es una API útil que te permite utilizar las funcionalidades de Google Translate de forma gratuita (traduce de forma totalmente gratuita). 

Para instalar este paquete en tu proyecto Symfony, ejecuta el siguiente comando en tu terminal (una vez ubicado en el directorio de tu proyecto):

composer require stichoza/google-translate-php

Si no le gusta instalar paquetes con la consola (o le gusta usar versiones específicas), puede editar manualmente su composer.jsony agregar el paquete como una dependencia:

{
    "require": {
        "stichoza/google-translate-php": "~3.2"
    }
}

Luego, ejecute la instalación del compositor y estará listo para usar el paquete. Este paquete se basa en el paquete HTTP Guzzle y fue escrito por @Stichoza . Si necesita más información sobre este paquete, visite el repositorio oficial en Github aquí .

2. Traducción de texto

La traducción de texto con este paquete es bastante fácil, solo necesita importar la  TranslateClientclase del paquete y crear una nueva instancia de la misma. Es importante que establezca el idioma del texto que desea traducir con el código respectivo (idioma de origen) setSourcey con el que establecer el idioma de salida (texto traducido)  setTarget.

Luego puedes usar el método translate de la instancia, este método espera como primer argumento el texto que deseas traducir:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Importar la clase TranslateClient
 */
use Stichoza\GoogleTranslate\TranslateClient;

class DefaultController extends Controller
{
    /**
     * @Route("/", name="homepage")
     */
    public function indexAction(Request $request)
    {
        // Por defecto, el TranslateClient es de 'auto' a 'en'
        $tr = new TranslateClient();

        $tr->setSource('en'); // Traducir del inglés
        $tr->setTarget('es'); // Traducir al español

        $text = $tr->translate('Hello World!');

        // Imprime "Hola Mundo!"
        return new Response($text);
    }
}

Puedes ver la lista de códigos de todos los idiomas disponibles de Google Translate aquí .

Usando un método estático

No necesita crear una instancia de TranslateClient, ya que expone un método estático para hacer las cosas más fáciles y sencillas:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Importar la clase TranslateClient
 */
use Stichoza\GoogleTranslate\TranslateClient;

class DefaultController extends Controller
{
    /**
     * @Route("/", name="homepage")
     */
    public function indexAction(Request $request)
    {
        $sourceLanguage = "es";
        $outputLanguage = "pt";

        $textToTranslate = "buenos días";
 
        $text = TranslateClient::translate($sourceLanguage, $outputLanguage, $textToTranslate);

        // Imprime "bom Dia"
        return new Response($text);
    }
}

Detecta el idioma de origen automáticamente

De la misma manera que lo hace la aplicación de traducción de Google, puede configurar el reconocimiento automático de idioma configurando el idioma de origen en nulo:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Importar la clase TranslateClient
 */
use Stichoza\GoogleTranslate\TranslateClient;

class DefaultController extends Controller
{
    /**
     * @Route("/", name="homepage")
     */
    public function indexAction(Request $request)
    {
        // Por defecto, el TranslateClient es de 'auto' a 'en'
        $tr = new TranslateClient();

        $tr->setSource(null); // Detecta automáticamente el idioma
        $tr->setTarget('en'); // Traducir al español

        // Debería detectar alemán
        $text = $tr->translate('Guten Morgen');

        // Genera "Idioma detectado 'de' y traducción: Buenos días"
        return new Response("Código de idioma detectado '{$tr->getLastDetectedSource()}' y traducción: $text");
    }
}

Como puede ver, puede recuperar el código de idioma detectado con el método getLastDetectedSource del cliente.

Que te diviertas ❤️!


Ingeniero de Software Senior en EPAM Anywhere. Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores