Cómo traducir texto

Este documento describe cómo usar la API de Cloud Translation para traducir texto.

El texto de entrada puede ser texto sin formato o HTML. La API de Cloud Translation no traduce ninguna etiqueta HTML, solo el texto que aparece entre las etiquetas. El resultado conserva las etiquetas HTML (sin traducir), con el texto traducido entre las etiquetas en la medida de lo posible debido a las diferencias entre los idiomas fuente y objetivo. El orden de las etiquetas HTML en el resultado puede diferir del orden en el texto de entrada debido a los cambios en el orden de las palabras en la traducción.

Traducir texto

Esta sección demuestra algunas maneras de solicitar traducciones desde el extremo https://translation.googleapis.com/language/translate/v2.

Cómo traducir strings de entrada

LÍNEA DE REST Y CMD

Para detectar el idioma de algún texto, realiza una solicitud POST y proporciona JSON en el cuerpo de la solicitud que identifique el idioma del que deseas traducir (source), el idioma al que deseas traducir (target) y el texto para traducir (q). Puedes proporcionar varias strings de texto para traducir si incluyes varios parámetros q en tu JSON. Identificas tus idiomas fuente y objetivo mediante el uso de sus códigos iso-639-1.

A continuación, se muestra un ejemplo de una solicitud POST que usa curl o PowerShell. En el ejemplo, se usa el token de acceso de una cuenta de servicio configurada para el proyecto con el SDK de Cloud de Google Cloud Platform. Si deseas obtener instrucciones para instalar el SDK de Cloud, configurar un proyecto con una cuenta de servicio y obtener un token de acceso, consulta la Guía de inicio rápido.

Método HTTP y URL:

POST https://translation.googleapis.com/language/translate/v2

Cuerpo JSON de la solicitud:

{
  "q": ["Hello world", "My name is Jeff"],
  "target": "de"
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://translation.googleapis.com/language/translate/v2

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/language/translate/v2 " | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "data": {
    "translations": [
      {
        "translatedText": "Hallo Welt",
        "detectedSourceLanguage": "en"
      },
      {
        "translatedText": "Mein Name ist Jeff",
        "detectedSourceLanguage": "en"
      }
    ]
  }
}

El arreglo translations contiene dos campos translatedText con traducciones proporcionadas en el idioma target solicitado (de: alemán). Las traducciones se indican en el mismo orden que el arreglo fuente correspondiente en la solicitud.

C#

Antes de probar esta muestra, sigue las instrucciones de configuración para C# que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de C# de Translation.


using Google.Cloud.Translation.V2;
using System;

public partial class TranslateSample
{
    public string TranslateText()
    {
        TranslationClient client = TranslationClient.Create();
        var response = client.TranslateText(
            text: "Hello World.",
            targetLanguage: "ru",  // Russian
            sourceLanguage: "en");  // English
        Console.WriteLine(response.TranslatedText);
        return response.TranslatedText;
    }
}

Go

Antes de probar esta muestra, sigue las instrucciones de configuración para Go que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la Documentación de referencia de la API de Go de Translation.


