Batchanfragen (v3beta1)

Mit einer Batchübersetzung können Sie große Mengen Text (mit einem Limit von 1.000 Dateien in einem Batch) in bis zu zehn verschiedene Zielsprachen in einem Befehl offline übersetzen. Der gesamte Inhalt darf 100 Millionen Unicode-Codepunkte nicht überschreiten und muss die UTF-8-Codierung verwenden.

Eingabedatei

Es werden nur zwei MIME-Typen unterstützt: text/html (HTML) und text/plain (TSV und TXT).

TSV-Dateien

Wenn die Dateiendung .TSV ist, können eine oder zwei Spalten enthalten sein. Die erste Spalte (optional) enthält die ID der Textanfrage. Wenn diese fehlt, verwendet Google die Zeilennummer (0-basiert) aus der Eingabedatei als ID in der Ausgabedatei. Die zweite Spalte enthält den Text, der übersetzt werden soll. Wir empfehlen eine Zeilengröße von maximal 10.000 Unicode-Codepunkten. Bei mehr Codepunkten wird unter Umständen ein Fehler zurückgegeben.

TXT- und HTML-Dateien

Außerdem werden die Dateiendungen .TXT und .HTML unterstützt. Die entsprechende Datei wird als ein einzelner großer Textblock behandelt.

Batchanfrage

Geben Sie bei einer Batchübersetzungsanfrage den Pfad zu einer Eingabekonfigurationsdatei (InputConfig) an, die den zu übersetzenden Inhalt enthält, und einen Ausgabepfad (OutputConfig) für die endgültige Übersetzung. Sie benötigen mindestens zwei verschiedene Google Cloud Storage-Buckets. Der Quell-Bucket enthält zu übersetzenden Inhalt und im Ziel-Bucket werden die resultierenden übersetzten Dateien gespeichert. Der Ziel-Bucket muss leer sein, bevor der Übersetzungsprozess beginnt.

Bei der Verarbeitung der Anfrage werden die Ergebnisse in Echtzeit an den Ausgabestandort geschrieben. Auch wenn Sie die Anfrage vorzeitig abbrechen, wird trotzdem die Teilausgabe für eingegebene Dateien am Speicherort der Ausgabe in Google Cloud Storage erstellt. Die übersetzte Anzahl von Zeichen wird berechnet.

REST und Befehlszeile

In diesem Beispiel werden zwei Eingabedateien zur Übersetzung gesendet.

Bevor Sie die unten aufgeführten Daten für eine Anfrage verwenden, nehmen Sie folgende Ersetzungen vor:

  • project-id: ID Ihres GCP-Projekts

HTTP-Methode und URL:

POST https://translation.googleapis.com/v3beta1/projects/project-id/locations/us-central1:batchTranslateText

JSON-Text der Anfrage:

{
  "sourceLanguageCode": "en",
  "targetLanguageCodes": ["es", "fr"],
  "inputConfigs": {
   {
      "gcsSource": {
        "inputUri": "gs://bucket-name-source/input-file-name"
      }
    },
    {
      "gcsSource": {
        "inputUri": "gs://bucket-name-source/input-file-name2"
      }
    }
  }
  "outputConfig": {
      "gcsDestination": {
        "outputUriPrefix": "gs://bucket-name-destination/"
      }
   }
}

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Speichern Sie den Anfragetext in einer Datei namens request.json und führen Sie den folgenden Befehl aus:

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/v3beta1/projects/project-id/locations/us-central1:batchTranslateText

PowerShell

Speichern Sie den Anfragetext in einer Datei namens request.json und führen Sie den folgenden Befehl aus:

$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/v3beta1/projects/project-id/locations/us-central1:batchTranslateText " | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/your-project-id/locations/us-central1/operations/20190725-08251564068323-5d3895ce-0000-2067-864c-001a1136fb06",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.translation.v3beta1.BatchTranslateMetadata",
    "state": "RUNNING"
  }
}
Die Antwort enthält die ID für einen Vorgang mit langer Laufzeit.

Java

Folgen Sie der Anleitung zum Einrichten von Java unter Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen dazu finden Sie in der Referenzdokumentation zur Translation API für Java.

