一括リクエスト(v3beta1)

一括翻訳を使用すると、大量のテキスト(一括で最大 1,000 ファイル)を翻訳できます。また、コマンドをオフラインで使用して、最大 10 種類のターゲット言語に翻訳することもできます。コンテンツの合計サイズは、Unicode コードポイントで 1 億以下でなければならず、UTF-8 エンコーディングを使用する必要があります。

入力ファイル

サポートされている MIME タイプは、text/html(HTML)と text/plain(.tsv または .txt)の 2 つのみです。

.tsv

ファイルの拡張子が .tsv の場合は、列を 1 つまたは 2 つにすることができます。最初の列(オプション)はテキスト リクエストの ID です。最初の列がない場合、Google は入力ファイルの行番号(0 から始まる)を出力ファイルの ID として使用します。2 列目は実際に翻訳されるテキストです。各行は Unicode コードポイントで 1 万以下にすることをおすすめします。そうしない場合、エラーが返されることがあります。

.txt / .html

他のサポート対象の拡張子には .txt や .html があり、これらは 1 つの大きなテキストのまとまりとして扱われます。

バッチ リクエスト

一括翻訳リクエストでは、翻訳対象コンテンツを含む入力構成ファイル(InputConfig)と最終的な翻訳結果の出力場所(OutputConfig)へのパスを指定します。少なくとも 2 つの異なる Google Cloud Storage バケットが必要です。ソースバケットには翻訳対象のコンテンツが保存され、宛先バケットには翻訳済みのファイルが保存されます。翻訳プロセスを開始する前に、宛先バケットを空にする必要があります。

リクエストの処理中には、結果がリアルタイムで出力場所に書き込まれます。途中でリクエストをキャンセルしても、入力ファイルレベルで出力の一部が出力 GCS の場所に生成されます。そのため、翻訳された文字数に応じて課金が発生します。

REST とコマンドライン

この例では、2 つの入力ファイルを翻訳に送信しています。

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • project-id: GCP プロジェクト ID

HTTP メソッドと URL:

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

JSON 本文をリクエストします。

{
  "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/"
      }
   }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

request.json ファイルにリクエスト本文を保存し、次のコマンドを実行します。

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

request.json ファイルにリクエスト本文を保存し、次のコマンドを実行します。

$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

次のような JSON レスポンスが返されます。

{
  "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"
  }
}
レスポンスには、長期実行オペレーションの ID が含まれます。

Java

このサンプルを試す前に、Translation クイックスタート: クライアント ライブラリの使用にある Java の設定手順を行ってください。詳細については、Translation Java API のリファレンス ドキュメントをご覧ください。

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

このサンプルを試す前に、Translation クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を行ってください。詳細については、Translation Node.js API のリファレンス ドキュメントをご覧ください。

/**
 * 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

このサンプルを試す前に、Translation クイックスタート: クライアント ライブラリの使用にある Python の設定手順を行ってください。詳細については、Translation Python API のリファレンス ドキュメントをご覧ください。

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))

オペレーションのステータス

一括リクエストは長時間実行されるオペレーションであるため、完了までにかなりの時間がかかることがあります。このオペレーションのステータスをポーリングして、オペレーションが完了しているかどうか確認できます。また、オペレーションをキャンセルすることもできます。

詳しくは、長時間実行オペレーションをご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。