使用 Cloud Translation 连接器运行批量翻译


本教程介绍了如何创建使用 Cloud Translation API 连接器 以异步批处理模式将文件翻译成其他语言。这样,系统便会在处理输入时提供实时输出。

目标

在此教程中,您将学习以下操作:

  1. 创建输入 Cloud Storage 存储桶。
  2. 使用英语创建两个文件,并将它们上传到输入存储桶。
  3. 创建一个工作流,该工作流使用 Cloud Translation API 连接器将两个文件翻译为法语和西班牙语,并将结果保存在输出存储桶中。
  4. 部署并执行工作流以编排整个过程。

费用

在本文档中,您将使用 Google Cloud 的以下收费组件:

您可使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

准备工作

您的组织定义的安全限制条件可能会导致您无法完成以下步骤。如需了解相关问题排查信息,请参阅在受限的 Google Cloud 环境中开发应用

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. 确保您的 Google Cloud 项目已启用结算功能

  6. Enable the Cloud Storage, Translation, and Workflows APIs:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. 确保您的 Google Cloud 项目已启用结算功能

  11. Enable the Cloud Storage, Translation, and Workflows APIs:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  12. 更新 gcloud 组件:
    gcloud components update
  13. 使用您的账号登录:
    gcloud auth login
  14. 设置本教程中使用的默认位置:
    gcloud config set workflows/location us-central1

    由于本教程使用位于 us-central1 中的默认 AutoML Translation 模型,因此您必须将位置设置为 us-central1

    如果使用的是默认 AutoML 翻译模型或术语表以外的模型或术语表,请确保其位于与连接器调用相同的位置;否则,系统会返回 INVALID_ARGUMENT (400) 错误。如需了解详情,请参阅 batchTranslateText 方法

创建输入 Cloud Storage 存储桶和文件

您可以使用 Cloud Storage 存储对象。对象是由任意格式的文件组成的不可变的数据段,并存储在称为存储桶的容器中。

  1. 创建 Cloud Storage 存储桶以保存要翻译的文件:

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gcloud storage buckets create gs://${BUCKET_INPUT}
  2. 使用英语创建两个文件,并将它们上传到输入存储桶:

    echo "Hello World!" > file1.txt
    gcloud storage cp file1.txt gs://${BUCKET_INPUT}
    echo "Workflows connectors simplify calling services." > file2.txt
    gcloud storage cp file2.txt gs://${BUCKET_INPUT}

部署和执行工作流

工作流由一系列使用 Workflows 语法描述的步骤组成,该语法可以采用 YAML 或 JSON 格式编写。这是工作流的定义。创建工作流后,可以进行部署,使其可以执行。

  1. 创建一个文件名为 workflow.yaml 且包含以下内容的文本文件:

    main:
      steps:
      - init:
          assign:
          - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
          - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
          - inputBucketName: ${projectId + "-input-files"}
          - outputBucketName: ${projectId + "-output-files-" + string(int(sys.now()))}
      - createOutputBucket:
            call: googleapis.storage.v1.buckets.insert
            args:
              project: ${projectId}
              body:
                name: ${outputBucketName}
      - batchTranslateText:
          call: googleapis.translate.v3beta1.projects.locations.batchTranslateText
          args:
              parent: ${"projects/" + projectId + "/locations/" + location}
              body:
                  inputConfigs:
                    gcsSource:
                      inputUri: ${"gs://" + inputBucketName + "/*"}
                  outputConfig:
                      gcsDestination:
                        outputUriPrefix: ${"gs://" + outputBucketName + "/"}
                  sourceLanguageCode: "en"
                  targetLanguageCodes: ["es", "fr"]
          result: batchTranslateTextResult

    工作流会分配变量、创建输出存储桶并启动文件翻译,并将结果保存到输出存储桶。

  2. 创建工作流后,请对其进行部署:

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. 执行工作流:

    gcloud workflows execute batch-translation
  4. 如需查看工作流状态,您可以运行返回的命令。例如:

    gcloud workflows executions describe eb4a6239-cffa-4672-81d8-d4caef7d8424 /
      --workflow batch-translation /
      --location us-central1

    工作流应为 ACTIVE。几分钟后,系统会将翻译后的文件(法语和西班牙语)上传到输出存储桶。

列出输出存储桶中的对象

通过列出输出存储桶中的对象,您可以确认工作流是否按预期工作。

  1. 检索输出存储桶名称:

    gcloud storage ls

    输出类似于以下内容:

    gs://PROJECT_ID-input-files/
    gs://PROJECT_ID-output-files-TIMESTAMP/

  2. 列出输出存储桶中的对象:

    gcloud storage ls gs://PROJECT_ID-output-files-TIMESTAMP/** --recursive

    几分钟后,系统会列出经过翻译的文件,其中法语文件和西班牙语文件各有两个。

清理

如果您为本教程创建了一个新项目,请删除项目。 如果您使用的是现有项目,希望保留此项目且不保留本教程中添加的任何更改,请删除为教程创建的资源

删除项目

为了避免产生费用,最简单的方法是删除您为本教程创建的项目。

要删除项目,请执行以下操作:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

删除教程资源

  1. 移除您在教程设置过程中添加的 gcloud 默认配置:

    gcloud config unset workflows/location
  2. 删除在本教程中创建的工作流:

    gcloud workflows delete WORKFLOW_NAME
  3. 删除在本教程中创建的存储桶:

    gcloud storage rm gs://BUCKET_NAME --recursive

    其中 BUCKET_NAME 是要删除的存储分区的名称,例如 my-bucket

    响应类似于以下示例:

    Removing gs://my-bucket/...

后续步骤