批量请求(高级)

借助批量翻译,您可以通过离线命令将大量文本(一次最多可批量处理 100 个文件)翻译为多达 10 种不同的目标语言。总内容大小应小于等于 100M Unicode 代码点,并且必须使用 UTF-8 编码。

准备工作

在开始使用 Cloud Translation API 之前,您必须具有启用了 Cloud Translation API 的项目,并且必须具有适当的凭据。您还可以安装常用编程语言的客户端库,以便调用 API。如需了解详情,请参阅设置页面。

权限

对于批量翻译,除了 Cloud Translation 权限之外,您还必须具有 Cloud Storage 存储分区的访问权限。从 Cloud Storage 存储桶读取批量翻译输入文件,并将输出文件写入 Cloud Storage 存储桶。例如,要从存储分区读取输入文件,您必须至少拥有存储分区的读取对象权限(由角色 roles/storage.objectViewer 提供)。如需详细了解 Cloud Storage 角色,请参阅 Cloud Storage 文档

输入文件

仅支持两种 MIME 类型:text/html (HTML) 和 text/plain(.tsv 和 .txt)。

使用 TSV 文件

如果文件扩展名为 TSV,那么该文件可以包含一列或两列。第一列(可选)是文本请求的 ID。如果缺少第一列,Google 会将输入文件中的行号(从 0 开始)用作输出文件中的 ID。第二列是实际要翻译的文本。为了获得最佳结果,每行应小于或等于 10K Unicode 代码点,否则可能会返回错误。

使用文本或 HTML

其他受支持的文件扩展名为文本文件 (.txt) 或 HTML,此类文件会被视为单个大文本块。

批量请求

借助批量翻译请求,您可以提供包含要翻译内容的输入配置文件 (InputConfig) 的路径,以及最终译文所在输出位置 (OutputConfig) 的路径。您至少需要两个不同的 Cloud Storage 存储分区。源存储分区包含要翻译的内容,目标存储分区将包含生成的翻译文件。在翻译过程开始之前,目标文件夹必须是空的。

在处理请求时,我们会将结果实时写入输出位置。即使您中途取消请求,系统仍会在输出 Cloud Storage 位置生成输入文件级部分输出。因此,翻译的字符数仍会计费。

REST

以下示例展示了发送给系统进行翻译的两个输入文件。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID

HTTP 方法和网址:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/us-central1:batchTranslateText

请求 JSON 正文:

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

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

 {   "name": "projects/project-number/locations/us-central1/operations/20191107-08251564068323-5d3895ce-0000-2067-864c-001a1136fb06",   "metadata": {     "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateMetadata",     "state": "RUNNING"   } } 
响应包含长时间运行的操作的 ID。

Go

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Go 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Go API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

import ( 	"context" 	"fmt" 	"io"  	translate "cloud.google.com/go/translate/apiv3" 	"cloud.google.com/go/translate/apiv3/translatepb" )  // batchTranslateText translates a large volume of text in asynchronous batch mode. func batchTranslateText(w io.Writer, projectID string, location string, inputURI string, outputURI string, sourceLang string, targetLang string) error { 	// projectID := "my-project-id" 	// location := "us-central1" 	// inputURI := "gs://cloud-samples-data/text.txt" 	// outputURI := "gs://YOUR_BUCKET_ID/path_to_store_results/" 	// sourceLang := "en" 	// targetLang := "ja"  	ctx := context.Background() 	client, err := translate.NewTranslationClient(ctx) 	if err != nil { 		return fmt.Errorf("NewTranslationClient: %w", err) 	} 	defer client.Close()  	req := &translatepb.BatchTranslateTextRequest{ 		Parent:              fmt.Sprintf("projects/%s/locations/%s", projectID, location), 		SourceLanguageCode:  sourceLang, 		TargetLanguageCodes: []string{targetLang}, 		InputConfigs: []*translatepb.InputConfig{ 			{ 				Source: &translatepb.InputConfig_GcsSource{ 					GcsSource: &translatepb.GcsSource{InputUri: inputURI}, 				}, 				// Optional. Can be "text/plain" or "text/html". 				MimeType: "text/plain", 			}, 		}, 		OutputConfig: &translatepb.OutputConfig{ 			Destination: &translatepb.OutputConfig_GcsDestination{ 				GcsDestination: &translatepb.GcsDestination{ 					OutputUriPrefix: outputURI, 				}, 			}, 		}, 	}  	// The BatchTranslateText operation is async. 	op, err := client.BatchTranslateText(ctx, req) 	if err != nil { 		return fmt.Errorf("BatchTranslateText: %w", err) 	} 	fmt.Fprintf(w, "Processing operation name: %q\n", op.Name())  	resp, err := op.Wait(ctx) 	if err != nil { 		return fmt.Errorf("Wait: %w", err) 	}  	fmt.Fprintf(w, "Total characters: %v\n", resp.GetTotalCharacters()) 	fmt.Fprintf(w, "Translated characters: %v\n", resp.GetTranslatedCharacters())  	return nil } 