func translateText(targetLanguage, text string) (string, error) {
	ctx := context.Background()

	lang, err := language.Parse(targetLanguage)
	if err != nil {
		return "", err
	}

	client, err := translate.NewClient(ctx)
	if err != nil {
		return "", err
	}
	defer client.Close()

	resp, err := client.Translate(ctx, []string{text}, lang, nil)
	if err != nil {
		return "", err
	}
	return resp[0].Text, nil
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración para Java que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Java de Translation.

// TODO(developer): Uncomment these lines.
// import com.google.cloud.translate.*;
// Translate translate = TranslateOptions.getDefaultInstance().getService();

Translation translation = translate.translate("¡Hola Mundo!");
System.out.printf("Translated Text:\n\t%s\n", translation.getTranslatedText());

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración para Node.js que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Node.js de Translation.

// Imports the Google Cloud client library
const {Translate} = require('@google-cloud/translate');

// Creates a client
const translate = new Translate();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const text = 'The text to translate, e.g. Hello, world!';
// const target = 'The target language, e.g. ru';

// Translates the text into the target language. "text" can be a string for
// translating a single piece of text, or an array of strings for translating
// multiple texts.
let [translations] = await translate.translate(text, target);
translations = Array.isArray(translations) ? translations : [translations];
console.log('Translations:');
translations.forEach((translation, i) => {
  console.log(`${text[i]} => (${target}) ${translation}`);
});

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración para PHP que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de Translation.

use Google\Cloud\Translate\TranslateClient;

/** Uncomment and populate these variables in your code */
// $text = 'The text to translate."
// $targetLanguage = 'ja';  // Language to translate to

$translate = new TranslateClient();
$result = $translate->translate($text, [
    'target' => $targetLanguage,
]);
print("Source language: $result[source]\n");
print("Translation: $result[text]\n");

Python

Antes de probar esta muestra, sigue las instrucciones de configuración para Python que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la Documentación de referencia de la API de Python de Translation.

"""Translates text into the target language.

Target must be an ISO 639-1 language code.
See https://g.co/cloud/translate/v2/translate-reference#supported_languages
"""
translate_client = translate.Client()

if isinstance(text, six.binary_type):
    text = text.decode('utf-8')

# Text can also be a sequence of strings, in which case this method
# will return a sequence of results for each text.
result = translate_client.translate(
    text, target_language=target)

print(u'Text: {}'.format(result['input']))
print(u'Translation: {}'.format(result['translatedText']))
print(u'Detected source language: {}'.format(
    result['detectedSourceLanguage']))

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración para Ruby que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Ruby de Translation.

# project_id    = "Your Google Cloud project ID"
# text          = "The text you would like to translate"
# language_code = "The ISO 639-1 code of language to translate to, eg. 'en'"

require "google/cloud/translate"

translate   = Google::Cloud::Translate.new project: project_id
translation = translate.translate text, to: language_code

puts "Translated '#{text}' to '#{translation.text.inspect}'"
puts "Original language: #{translation.from} translated to: #{translation.to}"

Especificar un modelo

Según la configuración predeterminada, cuando realizas una solicitud de traducción a la API de Cloud Translation, tu texto se traduce con el modelo de traducción automática neuronal (NMT). Si el modelo de NMT no es compatible con el par de traducción de idioma solicitado, se usa el modelo de traducción automática basada en frases (PBMT).

Comparar modelos

El modelo NMT puede proporcionar una traducción mejorada para contenidos más largos y complejos. Por ejemplo, considera la siguiente solicitud:

{
  "q": "So let us begin anew--remembering on both sides that civility is not a
  sign of weakness, and sincerity is always subject to proof. Let us never
  negotiate out of fear. But let us never fear to negotiate.",
  "target": "de"
}

Debido a que no se especifica ningún model en la solicitud, y el par de idiomas de traducción de inglés a alemán es compatible con el modelo de NMT, la solicitud se traduce con el uso del modelo nmt. Se muestra lo siguiente en el campo translations de la respuesta:

"translatedText": "Fangen wir also von neuem an - auf beiden Seiten erinnern wir
                   uns, daß die Höflichkeit kein Zeichen der Schwäche ist und
                   die Aufrichtigkeit immer unter Beweis gestellt wird. Lasst
                   uns nie aus Furcht verhandeln. Aber lassen Sie uns niemals
                   Angst haben, zu verhandeln.",
"detectedSourceLanguage": "en",
"model": "nmt"

Como alternativa, puedes solicitar específicamente que el texto se traduzca con el modelo base (PBMT).

{
  "q": "So let us begin anew--remembering on both sides that civility is not a
        sign of weakness, and sincerity is always subject to proof. Let us never
        negotiate out of fear. But let us never fear to negotiate.",
  "target": "de",
  "model": "base",
}

El uso del modelo base muestra el siguiente resultado en el campo translations de la respuesta, que difiere de la traducción con el modelo nmt.

"translatedText": "Lassen Sie uns also neu beginnen - auf beiden Seiten nicht
                   vergessen, dass Zivilität ist kein Zeichen von Schwäche, und
                   Aufrichtigkeit ist immer unter Beweis. Lassen Sie uns nie aus
                   Angst verhandeln. Aber lassen Sie uns nie zu verhandeln
                   fürchten.",
"detectedSourceLanguage": "en",
"model": "base"

Usar el parámetro del modelo

Puedes especificar qué modelo utilizar para la traducción con el parámetro de consulta model. Especifica base para usar el modelo de PBMT y nmt para usar el modelo de NMT. Si especificas el modelo de NMT en tu solicitud y el par de traducción de idioma solicitado no es compatible con el modelo de NMT, entonces se usa el modelo de PBMT.

La muestra a continuación indica cómo usar el parámetro model en una solicitud de traducción.

LÍNEA DE REST Y CMD

Para traducir texto mediante el uso del modelo de nmt, incluye el parámetro model en tu solicitud POST.

Método HTTP y URL:

POST https://translation.googleapis.com/language/translate/v2

Cuerpo JSON de la solicitud:

{
   "q":"So let us begin anew--remembering on both sides that civility is not a sign of weakness, and sincerity is always subject to proof. Let us never negotiate out of fear. But let us never fear to negotiate.",
   "target":"de",
   "model": "base"
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://translation.googleapis.com/language/translate/v2

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/language/translate/v2 " | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "data": {
    "translations": [
      {
        "translatedText": "Fangen wir also von vorne an - denken wir auf beiden Seiten daran, dass Höflichkeit kein Zeichen von Schwäche ist und dass Aufrichtigkeit immer ein Beweis ist. Lasst uns niemals aus Angst verhandeln. Aber fürchten wir uns niemals vor Verhandlungen.",
        "detectedSourceLanguage": "en"
      }
    ]
  }
}