static BatchTranslateResponse batchTranslateText(
    String projectId, String location, String sourceUri, String destinationUri) {
  try (TranslationServiceClient translationServiceClient = TranslationServiceClient.create()) {

    LocationName locationName =
        LocationName.newBuilder().setProject(projectId).setLocation(location).build();
    GcsSource gcsSource = GcsSource.newBuilder().setInputUri(sourceUri).build();
    InputConfig inputConfig =
        InputConfig.newBuilder().setGcsSource(gcsSource).setMimeType("text/plain").build();
    GcsDestination gcsDestination =
        GcsDestination.newBuilder().setOutputUriPrefix(destinationUri).build();
    OutputConfig outputConfig =
        OutputConfig.newBuilder().setGcsDestination(gcsDestination).build();
    BatchTranslateTextRequest batchTranslateTextRequest =
        BatchTranslateTextRequest.newBuilder()
            .setParent(locationName.toString())
            .setSourceLanguageCode("en")
            .addTargetLanguageCodes("sr")
            .addInputConfigs(inputConfig)
            .setOutputConfig(outputConfig)
            .build();

    // Call the API
    BatchTranslateResponse response =
        translationServiceClient
            .batchTranslateTextAsync(batchTranslateTextRequest)
            .get(300, TimeUnit.SECONDS);

    System.out.printf("Total Characters: %d\n", response.getTotalCharacters());
    System.out.printf("Translated Characters: %d\n", response.getTranslatedCharacters());
    return response;

  } catch (Exception e) {
    throw new RuntimeException("Couldn't create client.", e);
  }
}

Node.js

Folgen Sie der Anleitung zum Einrichten von Node.js unter Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen dazu finden Sie in der Referenzdokumentation zur Translation API für Node.js.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'global';
// const text = 'text to translate';

// Imports the Google Cloud Translation library
const {TranslationServiceClient} = require('@google-cloud/translate').v3beta1;

// Instantiates a client
const translationClient = new TranslationServiceClient();
async function batchTranslateText() {
  // Construct request
  const request = {
    parent: translationClient.locationPath(projectId, location),
    sourceLanguageCode: 'en-US',
    targetLanguageCodes: ['sr-Latn'],
    inputConfigs: [
      {
        mimeType: 'text/plain', // mime types: text/plain, text/html
        gcsSource: {
          inputUri: inputUri,
        },
      },
    ],
    outputConfig: {
      gcsDestination: {
        outputUriPrefix: outputUri,
      },
    },
  };

  // Batch translate text using a long-running operation.
  // You can wait for now, or get results later.
  const [operation] = await translationClient.batchTranslateText(request);

  // Wait for operation to complete.
  const [response] = await operation.promise();

  console.log(`Total Characters: ${response.totalCharacters}`);
  console.log(`Translated Characters: ${response.translatedCharacters}`);
}

batchTranslateText();

Python

Folgen Sie der Anleitung zum Einrichten von Python unter Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen dazu finden Sie in der Referenzdokumentation zur Translation API für Python.

from google.cloud import translate_v3beta1 as translate
client = translate.TranslationServiceClient()

# project_id = YOUR_PROJECT_ID
# input_uri = 'gs://cloud-samples-data/translation/text.txt'
# output_uri = 'gs://YOUR_BUCKET_ID/path_to_store_results/'
location = 'us-central1'

parent = client.location_path(project_id, location)

gcs_source = translate.types.GcsSource(input_uri=input_uri)

input_config = translate.types.InputConfig(
    mime_type='text/plain',  # mime types: text/plain, text/html
    gcs_source=gcs_source)

gcs_destination = translate.types.GcsDestination(
    output_uri_prefix=output_uri)

output_config = translate.types.OutputConfig(
    gcs_destination=gcs_destination)

operation = client.batch_translate_text(
    parent=parent,
    source_language_code='en-US',
    target_language_codes=['sr-Latn'],
    input_configs=[input_config],
    output_config=output_config)

result = operation.result(90)

print('Total Characters: {}'.format(result.total_characters))
print('Translated Characters: {}'.format(result.translated_characters))

Vorgangsstatus

Die Ausführung einer Batchanfrage kann sehr lange dauern. Sie können den Status dieses Vorgangs abrufen, um festzustellen, ob er abgeschlossen wurde. Sie können den Vorgang auch abbrechen.

Weitere Informationen finden Sie unter Vorgänge mit langer Laufzeit.