Java

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Java 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Java API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.translate.v3.BatchTranslateMetadata; import com.google.cloud.translate.v3.BatchTranslateResponse; import com.google.cloud.translate.v3.BatchTranslateTextRequest; import com.google.cloud.translate.v3.GcsDestination; import com.google.cloud.translate.v3.GcsSource; import com.google.cloud.translate.v3.InputConfig; import com.google.cloud.translate.v3.LocationName; import com.google.cloud.translate.v3.OutputConfig; import com.google.cloud.translate.v3.TranslationServiceClient; import java.io.IOException; import java.util.concurrent.ExecutionException; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException;  public class BatchTranslateText {    public static void batchTranslateText()       throws InterruptedException, ExecutionException, IOException, TimeoutException {     // TODO(developer): Replace these variables before running the sample.     String projectId = "YOUR-PROJECT-ID";     // Supported Languages: https://cloud.google.com/translate/docs/languages     String sourceLanguage = "your-source-language";     String targetLanguage = "your-target-language";     String inputUri = "gs://your-gcs-bucket/path/to/input/file.txt";     String outputUri = "gs://your-gcs-bucket/path/to/results/";     batchTranslateText(projectId, sourceLanguage, targetLanguage, inputUri, outputUri);   }    // Batch translate text   public static void batchTranslateText(       String projectId,       String sourceLanguage,       String targetLanguage,       String inputUri,       String outputUri)       throws IOException, ExecutionException, InterruptedException, TimeoutException {      // Initialize client that will be used to send requests. This client only needs to be created     // once, and can be reused for multiple requests. After completing all of your requests, call     // the "close" method on the client to safely clean up any remaining background resources.     try (TranslationServiceClient client = TranslationServiceClient.create()) {       // Supported Locations: `us-central1`       LocationName parent = LocationName.of(projectId, "us-central1");        GcsSource gcsSource = GcsSource.newBuilder().setInputUri(inputUri).build();       // Supported Mime Types: https://cloud.google.com/translate/docs/supported-formats       InputConfig inputConfig =           InputConfig.newBuilder().setGcsSource(gcsSource).setMimeType("text/plain").build();        GcsDestination gcsDestination =           GcsDestination.newBuilder().setOutputUriPrefix(outputUri).build();       OutputConfig outputConfig =           OutputConfig.newBuilder().setGcsDestination(gcsDestination).build();        BatchTranslateTextRequest request =           BatchTranslateTextRequest.newBuilder()               .setParent(parent.toString())               .setSourceLanguageCode(sourceLanguage)               .addTargetLanguageCodes(targetLanguage)               .addInputConfigs(inputConfig)               .setOutputConfig(outputConfig)               .build();        OperationFuture<BatchTranslateResponse, BatchTranslateMetadata> future =           client.batchTranslateTextAsync(request);        System.out.println("Waiting for operation to complete...");        // random number between 300 - 450 (maximum allowed seconds)       long randomNumber = ThreadLocalRandom.current().nextInt(450, 600);       BatchTranslateResponse response = future.get(randomNumber, TimeUnit.SECONDS);        System.out.printf("Total Characters: %s\n", response.getTotalCharacters());       System.out.printf("Translated Characters: %s\n", response.getTranslatedCharacters());     }   } }

Node.js

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Node.js API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

/**  * TODO(developer): Uncomment these variables before running the sample.  */ // const projectId = 'YOUR_PROJECT_ID'; // const location = 'us-central1'; // const inputUri = 'gs://cloud-samples-data/text.txt'; // const outputUri = 'gs://YOUR_BUCKET_ID/path_to_store_results/';  // Imports the Google Cloud Translation library const {TranslationServiceClient} = require('@google-cloud/translate');  // Instantiates a client const translationClient = new TranslationServiceClient(); async function batchTranslateText() {   // Construct request   const request = {     parent: `projects/${projectId}/locations/${location}`,     sourceLanguageCode: 'en',     targetLanguageCodes: ['ja'],     inputConfigs: [       {         mimeType: 'text/plain', // mime types: text/plain, text/html         gcsSource: {           inputUri: inputUri,         },       },     ],     outputConfig: {       gcsDestination: {         outputUriPrefix: outputUri,       },     },   };    // Setup timeout for long-running operation. Timeout specified in ms.   const options = {timeout: 240000};   // Batch translate text using a long-running operation with a timeout of 240000ms.   const [operation] = await translationClient.batchTranslateText(     request,     options   );    // Wait for operation to complete.   const [response] = await operation.promise();    console.log(`Total Characters: ${response.totalCharacters}`);   console.log(`Translated Characters: ${response.translatedCharacters}`); }  batchTranslateText();

Python

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Python API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

from google.cloud import translate   def batch_translate_text(     input_uri: str = "gs://YOUR_BUCKET_ID/path/to/your/file.txt",     output_uri: str = "gs://YOUR_BUCKET_ID/path/to/save/results/",     project_id: str = "YOUR_PROJECT_ID",     timeout: int = 180, ) -> translate.TranslateTextResponse:     """Translates a batch of texts on GCS and stores the result in a GCS location.      Args:         input_uri: The input URI of the texts to be translated.         output_uri: The output URI of the translated texts.         project_id: The ID of the project that owns the destination bucket.         timeout: The timeout for this batch translation operation.      Returns:         The translated texts.     """      client = translate.TranslationServiceClient()      location = "us-central1"     # Supported file types: https://cloud.google.com/translate/docs/supported-formats     gcs_source = {"input_uri": input_uri}      input_configs_element = {         "gcs_source": gcs_source,         "mime_type": "text/plain",  # Can be "text/plain" or "text/html".     }     gcs_destination = {"output_uri_prefix": output_uri}     output_config = {"gcs_destination": gcs_destination}     parent = f"projects/{project_id}/locations/{location}"      # Supported language codes: https://cloud.google.com/translate/docs/languages     operation = client.batch_translate_text(         request={             "parent": parent,             "source_language_code": "en",             "target_language_codes": ["ja"],  # Up to 10 language codes here.             "input_configs": [input_configs_element],             "output_config": output_config,         }     )      print("Waiting for operation to complete...")     response = operation.result(timeout)      print(f"Total Characters: {response.total_characters}")     print(f"Translated Characters: {response.translated_characters}")      return response  

其他语言

C#:请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 Cloud Translation 参考文档

PHP:请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 Cloud Translation 参考文档

Ruby:请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 Cloud Translation 参考文档

使用 AutoML 模型发出批量请求

您可以对批量请求使用自定义模型。在很多情况下,翻译会涉及多种目标语言。

为目标语言指定 AutoML 模型

REST

以下示例展示了如何为目标语言指定自定义模型。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID

HTTP 方法和网址:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/us-central1:batchTranslateText

请求 JSON 正文:

 {   "models":{"es":"projects/PROJECT_NUMBER_OR_ID/locations/us-central1/models/model-id"},   "sourceLanguageCode": "en",   "targetLanguageCodes": ["es"],   "inputConfigs": [    {       "gcsSource": {         "inputUri": "gs://bucket-name-source/input-file-name1"       }     },     {       "gcsSource": {         "inputUri": "gs://bucket-name-source/input-file-name2"       }     }   ],   "outputConfig": {       "gcsDestination": {         "outputUriPrefix": "gs://bucket-name-destination/"       }    } }  

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

 {   "name": "projects/project-number/locations/us-central1/operations/20190725-08251564068323-5d3895ce-0000-2067-864c-001a1136fb06",   "metadata": {     "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateMetadata",     "state": "RUNNING"   } } 
响应包含长时间运行的操作的 ID。

Go

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Go 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Go API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

import ( 	"context" 	"fmt" 	"io"  	translate "cloud.google.com/go/translate/apiv3" 	"cloud.google.com/go/translate/apiv3/translatepb" )  // batchTranslateTextWithModel translates a large volume of text in asynchronous batch mode. func batchTranslateTextWithModel(w io.Writer, projectID string, location string, inputURI string, outputURI string, sourceLang string, targetLang string, modelID string) error { 	// projectID := "my-project-id" 	// location := "us-central1" 	// inputURI := "gs://cloud-samples-data/text.txt" 	// outputURI := "gs://YOUR_BUCKET_ID/path_to_store_results/" 	// sourceLang := "en" 	// targetLang := "de" 	// modelID := "your-model-id"  	ctx := context.Background() 	client, err := translate.NewTranslationClient(ctx) 	if err != nil { 		return fmt.Errorf("NewTranslationClient: %w", err) 	} 	defer client.Close()  	req := &translatepb.BatchTranslateTextRequest{ 		Parent:              fmt.Sprintf("projects/%s/locations/%s", projectID, location), 		SourceLanguageCode:  sourceLang, 		TargetLanguageCodes: []string{targetLang}, 		InputConfigs: []*translatepb.InputConfig{ 			{ 				Source: &translatepb.InputConfig_GcsSource{ 					GcsSource: &translatepb.GcsSource{InputUri: inputURI}, 				}, 				// Optional. Can be "text/plain" or "text/html". 				MimeType: "text/plain", 			}, 		}, 		OutputConfig: &translatepb.OutputConfig{ 			Destination: &translatepb.OutputConfig_GcsDestination{ 				GcsDestination: &translatepb.GcsDestination{ 					OutputUriPrefix: outputURI, 				}, 			}, 		}, 		Models: map[string]string{ 			targetLang: fmt.Sprintf("projects/%s/locations/%s/models/%s", projectID, location, modelID), 		}, 	}  	// The BatchTranslateText operation is async. 	op, err := client.BatchTranslateText(ctx, req) 	if err != nil { 		return fmt.Errorf("BatchTranslateText: %w", err) 	} 	fmt.Fprintf(w, "Processing operation name: %q\n", op.Name())  	resp, err := op.Wait(ctx) 	if err != nil { 		return fmt.Errorf("Wait: %w", err) 	}  	fmt.Fprintf(w, "Total characters: %v\n", resp.GetTotalCharacters()) 	fmt.Fprintf(w, "Translated characters: %v\n", resp.GetTranslatedCharacters())  	return nil } 

Java

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Java 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Java API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.translate.v3.BatchTranslateMetadata; import com.google.cloud.translate.v3.BatchTranslateResponse; import com.google.cloud.translate.v3.BatchTranslateTextRequest; import com.google.cloud.translate.v3.GcsDestination; import com.google.cloud.translate.v3.GcsSource; import com.google.cloud.translate.v3.InputConfig; import com.google.cloud.translate.v3.LocationName; import com.google.cloud.translate.v3.OutputConfig; import com.google.cloud.translate.v3.TranslationServiceClient; import java.io.IOException; import java.util.concurrent.ExecutionException; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException;  public class BatchTranslateTextWithModel {    public static void batchTranslateTextWithModel()       throws InterruptedException, ExecutionException, IOException, TimeoutException {     // TODO(developer): Replace these variables before running the sample.     String projectId = "YOUR-PROJECT-ID";     // Supported Languages: https://cloud.google.com/translate/docs/languages     String sourceLanguage = "your-source-language";     String targetLanguage = "your-target-language";     String inputUri = "gs://your-gcs-bucket/path/to/input/file.txt";     String outputUri = "gs://your-gcs-bucket/path/to/results/";     String modelId = "YOUR-MODEL-ID";     batchTranslateTextWithModel(         projectId, sourceLanguage, targetLanguage, inputUri, outputUri, modelId);   }    // Batch translate text using AutoML Translation model   public static void batchTranslateTextWithModel(       String projectId,       String sourceLanguage,       String targetLanguage,       String inputUri,       String outputUri,       String modelId)       throws IOException, ExecutionException, InterruptedException, TimeoutException {      // Initialize client that will be used to send requests. This client only needs to be created     // once, and can be reused for multiple requests. After completing all of your requests, call     // the "close" method on the client to safely clean up any remaining background resources.     try (TranslationServiceClient client = TranslationServiceClient.create()) {       // Supported Locations: `global`, [glossary location], or [model location]       // Glossaries must be hosted in `us-central1`       // Custom Models must use the same location as your model. (us-central1)       String location = "us-central1";       LocationName parent = LocationName.of(projectId, location);        // Configure the source of the file from a GCS bucket       GcsSource gcsSource = GcsSource.newBuilder().setInputUri(inputUri).build();       // Supported Mime Types: https://cloud.google.com/translate/docs/supported-formats       InputConfig inputConfig =           InputConfig.newBuilder().setGcsSource(gcsSource).setMimeType("text/plain").build();        // Configure where to store the output in a GCS bucket       GcsDestination gcsDestination =           GcsDestination.newBuilder().setOutputUriPrefix(outputUri).build();       OutputConfig outputConfig =           OutputConfig.newBuilder().setGcsDestination(gcsDestination).build();        // Configure the model used in the request       String modelPath =           String.format("projects/%s/locations/%s/models/%s", projectId, location, modelId);        // Build the request that will be sent to the API       BatchTranslateTextRequest request =           BatchTranslateTextRequest.newBuilder()               .setParent(parent.toString())               .setSourceLanguageCode(sourceLanguage)               .addTargetLanguageCodes(targetLanguage)               .addInputConfigs(inputConfig)               .setOutputConfig(outputConfig)               .putModels(targetLanguage, modelPath)               .build();        // Start an asynchronous request       OperationFuture<BatchTranslateResponse, BatchTranslateMetadata> future =           client.batchTranslateTextAsync(request);        System.out.println("Waiting for operation to complete...");        // random number between 300 - 450 (maximum allowed seconds)       long randomNumber = ThreadLocalRandom.current().nextInt(450, 600);       BatchTranslateResponse response = future.get(randomNumber, TimeUnit.SECONDS);        // Display the translation for each input text provided       System.out.printf("Total Characters: %s\n", response.getTotalCharacters());       System.out.printf("Translated Characters: %s\n", response.getTranslatedCharacters());     }   } }

Node.js

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Node.js API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

/**  * TODO(developer): Uncomment these variables before running the sample.  */ // const projectId = 'YOUR_PROJECT_ID'; // const location = 'us-central1'; // const inputUri = 'gs://cloud-samples-data/text.txt'; // const outputUri = 'gs://YOUR_BUCKET_ID/path_to_store_results/'; // const modelId = 'YOUR_MODEL_ID';  // Imports the Google Cloud Translation library const {TranslationServiceClient} = require('@google-cloud/translate');  // Instantiates a client const client = new TranslationServiceClient(); async function batchTranslateTextWithModel() {   // Construct request   const request = {     parent: `projects/${projectId}/locations/${location}`,     sourceLanguageCode: 'en',     targetLanguageCodes: ['ja'],     inputConfigs: [       {         mimeType: 'text/plain', // mime types: text/plain, text/html         gcsSource: {           inputUri: inputUri,         },       },     ],     outputConfig: {       gcsDestination: {         outputUriPrefix: outputUri,       },     },     models: {       ja: `projects/${projectId}/locations/${location}/models/${modelId}`,     },   };    const options = {timeout: 240000};   // Create a job using a long-running operation   const [operation] = await client.batchTranslateText(request, options);    // Wait for the operation to complete   const [response] = await operation.promise();    // Display the translation for each input text provided   console.log(`Total Characters: ${response.totalCharacters}`);   console.log(`Translated Characters: ${response.translatedCharacters}`); }  batchTranslateTextWithModel();

Python

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Python API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

from google.cloud import translate   def batch_translate_text_with_model(     input_uri: str = "gs://YOUR_BUCKET_ID/path/to/your/file.txt",     output_uri: str = "gs://YOUR_BUCKET_ID/path/to/save/results/",     project_id: str = "YOUR_PROJECT_ID",     model_id: str = "YOUR_MODEL_ID", ) -> translate.TranslationServiceClient:     """Batch translate text using Translation model.     Model can be AutoML or General[built-in] model.      Args:         input_uri: The input file to translate.         output_uri: The output file to save the translation results.         project_id: The ID of the GCP project that owns the model.         model_id: The model ID.      Returns:         The response from the batch translation API.     """      client = translate.TranslationServiceClient()      # Supported file types: https://cloud.google.com/translate/docs/supported-formats     gcs_source = {"input_uri": input_uri}     location = "us-central1"      input_configs_element = {         "gcs_source": gcs_source,         "mime_type": "text/plain",  # Can be "text/plain" or "text/html".     }     gcs_destination = {"output_uri_prefix": output_uri}     output_config = {"gcs_destination": gcs_destination}     parent = f"projects/{project_id}/locations/{location}"      model_path = "projects/{}/locations/{}/models/{}".format(         project_id, location, model_id  # The location of AutoML model.     )      # Supported language codes: https://cloud.google.com/translate/docs/languages     models = {"ja": model_path}  # takes a target lang as key.      operation = client.batch_translate_text(         request={             "parent": parent,             "source_language_code": "en",             "target_language_codes": ["ja"],  # Up to 10 language codes here.             "input_configs": [input_configs_element],             "output_config": output_config,             "models": models,         }     )      print("Waiting for operation to complete...")     response = operation.result()      # Display the translation for each input text provided.     print(f"Total Characters: {response.total_characters}")     print(f"Translated Characters: {response.translated_characters}")      return response  

其他语言

C#:请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 Cloud Translation 参考文档

PHP:请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 Cloud Translation 参考文档

Ruby:请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 Cloud Translation 参考文档

为多种目标语言指定 AutoML 模型

REST

如果您有多种目标语言,则可以为每种目标语言指定自定义模型。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID

HTTP 方法和网址:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/us-central1:batchTranslateText

请求 JSON 正文:

 {   "models":{     "es":"projects/PROJECT_NUMBER_OR_ID/locations/us-central1/models/model-id1",     "fr":"projects/PROJECT_NUMBER_OR_ID/locations/us-central1/models/model-id2"},   "sourceLanguageCode": "en",   "targetLanguageCodes": ["es", "fr"],   "inputConfigs": [    {       "gcsSource": {         "inputUri": "gs://bucket-name-source/input-file-name1"       }     },     {       "gcsSource": {         "inputUri": "gs://bucket-name-source/input-file-name2"       }     }   ],   "outputConfig": {       "gcsDestination": {         "outputUriPrefix": "gs://bucket-name-destination/"       }    }  }  

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

 {   "name": "projects/project-number/locations/us-central1/operations/20191105-08251564068323-5d3895ce-0000-2067-864c-001a1136fb06",   "metadata": {     "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateMetadata",     "state": "RUNNING"   } } 
响应包含长时间运行的操作的 ID。

为某种目标语言指定 AutoML 模型,而不为其他目标语言指定 AutoML 模型

您可以为某种特定目标语言指定自定义模型,而不为其他目标语言指定模型。使用为多种目标语言指定自定义模型的代码,只需修改 models 字段以指定模型的目标语言(在以下示例中为 es),并且不指定 fr

  • "models": {'es':'projects/PROJECT_NUMBER_OR_ID/locations/us-central1/models/model-id'},

其中 PROJECT_NUMBER_OR_ID 是您的 Google Cloud 项目编号或 ID,model-id 是您为 AutoML 模型指定的名称。

使用术语库翻译文本

REST

以下示例展示了如何为目标语言指定术语库。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID
  • glossary-id:您的术语库 ID,例如“ my-en-to-es-glossary”

HTTP 方法和网址:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/us-central1:batchTranslateText

请求 JSON 正文:

 {   "sourceLanguageCode": "en",   "targetLanguageCodes": ["es"],   "glossaries": {     "es": {       "glossary": "projects/PROJECT_NUMBER_OR_ID/locations/us-central1/glossaries/glossary-id"     }   },   "inputConfigs": [{       "gcsSource": {         "inputUri": "gs://bucket-name-source/input-file-name1"       }     },     {       "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 print-access-token)" \
-H "x-goog-user-project: PROJECT_NUMBER_OR_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/us-central1:batchTranslateText"

PowerShell

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER_OR_ID" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/us-central1:batchTranslateText" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

 {   "name": "projects/project-number/locations/us-central1/operations/operation-id",   "metadata": {     "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateMetadata",     "state": "RUNNING"   } } 

Go

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Go 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Go API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

import ( 	"context" 	"fmt" 	"io"  	translate "cloud.google.com/go/translate/apiv3" 	"cloud.google.com/go/translate/apiv3/translatepb" )  // batchTranslateTextWithGlossary translates a large volume of text in asynchronous batch mode. func batchTranslateTextWithGlossary(w io.Writer, projectID string, location string, inputURI string, outputURI string, sourceLang string, targetLang string, glossaryID string) error { 	// projectID := "my-project-id" 	// location := "us-central1" 	// inputURI := "gs://cloud-samples-data/text.txt" 	// outputURI := "gs://YOUR_BUCKET_ID/path_to_store_results/" 	// sourceLang := "en" 	// targetLang := "ja" 	// glossaryID := "your-glossary-id"  	ctx := context.Background() 	client, err := translate.NewTranslationClient(ctx) 	if err != nil { 		return fmt.Errorf("NewTranslationClient: %w", err) 	} 	defer client.Close()  	req := &translatepb.BatchTranslateTextRequest{ 		Parent:              fmt.Sprintf("projects/%s/locations/%s", projectID, location), 		SourceLanguageCode:  sourceLang, 		TargetLanguageCodes: []string{targetLang}, 		InputConfigs: []*translatepb.InputConfig{ 			{ 				Source: &translatepb.InputConfig_GcsSource{ 					GcsSource: &translatepb.GcsSource{InputUri: inputURI}, 				}, 				// Optional. Can be "text/plain" or "text/html". 				MimeType: "text/plain", 			}, 		}, 		Glossaries: map[string]*translatepb.TranslateTextGlossaryConfig{ 			targetLang: { 				Glossary: fmt.Sprintf("projects/%s/locations/%s/glossaries/%s", projectID, location, glossaryID), 			}, 		}, 		OutputConfig: &translatepb.OutputConfig{ 			Destination: &translatepb.OutputConfig_GcsDestination{ 				GcsDestination: &translatepb.GcsDestination{ 					OutputUriPrefix: outputURI, 				}, 			}, 		}, 	}  	// The BatchTranslateText operation is async. 	op, err := client.BatchTranslateText(ctx, req) 	if err != nil { 		return fmt.Errorf("BatchTranslateText: %w", err) 	} 	fmt.Fprintf(w, "Processing operation name: %q\n", op.Name())  	resp, err := op.Wait(ctx) 	if err != nil { 		return fmt.Errorf("Wait: %w", err) 	}  	fmt.Fprintf(w, "Total characters: %v\n", resp.GetTotalCharacters()) 	fmt.Fprintf(w, "Translated characters: %v\n", resp.GetTranslatedCharacters())  	return nil } 

Java

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Java 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Java API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.translate.v3.BatchTranslateMetadata; import com.google.cloud.translate.v3.BatchTranslateResponse; import com.google.cloud.translate.v3.BatchTranslateTextRequest; import com.google.cloud.translate.v3.GcsDestination; import com.google.cloud.translate.v3.GcsSource; import com.google.cloud.translate.v3.GlossaryName; import com.google.cloud.translate.v3.InputConfig; import com.google.cloud.translate.v3.LocationName; import com.google.cloud.translate.v3.OutputConfig; import com.google.cloud.translate.v3.TranslateTextGlossaryConfig; import com.google.cloud.translate.v3.TranslationServiceClient; import java.io.IOException; import java.util.concurrent.ExecutionException; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException;  public class BatchTranslateTextWithGlossary {    public static void batchTranslateTextWithGlossary()       throws InterruptedException, ExecutionException, IOException, TimeoutException {     // TODO(developer): Replace these variables before running the sample.     String projectId = "YOUR-PROJECT-ID";     // Supported Languages: https://cloud.google.com/translate/docs/languages     String sourceLanguage = "your-source-language";     String targetLanguage = "your-target-language";     String inputUri = "gs://your-gcs-bucket/path/to/input/file.txt";     String outputUri = "gs://your-gcs-bucket/path/to/results/";     String glossaryId = "your-glossary-display-name";     batchTranslateTextWithGlossary(         projectId, sourceLanguage, targetLanguage, inputUri, outputUri, glossaryId);   }    // Batch Translate Text with a Glossary.   public static void batchTranslateTextWithGlossary(       String projectId,       String sourceLanguage,       String targetLanguage,       String inputUri,       String outputUri,       String glossaryId)       throws IOException, ExecutionException, InterruptedException, TimeoutException {      // Initialize client that will be used to send requests. This client only needs to be created     // once, and can be reused for multiple requests. After completing all of your requests, call     // the "close" method on the client to safely clean up any remaining background resources.     try (TranslationServiceClient client = TranslationServiceClient.create()) {       // Supported Locations: `global`, [glossary location], or [model location]       // Glossaries must be hosted in `us-central1`       // Custom Models must use the same location as your model. (us-central1)       String location = "us-central1";       LocationName parent = LocationName.of(projectId, location);        // Configure the source of the file from a GCS bucket       GcsSource gcsSource = GcsSource.newBuilder().setInputUri(inputUri).build();       // Supported Mime Types: https://cloud.google.com/translate/docs/supported-formats       InputConfig inputConfig =           InputConfig.newBuilder().setGcsSource(gcsSource).setMimeType("text/plain").build();        // Configure where to store the output in a GCS bucket       GcsDestination gcsDestination =           GcsDestination.newBuilder().setOutputUriPrefix(outputUri).build();       OutputConfig outputConfig =           OutputConfig.newBuilder().setGcsDestination(gcsDestination).build();        // Configure the glossary used in the request       GlossaryName glossaryName = GlossaryName.of(projectId, location, glossaryId);       TranslateTextGlossaryConfig glossaryConfig =           TranslateTextGlossaryConfig.newBuilder().setGlossary(glossaryName.toString()).build();        // Build the request that will be sent to the API       BatchTranslateTextRequest request =           BatchTranslateTextRequest.newBuilder()               .setParent(parent.toString())               .setSourceLanguageCode(sourceLanguage)               .addTargetLanguageCodes(targetLanguage)               .addInputConfigs(inputConfig)               .setOutputConfig(outputConfig)               .putGlossaries(targetLanguage, glossaryConfig)               .build();        // Start an asynchronous request       OperationFuture<BatchTranslateResponse, BatchTranslateMetadata> future =           client.batchTranslateTextAsync(request);        System.out.println("Waiting for operation to complete...");        // random number between 300 - 450 (maximum allowed seconds)       long randomNumber = ThreadLocalRandom.current().nextInt(450, 600);       BatchTranslateResponse response = future.get(randomNumber, TimeUnit.SECONDS);        // Display the translation for each input text provided       System.out.printf("Total Characters: %s\n", response.getTotalCharacters());       System.out.printf("Translated Characters: %s\n", response.getTranslatedCharacters());     }   } }

Node.js

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Node.js API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

/**  * TODO(developer): Uncomment these variables before running the sample.  */ // const projectId = 'YOUR_PROJECT_ID'; // const location = 'us-central1'; // const inputUri = 'gs://cloud-samples-data/text.txt'; // const outputUri = 'gs://YOUR_BUCKET_ID/path_to_store_results/'; // const glossaryId = 'YOUR_GLOSSARY_ID';  // Imports the Google Cloud Translation library const {TranslationServiceClient} = require('@google-cloud/translate');  // Instantiates a client const client = new TranslationServiceClient(); async function batchTranslateTextWithGlossary() {   // Construct request   const request = {     parent: `projects/${projectId}/locations/${location}`,     sourceLanguageCode: 'en',     targetLanguageCodes: ['es'],     inputConfigs: [       {         mimeType: 'text/plain', // mime types: text/plain, text/html         gcsSource: {           inputUri: inputUri,         },       },     ],     outputConfig: {       gcsDestination: {         outputUriPrefix: outputUri,       },     },     glossaries: {       es: {         glossary: `projects/${projectId}/locations/${location}/glossaries/${glossaryId}`,       },     },   };    const options = {timeout: 240000};   // Create a job using a long-running operation   const [operation] = await client.batchTranslateText(request, options);    // Wait for the operation to complete   const [response] = await operation.promise();    // Display the translation for each input text provided   console.log(`Total Characters: ${response.totalCharacters}`);   console.log(`Translated Characters: ${response.translatedCharacters}`); }  batchTranslateTextWithGlossary();

Python

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Python API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

from google.cloud import translate   def batch_translate_text_with_glossary(     input_uri: str = "gs://YOUR_BUCKET_ID/path/to/your/file.txt",     output_uri: str = "gs://YOUR_BUCKET_ID/path/to/save/results/",     project_id: str = "YOUR_PROJECT_ID",     glossary_id: str = "YOUR_GLOSSARY_ID",     timeout: int = 320, ) -> translate.TranslateTextResponse:     """Translates a batch of texts on GCS and stores the result in a GCS location.     Glossary is applied for translation.      Args:         input_uri (str): The input file to translate.         output_uri (str): The output file to save the translations to.         project_id (str): The ID of the GCP project that owns the location.         glossary_id (str): The ID of the glossary to use.         timeout (int): The amount of time, in seconds, to wait for the operation to complete.      Returns:         The response from the batch.     """      client = translate.TranslationServiceClient()      # Supported language codes: https://cloud.google.com/translate/docs/languages     location = "us-central1"      # Supported file types: https://cloud.google.com/translate/docs/supported-formats     gcs_source = {"input_uri": input_uri}      input_configs_element = {         "gcs_source": gcs_source,         "mime_type": "text/plain",  # Can be "text/plain" or "text/html".     }     gcs_destination = {"output_uri_prefix": output_uri}     output_config = {"gcs_destination": gcs_destination}      parent = f"projects/{project_id}/locations/{location}"      # glossary is a custom dictionary Translation API uses     # to translate the domain-specific terminology.     glossary_path = client.glossary_path(         project_id, "us-central1", glossary_id  # The location of the glossary     )      glossary_config = translate.TranslateTextGlossaryConfig(glossary=glossary_path)      glossaries = {"ja": glossary_config}  # target lang as key      operation = client.batch_translate_text(         request={             "parent": parent,             "source_language_code": "en",             "target_language_codes": ["ja"],  # Up to 10 language codes here.             "input_configs": [input_configs_element],             "glossaries": glossaries,             "output_config": output_config,         }     )      print("Waiting for operation to complete...")     response = operation.result(timeout)      print(f"Total Characters: {response.total_characters}")     print(f"Translated Characters: {response.translated_characters}")      return response  

其他语言

C#:请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 Cloud Translation 参考文档

PHP:请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 Cloud Translation 参考文档

Ruby:请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 Cloud Translation 参考文档

使用 AutoML Translation 自定义模型和术语库翻译文本

REST

以下示例展示了如何为目标语言指定自定义模型和术语库。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID

HTTP 方法和网址:

POST https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/us-central1:batchTranslateText

请求 JSON 正文:

 {   "models": {     "es": "projects/project_number_or_id/locations/us-central1/models/model-id"   },   "sourceLanguageCode": "en",   "targetLanguageCodes": ["es"],   "glossaries": {     "es": {       "glossary": "projects/project_number_or_id/locations/us-central1/glossaries/glossary-id"     }   },   "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 print-access-token)" \
-H "x-goog-user-project: PROJECT_NUMBER_OR_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/us-central1:batchTranslateText"

PowerShell

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER_OR_ID" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/v3/projects/PROJECT_NUMBER_OR_ID/locations/us-central1:batchTranslateText" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

 {   "name": "projects/project-number/locations/us-central1/operations/operation-id",   "metadata": {     "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateMetadata",     "state": "RUNNING"   } } 

Go

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Go 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Go API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

import ( 	"context" 	"fmt" 	"io"  	translate "cloud.google.com/go/translate/apiv3" 	"cloud.google.com/go/translate/apiv3/translatepb" )  // batchTranslateTextWithGlossaryAndModel translates a large volume of text in asynchronous batch mode. func batchTranslateTextWithGlossaryAndModel(w io.Writer, projectID string, location string, inputURI string, outputURI string, sourceLang string, targetLang string, glossaryID string, modelID string) error { 	// projectID := "my-project-id" 	// location := "us-central1" 	// inputURI := "gs://cloud-samples-data/text.txt" 	// outputURI := "gs://YOUR_BUCKET_ID/path_to_store_results/" 	// sourceLang := "en" 	// targetLang := "ja" 	// glossaryID := "your-glossary-id" 	// modelID := "your-model-id"  	ctx := context.Background() 	client, err := translate.NewTranslationClient(ctx) 	if err != nil { 		return fmt.Errorf("NewTranslationClient: %w", err) 	} 	defer client.Close()  	req := &translatepb.BatchTranslateTextRequest{ 		Parent:              fmt.Sprintf("projects/%s/locations/%s", projectID, location), 		SourceLanguageCode:  sourceLang, 		TargetLanguageCodes: []string{targetLang}, 		InputConfigs: []*translatepb.InputConfig{ 			{ 				Source: &translatepb.InputConfig_GcsSource{ 					GcsSource: &translatepb.GcsSource{InputUri: inputURI}, 				}, 				// Optional. Can be "text/plain" or "text/html". 				MimeType: "text/plain", 			}, 		}, 		Glossaries: map[string]*translatepb.TranslateTextGlossaryConfig{ 			targetLang: { 				Glossary: fmt.Sprintf("projects/%s/locations/%s/glossaries/%s", projectID, location, glossaryID), 			}, 		}, 		OutputConfig: &translatepb.OutputConfig{ 			Destination: &translatepb.OutputConfig_GcsDestination{ 				GcsDestination: &translatepb.GcsDestination{ 					OutputUriPrefix: outputURI, 				}, 			}, 		}, 		Models: map[string]string{ 			targetLang: fmt.Sprintf("projects/%s/locations/%s/models/%s", projectID, location, modelID), 		}, 	}  	// The BatchTranslateText operation is async. 	op, err := client.BatchTranslateText(ctx, req) 	if err != nil { 		return fmt.Errorf("BatchTranslateText: %w", err) 	} 	fmt.Fprintf(w, "Processing operation name: %q\n", op.Name())  	resp, err := op.Wait(ctx) 	if err != nil { 		return fmt.Errorf("Wait: %w", err) 	}  	fmt.Fprintf(w, "Total characters: %v\n", resp.GetTotalCharacters()) 	fmt.Fprintf(w, "Translated characters: %v\n", resp.GetTranslatedCharacters())  	return nil } 

Java

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Java 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Java API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

import com.google.api.gax.longrunning.OperationFuture; import com.google.cloud.translate.v3.BatchTranslateMetadata; import com.google.cloud.translate.v3.BatchTranslateResponse; import com.google.cloud.translate.v3.BatchTranslateTextRequest; import com.google.cloud.translate.v3.GcsDestination; import com.google.cloud.translate.v3.GcsSource; import com.google.cloud.translate.v3.GlossaryName; import com.google.cloud.translate.v3.InputConfig; import com.google.cloud.translate.v3.LocationName; import com.google.cloud.translate.v3.OutputConfig; import com.google.cloud.translate.v3.TranslateTextGlossaryConfig; import com.google.cloud.translate.v3.TranslationServiceClient; import java.io.IOException; import java.util.concurrent.ExecutionException; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException;  public class BatchTranslateTextWithGlossaryAndModel {    public static void batchTranslateTextWithGlossaryAndModel()       throws InterruptedException, ExecutionException, IOException, TimeoutException {     // TODO(developer): Replace these variables before running the sample.     String projectId = "YOUR-PROJECT-ID";     // Supported Languages: https://cloud.google.com/translate/docs/languages     String sourceLanguage = "your-source-language";     String targetLanguage = "your-target-language";     String inputUri = "gs://your-gcs-bucket/path/to/input/file.txt";     String outputUri = "gs://your-gcs-bucket/path/to/results/";     String glossaryId = "your-glossary-display-name";     String modelId = "YOUR-MODEL-ID";     batchTranslateTextWithGlossaryAndModel(         projectId, sourceLanguage, targetLanguage, inputUri, outputUri, glossaryId, modelId);   }    // Batch translate text with Model and Glossary   public static void batchTranslateTextWithGlossaryAndModel(       String projectId,       String sourceLanguage,       String targetLanguage,       String inputUri,       String outputUri,       String glossaryId,       String modelId)       throws IOException, ExecutionException, InterruptedException, TimeoutException {      // Initialize client that will be used to send requests. This client only needs to be created     // once, and can be reused for multiple requests. After completing all of your requests, call     // the "close" method on the client to safely clean up any remaining background resources.     try (TranslationServiceClient client = TranslationServiceClient.create()) {       // Supported Locations: `global`, [glossary location], or [model location]       // Glossaries must be hosted in `us-central1`       // Custom Models must use the same location as your model. (us-central1)       String location = "us-central1";       LocationName parent = LocationName.of(projectId, location);        // Configure the source of the file from a GCS bucket       GcsSource gcsSource = GcsSource.newBuilder().setInputUri(inputUri).build();       // Supported Mime Types: https://cloud.google.com/translate/docs/supported-formats       InputConfig inputConfig =           InputConfig.newBuilder().setGcsSource(gcsSource).setMimeType("text/plain").build();        // Configure where to store the output in a GCS bucket       GcsDestination gcsDestination =           GcsDestination.newBuilder().setOutputUriPrefix(outputUri).build();       OutputConfig outputConfig =           OutputConfig.newBuilder().setGcsDestination(gcsDestination).build();        // Configure the glossary used in the request       GlossaryName glossaryName = GlossaryName.of(projectId, location, glossaryId);       TranslateTextGlossaryConfig glossaryConfig =           TranslateTextGlossaryConfig.newBuilder().setGlossary(glossaryName.toString()).build();        // Configure the model used in the request       String modelPath =           String.format("projects/%s/locations/%s/models/%s", projectId, location, modelId);        // Build the request that will be sent to the API       BatchTranslateTextRequest request =           BatchTranslateTextRequest.newBuilder()               .setParent(parent.toString())               .setSourceLanguageCode(sourceLanguage)               .addTargetLanguageCodes(targetLanguage)               .addInputConfigs(inputConfig)               .setOutputConfig(outputConfig)               .putGlossaries(targetLanguage, glossaryConfig)               .putModels(targetLanguage, modelPath)               .build();        // Start an asynchronous request       OperationFuture<BatchTranslateResponse, BatchTranslateMetadata> future =           client.batchTranslateTextAsync(request);        System.out.println("Waiting for operation to complete...");        // random number between 300 - 450 (maximum allowed seconds)       long randomNumber = ThreadLocalRandom.current().nextInt(450, 600);       BatchTranslateResponse response = future.get(randomNumber, TimeUnit.SECONDS);        // Display the translation for each input text provided       System.out.printf("Total Characters: %s\n", response.getTotalCharacters());       System.out.printf("Translated Characters: %s\n", response.getTranslatedCharacters());     }   } }

Node.js

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Node.js API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

/**  * TODO(developer): Uncomment these variables before running the sample.  */ // const projectId = 'YOUR_PROJECT_ID'; // const location = 'us-central1'; // const inputUri = 'gs://cloud-samples-data/text.txt'; // const outputUri = 'gs://YOUR_BUCKET_ID/path_to_store_results/'; // const glossaryId = 'YOUR_GLOSSARY_ID'; // const modelId = 'YOUR_MODEL_ID';  // Imports the Google Cloud Translation library const {TranslationServiceClient} = require('@google-cloud/translate');  // Instantiates a client const client = new TranslationServiceClient(); async function batchTranslateTextWithGlossaryAndModel() {   // Construct request   const request = {     parent: `projects/${projectId}/locations/${location}`,     sourceLanguageCode: 'en',     targetLanguageCodes: ['ja'],     inputConfigs: [       {         mimeType: 'text/plain', // mime types: text/plain, text/html         gcsSource: {           inputUri: inputUri,         },       },     ],     outputConfig: {       gcsDestination: {         outputUriPrefix: outputUri,       },     },     glossaries: {       ja: {         glossary: `projects/${projectId}/locations/${location}/glossaries/${glossaryId}`,       },     },     models: {       ja: `projects/${projectId}/locations/${location}/models/${modelId}`,     },   };    const options = {timeout: 240000};   // Create a job using a long-running operation   const [operation] = await client.batchTranslateText(request, options);    // Wait for operation to complete   const [response] = await operation.promise();    // Display the translation for each input text provided   console.log(`Total Characters: ${response.totalCharacters}`);   console.log(`Translated Characters: ${response.translatedCharacters}`); }  batchTranslateTextWithGlossaryAndModel();

Python

试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 Cloud Translation Python API 参考文档

如需向 Cloud Translation 进行身份验证,请设置应用默认凭证。 如需了解详情,请参阅为本地开发环境设置身份验证

from google.cloud import translate   def batch_translate_text_with_glossary_and_model(     input_uri: str,     output_uri: str,     project_id: str,     model_id: str,     glossary_id: str, ) -> translate.TranslateTextResponse:     """Batch translate text with Glossary and Translation model.     Args:         input_uri: The input text to be translated.         output_uri: The output text to be translated.         project_id: The ID of the GCP project that owns the model.         model_id: The ID of the model         glossary_id: The ID of the glossary      Returns:         The translated text.     """      client = translate.TranslationServiceClient()      # Supported language codes: https://cloud.google.com/translate/docs/languages     location = "us-central1"      target_language_codes = ["ja"]     gcs_source = {"input_uri": input_uri}      # Optional. Can be "text/plain" or "text/html".     mime_type = "text/plain"     input_configs_element = {"gcs_source": gcs_source, "mime_type": mime_type}     input_configs = [input_configs_element]     gcs_destination = {"output_uri_prefix": output_uri}     output_config = {"gcs_destination": gcs_destination}     parent = f"projects/{project_id}/locations/{location}"     model_path = "projects/{}/locations/{}/models/{}".format(         project_id, "us-central1", model_id     )     models = {"ja": model_path}      glossary_path = client.glossary_path(         project_id, "us-central1", glossary_id  # The location of the glossary     )      glossary_config = translate.TranslateTextGlossaryConfig(glossary=glossary_path)     glossaries = {"ja": glossary_config}  # target lang as key      operation = client.batch_translate_text(         request={             "parent": parent,             "source_language_code": "en",             "target_language_codes": target_language_codes,             "input_configs": input_configs,             "output_config": output_config,             "models": models,             "glossaries": glossaries,         }     )      print("Waiting for operation to complete...")     response = operation.result()      # Display the translation for each input text provided     print(f"Total Characters: {response.total_characters}")     print(f"Translated Characters: {response.translated_characters}")      return response  

其他语言

C#:请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 Cloud Translation 参考文档

PHP:请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 Cloud Translation 参考文档

Ruby:请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 Cloud Translation 参考文档

操作状态

批量请求属于一项长时间运行的操作,可能需要大量时间才能完成。您可以轮询此操作的状态以查看它是否已完成,也可以取消此操作。

如需了解详情,请参阅长时间运行的操作

其他资源

  • 如需有关解决常见问题或错误的帮助,请参阅问题排查页面。