C#

Antes de probar esta muestra, sigue las instrucciones de configuración para C# que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de C# de Translation.


using Google.Cloud.Translation.V2;
using System;

public partial class TranslateSample
{
    public TranslationResult TranslateTextWithModel()
    {
        TranslationClient client = TranslationClient.Create();
        TranslationResult result = client.TranslateText(
            text: "Hello World.",
            targetLanguage: "ja",  // Japanese
            sourceLanguage: "en",  // English
            model: TranslationModel.NeuralMachineTranslation);
        Console.WriteLine($"Model: {result.Model}");
        Console.WriteLine(result.TranslatedText);
        return result;
    }
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración para Java que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Java de Translation.

Translation translation =
    translate.translate(
        "Hola Mundo!",
        Translate.TranslateOption.sourceLanguage("es"),
        Translate.TranslateOption.targetLanguage("de"),
        // Use "base" for standard edition, "nmt" for the premium model.
        Translate.TranslateOption.model("nmt"));

System.out.printf("TranslatedText:\nText: %s\n", translation.getTranslatedText());

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración para Node.js que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Node.js de Translation.

// Imports the Google Cloud client library
const {Translate} = require('@google-cloud/translate');

// Creates a client
const translate = new Translate();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const text = 'The text to translate, e.g. Hello, world!';
// const target = 'The target language, e.g. ru';
// const model = 'The model to use, e.g. nmt';

const options = {
  // The target language, e.g. "ru"
  to: target,
  // Make sure your project is whitelisted.
  // Possible values are "base" and "nmt"
  model: model,
};

// Translates the text into the target language. "text" can be a string for
// translating a single piece of text, or an array of strings for translating
// multiple texts.
let [translations] = await translate.translate(text, options);
translations = Array.isArray(translations) ? translations : [translations];
console.log('Translations:');
translations.forEach((translation, i) => {
  console.log(`${text[i]} => (${target}) ${translation}`);
});

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración para PHP que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de Translation.

use Google\Cloud\Translate\TranslateClient;

/** Uncomment and populate these variables in your code */
// $text = 'The text to translate."
// $targetLanguage = 'ja';  // Language to translate to

$model = 'nmt';  // "base" for standard edition, "nmt" for premium
$translate = new TranslateClient();
$result = $translate->translate($text, [
    'target' => $targetLanguage,
    'model'  => $model,
]);
print("Source language: $result[source]\n");
print("Translation: $result[text]\n");
print("Model: $result[model]\n");

Python

Antes de probar esta muestra, sigue las instrucciones de configuración para Python que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la Documentación de referencia de la API de Python de Translation.

"""Translates text into the target language.

Make sure your project is whitelisted.

Target must be an ISO 639-1 language code.
See https://g.co/cloud/translate/v2/translate-reference#supported_languages
"""
translate_client = translate.Client()

if isinstance(text, six.binary_type):
    text = text.decode('utf-8')

# Text can also be a sequence of strings, in which case this method
# will return a sequence of results for each text.
result = translate_client.translate(
    text, target_language=target, model=model)

print(u'Text: {}'.format(result['input']))
print(u'Translation: {}'.format(result['translatedText']))
print(u'Detected source language: {}'.format(
    result['detectedSourceLanguage']))

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración para Ruby que encontrarás en la Guía de inicio rápido de Translation Cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Ruby de Translation.

# project_id    = "Your Google Cloud project ID"
# text          = "The text you would like to translate"
# language_code = "The ISO 639-1 code of language to translate to, eg. 'en'"

require "google/cloud/translate"

translate   = Google::Cloud::Translate.new project: project_id
translation = translate.translate text, to: language_code, model: "nmt"

puts "Translated '#{text}' to '#{translation.text.inspect}'"
puts "Original language: #{translation.from} translated to: #{translation.to}"